Marvin Pascale

[B.Log]

25 Luglio 2020

Ansible

I had the Ansible playbooks running in about 3 days on our entire production stack with 15 different microservices. It was really easy once you have the templates in hand.

Anand Patel

Software Engineer, Runnable

Ansible è un software opensource appartenente alla famiglia Red Hat, utilizzato per l’automazione in campo IT. Con questo software è infatti possibile gestire qualsiasi infrastruttura; dalla più semplice alla più complessa.

Punti di forza

  • Ansible è scritto in python;
  • non richiede l’installazione di un agent sulle macchine da gestire (utilizza ssh o winrm);
  • non è necessario essere un programmatore, la sintassi YAML è di facile lettura e comprensione;
  • documentazione online eccellente.

Una rapida occhiata

Per poter testare Ansible abbiamo bisogno di raccogliere e organizzare le informazioni relative alla nostra infrastruttura.

Inventory

L’inventory è il “database” che utilizzerà Ansible per reperire le informazioni sulla nostra infrastrutture. Può essere scritto sia in formato YAML che in formato INI.

inventory.txt

server1 ansible_host=192.168.1.10 ansible_user=root

intentory.yml

all:
  hosts:
    server1:
      ansible_host: 192.168.1.10
      ansible_user: root

Playbook

All’interno del playbook sono definite le informazioni sul play, gli hosts e le azioni (tasks) che Ansible eseguirà sugli hosts.

Nell’esempio vedremo come installare ed avviare Apache HTTP server su un sistema CentOS 7.

playbook.yml

---
-
  name: apache up e running
  hosts: server1
  tasks:
    - name: Installo l’ultima versione di apache2
      yum:
        name: httpd
        state: latest
    - name: Installo l’ultima versione dei tool
      yum:
        name: httpd-tools
        state: latest
    - name: Avvio apache2
      systemd:
        state: started
        name: httpd
    - name: Aggiungo un'eccezzione a firewalld per la porta 80
      firewalld:
        service: http
        permanent: yes
        state: enabled
        immediate: yes

Test

Prima di procedere con le attività è sempre buona norma testare che la nosra infrastruttura sia descritta correttamente.

# ansible server1 -m ping -i inventory.txt

Il risultato dovrà essere simile a:

server1 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

Se il test va a buon fine siamo pronti per lanciare il nostro primo playbook.

# ansible-playbook playbook.yml -i inventory.txt

Mettiamo le mani in pasta

Musica: The Entertainer by Kevin MacLeod

Link: https://incompetech.filmmusic.io/song/5765-the-entertainer

License: http://creativecommons.org/licenses/by/4.0/

Se sei affascinato da questo mondo ti consiglio di partire dalla documentazione ufficiale e fare tanta, tanta, tanta pratica.


Le opinioni in quanto tali sono opinabili e nulla ti vieta di approfondire l’argomento.

Risorse: