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 ]` | ||||||
|  |  | ||||||
|  |  | ||||||
							
								
								
									
										22
									
								
								slides/ansible/examples/bind.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								slides/ansible/examples/bind.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | |||||||
|  | --- | ||||||
|  | - name: Compile BIND | ||||||
|  |   hosts: hex | ||||||
|  |   become: false | ||||||
|  |   environment: | ||||||
|  |     PATH: '{{ ansible_env.PATH }}' | ||||||
|  |  | ||||||
|  |   tasks: | ||||||
|  |     - name: Git pull BIND | ||||||
|  |       ansible.builtin.git: | ||||||
|  |         repo: https://gitlab.com/bindrpg/core.git | ||||||
|  |         dest: "{{ ansible_user_dir }}/core" | ||||||
|  |         clone: true | ||||||
|  |         verify_commit: true | ||||||
|  |         version: master | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     - name: Make BIND | ||||||
|  |       community.general.make: | ||||||
|  |         chdir: "{{ ansible_user_dir }}/core" | ||||||
|  |         jobs: 3 | ||||||
|  |         target: all | ||||||
							
								
								
									
										27
									
								
								slides/ansible/examples/mmcli.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								slides/ansible/examples/mmcli.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | |||||||
|  | --- | ||||||
|  | - name: Install Mermaid ASCII | ||||||
|  |   hosts: laka | ||||||
|  |   become: true | ||||||
|  |  | ||||||
|  |   tasks: | ||||||
|  |     - name: Install deps | ||||||
|  |       ansible.builtin.package: | ||||||
|  |         name: | ||||||
|  |           - git | ||||||
|  |           - golang | ||||||
|  |           - make | ||||||
|  |  | ||||||
|  |     - name: Ensure local src dir exists | ||||||
|  |       ansible.builtin.file: | ||||||
|  |         path: /usr/local/src/ | ||||||
|  |         state: directory | ||||||
|  |         mode: '0755' | ||||||
|  |     - name: Clone mermaid-ascii | ||||||
|  |       ansible.builtin.git: | ||||||
|  |         repo: https://github.com/AlexanderGrooff/mermaid-ascii.git | ||||||
|  |         dest: /usr/local/src/mermaid-ascii/ | ||||||
|  |         update: yes | ||||||
|  |     - name: Install mermaid | ||||||
|  |       community.general.make: | ||||||
|  |         chdir: /usr/local/src/mermaid-ascii/ | ||||||
|  |         target: install | ||||||
							
								
								
									
										10
									
								
								slides/ansible/examples/tlmgr.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								slides/ansible/examples/tlmgr.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | |||||||
|  | --- | ||||||
|  | - name: Install tlmgr | ||||||
|  |   hosts: june | ||||||
|  |   become: true | ||||||
|  |  | ||||||
|  |   tasks: | ||||||
|  |     - name: Install texlive | ||||||
|  |       ansible.builtin.script: mintex.sh | ||||||
|  |       args: | ||||||
|  |         creates: /usr/local/bin/tlmgr | ||||||
							
								
								
									
										18
									
								
								slides/ansible/examples/transmission.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								slides/ansible/examples/transmission.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | |||||||
|  | --- | ||||||
|  | - name: Make crontab | ||||||
|  |   hosts: june | ||||||
|  |   become: true | ||||||
|  |  | ||||||
|  |   tasks: | ||||||
|  |     - name: Late-night transmission start | ||||||
|  |       ansible.builtin.cron: | ||||||
|  |         name: start transmission | ||||||
|  |         minute: 0 | ||||||
|  |         hour: 3 | ||||||
|  |         job: /usr/bin/systemctl start transmission | ||||||
|  |     - name: Late-night transmission end | ||||||
|  |       ansible.builtin.cron: | ||||||
|  |         name: stop transmission | ||||||
|  |         minute: 0 | ||||||
|  |         hour: 6 | ||||||
|  |         job: /usr/bin/systemctl stop transmission | ||||||
							
								
								
									
										24
									
								
								slides/ansible/examples/tspreed.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								slides/ansible/examples/tspreed.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | |||||||
|  | --- | ||||||
|  | - name: Install tspreed | ||||||
|  |   hosts: october | ||||||
|  |   become: true | ||||||
|  |  | ||||||
|  |   tasks: | ||||||
|  |     - name: Ensure local src dir exists | ||||||
|  |       ansible.builtin.file: | ||||||
|  |         path: /usr/local/src/ | ||||||
|  |         state: directory | ||||||
|  |         mode: '0755' | ||||||
|  |     - name: Install make | ||||||
|  |       ansible.builtin.package: | ||||||
|  |         name: make | ||||||
|  |         state: present | ||||||
|  |     - name: Clone tspreed | ||||||
|  |       ansible.builtin.git: | ||||||
|  |         repo: https://github.com/n-ivkovic/tspreed.git | ||||||
|  |         dest: /usr/local/src/tspreed | ||||||
|  |         update: yes | ||||||
|  |     - name: Install tspreed | ||||||
|  |       community.general.make: | ||||||
|  |         chdir: /usr/local/src/tspreed | ||||||
|  |         target: install | ||||||
		Reference in New Issue
	
	Block a user