Oggi iniziamo il viaggio all'interno di Ansbile, un tool di automazione che ci consentira' di gestire meglio i nostri server.
Andiamo a preparare il laboratorio che nel nostro caso sara' un server Alma (Redhat 9), un server Ubuntu (22.04 LTS) e una Fedora 36.
Andremo ad installare il nostro server Ansible su Alma quindi come prima cosa aggiorniamo tutti i pacchetti:
dnf update -y
dnf upgrade -y
Ora andiamo ad installare i repository Epel che contengono il nostro pacchetto Ansible
dnf install epel-release
A questo punto per trovare il pacchetto dobbiamo prima di tutto riaggiornare col comando
dnf update
A questo punto andiamo ad installare Ansbile con il comando
dnf install ansible
Ora per andare ad interagire con gli altri server dobbiamo usare l'autenticazione tramite chiave ssh in modo che non debba essere interattiva, per fare cio' i passaggi sono:
- creare una chiave ssh sul server Alma
- propagare la chiave sugli altri server
- Fare in modo che l'utente che usera' ansible per connettersi sia nel gruppo dei sudoers e possa dare i comandi senza la richiesta di password
Iniziamo con la generazione della chiave SSH
ssh-keygen
Andiamo quindi a distribuire la nostra chiave alle altre macchine con il comando ssh-copy-id
ssh-copy-id parallels@10.211.55.6
ssh-copy-id parallels@10.211.55.4
A questo punto andiamo a fare in modo che l'utente che usera' Ansible non debba inserire la password quando switcha a root, per farlo andiamo sulle singole macchine con l'utente che usera' ansible e diamo il comando
echo "$(whoami) ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/$(whoami)
Ora non ci rimane che crearci il database degli hosts che usera' Ansible, nel nostro caso lo faremo molto piccolo ma vedremo un'opzione interessante che ci consetira' di specificare l'utente che verra' usato.
sudo vim /etc/ansible/hosts
L'opzione e' ansible_user=parallels
L'altra cosa da notare e' la scritta [linux] che fara' in modo di definire il gruppo Linux all'interno dell'invocazione, utile se vogliamo definire gruppi logici (Webserver, Database, etc)
Per vedere che la comunicazione tra il server Ansible e i client funzioni andiamo ad eseguire un ping
ansible -m ping linux