Ansible – Introduzione & Installazione – Seconda Parte

Installare e configurare Ansible

Nel precedente articolo abbiamo parlato dell’installazione di Ansible. In questo articolo vedremo come creare un file di configurazione basilare e come scrivere un playbook per creare un service account sui managed nodes.

Scrivere il file ansible.cfg e il file inventory

Partiamo con la scrittura del file di configurazione.

Creiamo una nuova directory ed al suo interno inseriamo il file ansible.cfg con il seguente contenuto:

				
					[defaults]
host_key_checking=False
inventory=./inventory
remote_user=user
ask_password=True

[privilege_escalation]
become_ask_pass=True

				
			

Partiamo con la scrittura del file di configurazione.

Creiamo una nuova directory ed al suo interno inseriamo il file ansible.cfg con il seguente contenuto:

				
					ubunut01
ubuntu02
ubuntu03
				
			

Vediamo se sono raggiungibili tramite il comando ad-hoc ansible all -m ping se tutto è stato settato correttamente andrà a buon fine.

Possiamo ora passare alla stesura del playbook.

Scrivere il playbook

Il playbook conterrà sostanzialmente 2 play con un totale di 4 task

  1. Creazione della chiave SSH sulla macchina locale
  2. Creazione dell’utente ansible (senza password) sugli host
  3. Dare privilegi di sudo all’utente appena creato
  4. Copiare le chiavi SSH dell’utente locale in modo tale da poter collegarsi senza password

Il playbook è un file scritto in formato YAML.

				
					---
- name: Creating SSH key
  hosts: localhost
  connection: local
 
  tasks:
 
    - name: Generate SSH key
      community.crypto.openssh_keypair:
        path: ~/.ssh/id_rsa
        state: present
 
- name: Creating ansible user
  hosts: all
  become: true
 
  tasks:
 
    - name: Creating ansible user
      ansible.builtin.user:
        name: ansible
        state: present
 
    - name: Giving the user the sudo permission
      community.general.sudoers:
        name: ansible
 
    - name: Adding the SSH key for ansible user
      ansible.posix.authorized_key:
        user: ansible
        key: "{{ lookup('file', '/home/student/.ssh/id_rsa.pub') }}"
        state: present
...


				
			

Nel primo play andiamo semplicemente a creare la chiave SSH all’interno del nostro control node usando il modulo openssh_keypair.

Il secondo Play, invece, va a targhettare tutti gli altri host e crea l’utente ansible con il modulo user. Dopo aver creato l’utente gli da permessi di root per eseguire qualsiasi comando. Infine, tramite modulo authorized_key, copia la chiave pubblica del control node all’interno dei managed nodes.

Eseguire il playbook

Ricapitolando al momento abbiamo 3 file, uno di configurazione un file di inventario ed un playbook

A questo punto, dato che tutto sembra essere andato per il verso giusto, possiamo eseguire il playbook.

Ansible eseguire il playbook

Modifichiamo il file di configurazione in questo modo

				
					[defaults]
host_key_checking=False
inventory=./inventory
remote_user=ansible

				
			

Come è facile intuire abbiamo rimosso i parametri inerenti alle password e stiamo usando l’utente ansible per effettuare la connessione SSH.

A questo punto ritestiamo la connessione.

Tutto è andato per il verso giusto. Come avete visto voi stessi, stiamo sfruttando la connessione tramite utente Ansible, il quale ha anche permessi di “sudo”. Per eventuali chiarimenti o per approfondire ulteriormente l’argomento Ansible, proponiamo il nostro corso Ansible Introduction!