write ansible
This commit is contained in:
		
							
								
								
									
										226
									
								
								slides/ansible/ansible.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										226
									
								
								slides/ansible/ansible.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,226 @@ | ||||
| --- | ||||
| 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 ]` | ||||
|  | ||||
|  | ||||
		Reference in New Issue
	
	Block a user