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
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: