227 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			227 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| title: Ansible
 | |
| author: Malin
 | |
| theme: Warsaw
 | |
| colortheme: orchid
 | |
| ---
 | |
| 
 | |
| # First: Idempotence
 | |
| 
 | |
| ## My Setup Script
 | |
| 
 | |
| 
 | |
| ```sh
 | |
| # Place locale info
 | |
| echo 'LANG=en_GB.UTF-8' >> /etc/locale.conf
 | |
| /etc/default/libc-locales
 | |
| xbps-reconfigure -fy glibc-locales
 | |
| 
 | |
| # Start cron service
 | |
| xbps-install -y crontab
 | |
| ln -s /etc/sv/cronie /var/service
 | |
| sv start crontab
 | |
| 
 | |
| #  Add default dot files
 | |
| git clone https://gitlab.com/andonome/mkdots.git /etc/skel/.dots
 | |
| 
 | |
| useradd -m ghost
 | |
| usermod -aG wheel
 | |
| 
 | |
| ```
 | |
| 
 | |
| ***
 | |
| 
 | |
| > Error: no package 'cron tab'
 | |
| 
 | |
| ***
 | |
| 
 | |
| ```sh
 | |
| # Place locale info
 | |
| echo 'LANG=en_GB.UTF-8' >> /etc/locale.conf
 | |
| /etc/default/libc-locales
 | |
| xbps-reconfigure -fy glibc-locales
 | |
| 
 | |
| # Start cron service
 | |
| xbps-install -y cronie
 | |
| ln -s /etc/sv/cronie /var/service
 | |
| sv start cronie
 | |
| 
 | |
| #  Add default dot files
 | |
| git clone https://gitlab.com/andonome/mkdots.git /etc/skel/.dots
 | |
| 
 | |
| useradd -m ghost
 | |
| usermod -aG wheel
 | |
| 
 | |
| ```
 | |
| 
 | |
| > ...loading locales
 | |
| 
 | |
| ***
 | |
| 
 | |
| > Error: No command 'git'
 | |
| > Error: user already exists
 | |
| 
 | |
| ***
 | |
| 
 | |
| ```sh
 | |
| # Place locale info
 | |
| echo 'LANG=en_GB.UTF-8' >> /etc/locale.conf
 | |
| /etc/default/libc-locales
 | |
| xbps-reconfigure -fy glibc-locales
 | |
| 
 | |
| # Start cron service
 | |
| xbps-install -y cronie git
 | |
| ln -s /etc/sv/cronie /var/service
 | |
| sv start cronie
 | |
| 
 | |
| #  Add default dot files
 | |
| git clone https://gitlab.com/andonome/mkdots.git /etc/skel/.dots
 | |
| 
 | |
| useradd -m ghost
 | |
| usermod -G wheel
 | |
| 
 | |
| ```
 | |
| 
 | |
| ***
 | |
| 
 | |
| > `$ cat /etc/locale.conf`
 | |
| 
 | |
| ```sh
 | |
| LC_COLLATE=C
 | |
| LANG=en_GB.UTF-8
 | |
| LANG=en_GB.UTF-8
 | |
| LANG=en_GB.UTF-8
 | |
| LANG=en_GB.UTF-8
 | |
| LANG=en_GB.UTF-8
 | |
| LANG=en_GB.UTF-8
 | |
| ```
 | |
| 
 | |
| > `$ ???`
 | |
| 
 | |
| ***
 | |
| 
 | |
| 
 | |
| ```sh
 | |
| grep en_GB /etc/locale.conf || \
 | |
|     echo 'LANG=en_GB.UTF-8' >> /etc/locale.conf
 | |
| 
 | |
| ```
 | |
| 
 | |
| ***
 | |
| 
 | |
| # So Ansible...
 | |
| 
 | |
| 
 | |
| ```sh
 | |
| ansible --module-name=ping localhost
 | |
| ansible -m package -a 'upgrade=yes' localhost
 | |
| ```
 | |
| 
 | |
| ## Lines in Files
 | |
| 
 | |
| ```sh
 | |
| ansible -m lineinfile -a 'line=test create=yes path=/tmp/x' localhost
 | |
| ansible -m say -a 'voice=en_GB msg="Testing"' localhost
 | |
| ansible -m say -a 'voice=en_GB msg="Testing"' localhost
 | |
| ```
 | |
| 
 | |
| ***
 | |
| 
 | |
| # More Hosts!
 | |
| 
 | |
| Hark at the hosts in `~/.ssh/config`:
 | |
| 
 | |
| ```sh
 | |
| Host soft
 | |
|     HostName soft.dmz.rs
 | |
|     Port 2222
 | |
| 	User ghost
 | |
| 	IdentityFile ~/.ssh/id_rsa
 | |
| Host krov
 | |
| 	HostName krov.dmz.rs
 | |
| 	User malin
 | |
| Host kralizec
 | |
| 	HostName dmz.rs
 | |
| 	User root
 | |
| Host laka
 | |
| 	HostName 192.168.0.50
 | |
| 	IdentityFile ~/.ssh/id_rsa
 | |
| ```
 | |
| 
 | |
| ***
 | |
| 
 | |
| ## Hosts in toml
 | |
| 
 | |
| 
 | |
| ```toml
 | |
| [webby]
 | |
| nginx12
 | |
| 
 | |
| [webby:vars]
 | |
| user=alice
 | |
| ```
 | |
| 
 | |
| This is easy to read, but breaks standards.
 | |
| 
 | |
| ***
 | |
| 
 | |
| `ansible-play -i hosts.toml playbooks/mmcli`
 | |
| 
 | |
| ***
 | |
| 
 | |
| Better to stick with standards, even if you can't read it!
 | |
| 
 | |
| ***
 | |
| 
 | |
| Very yaml:
 | |
| 
 | |
| ```yml
 | |
| all:
 | |
|   vars:
 | |
|     ansible_python_interpreter: /usr/bin/python3.13
 | |
|     cow_selection: random
 | |
|     username: ghost
 | |
|     locale: Europe/Belgrade
 | |
|     libc_locale: en_GB.UTF-8 UTF-8
 | |
|   children:
 | |
|     arch:
 | |
|       children:
 | |
|         archyay:
 | |
|           hosts:
 | |
|             ratking:
 | |
|             archkube:
 | |
|             nimbus:
 | |
|     void:
 | |
|       hosts:
 | |
|         hex:
 | |
|     debian:
 | |
|       vars:
 | |
|         ansible_python_interpreter: /usr/bin/python3.12
 | |
|       hosts:
 | |
|         laka:
 | |
|         proxmox:
 | |
| 
 | |
| ```
 | |
| 
 | |
| ***
 | |
| 
 | |
| `ansible-play -i hosts.yml playbooks/mmcli`
 | |
| 
 | |
| ***
 | |
| 
 | |
| # What it Does
 | |
| 
 | |
| - Installs packages
 | |
| - Copies configs *to* host
 | |
| - Fetches files *from* host
 | |
|     * Backup ssl certs
 | |
|     * Backup ssh identify keys
 | |
| 
 | |
| ***
 | |
| 
 | |
| # Check the Repository Here!
 | |
| 
 | |
| `[ $git_repo_address ]`
 | |
| 
 | |
| 
 |