--- 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 ]`