Ansible Galaxy è semplicemente il modo più semplice per trovare ruoli Ansible già scritti, creare e condividere i tuoi ruoli e tuffarti nella galassia dei contenuti Ansible!
=====================Annuncio in prima serata! =====================
FOSDEM PGDay 2016 si terrà il 29 gennaio prima del FOSDEM, il più grande evento open source d'Europa e PostgreSQL Devroom il 31 gennaio al FOSDEM di Bruxelles.
Se sei interessato alla gestione della configurazione, all'orchestrazione del server, alla distribuzione automatizzata (ecco perché stai leggendo questo post del blog, giusto?) e ti piace lavorare con PostgreSQL (di sicuro) su AWS (opzionale), quindi potresti voler unirti al mio discorso "Managing PostgreSQL with Ansible" il 29 gennaio, 12:30-13:20.
Controlla il fantastico programma di entrambi gli eventi! Spero di vederti a Bruxelles questa settimana!
=====================Annuncio in prima serata! =====================
Ciao Ansible Galaxy!
Ansible ha una potente community che li rende ancora più potenti. Gli sviluppatori che contribuiscono ad Ansible sono felici di contribuire e gli utenti che utilizzano Ansible per i propri sistemi sono felici di usarlo.
Il contenuto di Ansible a cui si riferivano sulla loro pagina web è fondamentalmente ruoli Ansible. Continuiamo con i ruoli in questo post del blog e cerchiamo di capire cosa significa ruolo Ansible e quali sono le differenze tra ruoli, playbook e attività.
Cos'è un ruolo Ansible?
Dovresti assolutamente usare i ruoli. I ruoli sono fantastici. Usa i ruoli. Ruoli! L'abbiamo detto abbastanza? I ruoli sono fantastici.
Prima di parlare di ruoli, ricordiamo la definizione di compito e playbook nella terminologia di Ansible.
Compito
Le attività sono responsabili della chiamata di un modulo con un insieme specifico di parametri.
Puoi leggere il mio precedente post sul blog per conoscere i moduli Ansible e controllare i moduli Ansible Postgres con esempi.
Ogni attività Ansible contiene un nome, un modulo da richiamare, parametri del modulo e, facoltativamente, pre/post-condizioni. Ci consentono di chiamare moduli Ansible e passare informazioni ad attività consecutive.
L'attività seguente richiama il modulo file fornendo 4 parametri.
- name: Ensure the data folder has right ownership
file: path="/var/lib/postgresql" state=directory owner=postgres group=postgres
Garantisce che 3 condizioni siano vere:
- /var/lib/postgresql esiste come directory
- il proprietario di /var/lib/postgresql è "postgres"
- Il gruppo di /var/lib/postgresql è "postgres"
Se non esiste, Ansible crea la directory e assegna proprietario e gruppo. Se solo il proprietario è diverso, Ansible lo fa "postgres".
Playbook
I playbook contengono riproduzioni e le riproduzioni contengono attività. Le attività chiamano moduli e possono (facoltativamente) gestori di trigger (esegui una volta, esegui alla fine) .
Ora possiamo dare un'occhiata a un esempio di playbook molto semplice di seguito:
- name: Ensure all virtual machines are ready
hosts: 127.0.0.1
connection: local
vars_files: # load default variables from YAML files below
- 'defaults/postgresql.yml'
- 'defaults/aws.yml'
tasks:
- include: 'tasks/provision.yml' # load infrastructure setup tasks
- name: Ensure all required PostgreSQL dependencies ready
hosts: postgresql-all # manage all PostgreSQL servers
sudo: yes
sudo_user: root
vars_files:
- 'defaults/postgresql.yml'
- 'defaults/aws.yml'
tasks:
- include: 'tasks/postgresql.yml' # load PostgreSQL setup tasks
In questo playbook abbiamo due giochi:
La prima riproduzione assicura che tutte le macchine virtuali siano pronte e funzionino su localhost. Carica le variabili predefinite dai file YAML denominati postgresql.yml e aws.yml. Puoi pensare a questi file come file di configurazione per ruoli e playbook PostgreSQL e AWS (nel nostro esempio), poiché puoi vedere che entrambe le riproduzioni utilizzano questi file per le variabili predefinite. Questa riproduzione chiama l'attività provision.yml che contiene le attività di configurazione dell'infrastruttura.
La seconda riproduzione assicura che tutte le dipendenze PostgreSQL richieste siano pronte e funzioni su server Postgres che sono definiti nel file di inventario. Questa riproduzione chiama l'attività postgresql.yml che contiene le attività di configurazione di PostgreSQL.
Se desideri vedere il playbook completo, ti invitiamo a controllare il mio repository e contribuire a renderlo migliore.
Per comprendere meglio il concetto di playbook, puoi guardare esempi di playbook suggeriti in Ansible docs.
Torniamo a parlare di ruoli. In Ansible;
- Playbook organizzare attività
- Ruoli organizzare playbook
Immagina di avere molte risorse indipendenti da gestire (ad es. server Web, server PostgreSQL, registrazione, monitoraggio, AWS). Mettere tutto in un unico playbook potrebbe risultare in una soluzione non gestibile.
Per ridurre tale complessità, i ruoli ci aiutano con:
Dividi le attività in playbook molto più piccoli
Questo ci permette di concentrarci sulle risorse, in modo indipendente. Ciò semplifica la manutenzione e il debug. Inoltre sarà molto più facile capire la struttura.
Riutilizzo di configurazioni, file, modelli, attività
In questo modo possiamo condividere facilmente questi componenti tra i playbook, senza riscrivere più e più volte.
Gestione delle dipendenze del playbook
Quando eseguiamo un ruolo, possiamo essere certi che tutte le precondizioni sono soddisfatte per quel ruolo.
Qui puoi vedere un grafico delle dipendenze e la struttura della directory dei ruoli corrispondente:
Ruoli PostgreSQL in Ansible Galaxy
Mentre scrivevo questo post sul blog c'erano 146 ruoli che si trasformano in un output di postgresql e postgres filtro di ricerca.
Personalmente suggerisco di controllare un paio di questi ruoli e di usarli nelle vostre architetture se sono abbastanza buoni e soddisfano le vostre esigenze; in caso contrario, iscriviti ad Ansible Galaxy e crea i tuoi ruoli.
Buon hackeraggio!
Per ulteriori informazioni su Ansible:
- Consulta i loro documenti ben scritti.
- Guarda il video di avvio rapido di Ansible che è un esercitazione davvero utile.
- Segui il loro programma di webinar, ci sono alcuni fantastici webinar in arrivo nell'elenco.