You guys asked for it, now I finally deliver – in this video I show you how to use Ansible to configure your laptops and desktops! This works for servers too. This is a long video, but should get you on your way. You’ll see a few working examples, and by the end of the video, you will have your very own Ansible desktop/laptop config!
Setting up the Repository
Create a Git repository
The method used in this video relies on a Git repository, so you will need to create a repository on your Git server to continue. In the video, Github is used as an example.
Create an OpenSSH key (used for cloning the Git Repo)
ssh-keygen -t ed25519 -C "yourname@yourdomain.net"
Install git on your local machine
sudo apt install git
Pull down the repository to work locally
git clone https://url/to/your/repository
Add a file to version control
git add <filename>
Create a git commit
git commit -m "message about the commit"
Push the changes up to Github
git push origin main
Code Examples
Example 1
---
- hosts: localhost
connection: local
become: true
tasks:
- name: install htop
package:
name: htop
Example 2
--- - hosts: localhost connection: local become: true tasks: - name: install packages package: name: - htop - tmux - vim-nox
Example 3
---
- hosts: localhost
connection: local
become: true
tasks:
- name: install packages
package:
name:
- htop
- tmux
- vim-nox
- name: copy wallpaper file
copy:
src: files/wallpaper.png
dest: /usr/share/backgrounds/ansible-wallpaper.png
owner: root
group: root
- name: set wallpaper
become_user: jay
dconf:
key: "/org/gnome/desktop/background/picture-uri"
value: "'file:///usr/share/backgrounds/ansible-wallpaper.png'"
- name: set wallpaper position
become_user: jay
dconf:
key: "/org/gnome/desktop/background/picture-options"
value: "'zoom'"
Example 4
---
- hosts: localhost
connection: local
become: true
tasks:
- name: install packages
package:
name:
- htop
- tmux
- vim-nox
- name: copy wallpaper file
copy:
src: files/wallpaper.png
dest: /usr/share/backgrounds/ansible-wallpaper.png
owner: root
group: root
- name: set wallpaper
become_user: jay
dconf:
key: "/org/gnome/desktop/background/picture-uri"
value: "'file:///usr/share/backgrounds/ansible-wallpaper.png'"
- name: set wallpaper position
become_user: jay
dconf:
key: "/org/gnome/desktop/background/picture-options"
value: "'zoom'"
- name: copy custom .bashrc file
copy:
src: files/bashrc
dest: /home/jay/.bashrc
owner: jay
group: jay
Example 5
---
- hosts: localhost
connection: local
become: true
tasks:
- name: install packages
package:
name:
- htop
- tmux
- vim-nox
- name: copy wallpaper file
copy:
src: files/wallpaper.png
dest: /usr/share/backgrounds/ansible-wallpaper.png
owner: root
group: root
- name: set wallpaper
become_user: jay
dconf:
key: "/org/gnome/desktop/background/picture-uri"
value: "'file:///usr/share/backgrounds/ansible-wallpaper.png'"
- name: set wallpaper position
become_user: jay
dconf:
key: "/org/gnome/desktop/background/picture-options"
value: "'zoom'"
- name: copy custom .bashrc file
copy:
src: files/bashrc
dest: /home/jay/.bashrc
owner: jay
group: jay
- name: add ansible user
user:
name: velociraptor
system: yes
- name: set up sudo for ansible user
copy:
src: files/sudoer_velociraptor
dest: /etc/sudoers.d/velociraptor
owner: root
group: root
mode: 0440
- name: add ansible-pull cron job
cron:
name: ansible auto-provision
user: velociraptor
minute: "*/10"
job: ansible-pull -o -U https://github.com/jlacroix82/ansible_pull_tutorial.git
Example 6
---
- hosts: localhost
connection: local
become: true
tasks:
- name: install packages
package:
name:
- htop
- tmux
- vim-nox
- name: copy wallpaper file
copy:
src: files/wallpaper.png
dest: /usr/share/backgrounds/ansible-wallpaper.png
owner: root
group: root
- name: set wallpaper
become_user: jay
dconf:
key: "/org/gnome/desktop/background/picture-uri"
value: "'file:///usr/share/backgrounds/ansible-wallpaper.png'"
- name: set wallpaper position
become_user: jay
dconf:
key: "/org/gnome/desktop/background/picture-options"
value: "'zoom'"
- name: disable lock screen notifications
become_user: jay
dconf:
key: "/org/gnome/desktop/notifications/show-in-lock-screen"
value: "false"
- name: copy custom .bashrc file
copy:
src: files/bashrc
dest: /home/jay/.bashrc
owner: jay
group: jay
- name: add ansible user
user:
name: velociraptor
system: yes
- name: set up sudo for ansible user
copy:
src: files/sudoer_velociraptor
dest: /etc/sudoers.d/velociraptor
owner: root
group: root
mode: 0440
- name: add ansible-pull cron job
cron:
name: ansible auto-provision
user: velociraptor
minute: "*/10"
job: ansible-pull -o -U https://github.com/jlacroix82/ansible_pull_tutorial.git