Ruoli Ansible: il modo migliore per districare i tuoi Playbook



Questo blog Ansible Roles parla di come i ruoli vengono utilizzati per rendere leggibili e riutilizzabili complessi playbook con una dimostrazione di configurazione di uno stack MEAN.

Ansible ci consente di automatizzare la gestione della configurazione dei sistemi e aggiungere qualsiasi numero di client a nostro piacimento. Ti sei mai chiesto quanto possa essere complesso questo? Ti sei mai chiesto quanto possono durare e confondere i playbook? Come fa Ansible a farlo sembrare ancora un gioco da ragazzi? Utilizza il concetto di ruoli Ansible ed è di questo che parleremo in questo blog.

cos'è uno sviluppatore blockchain

Argomenti trattati:





Se desideri padroneggiare DevOps, ' ovviamente sarebbe la tua opzione preferita.

Introduzione ai ruoli Ansible

Ansible Role è un concetto che si occupa di idee piuttosto che di eventi. È fondamentalmente un altro livello di astrazione utilizzato per organizzare i playbook. Forniscono uno scheletro per una raccolta indipendente e riutilizzabile di variabili, attività, modelli, file e moduli che possono essere caricati automaticamente nel playbook. I playbook sono una raccolta di ruoli. Ogni ruolo ha funzionalità specifiche.



Lasciatemi spiegare questo con un esempio. Supponiamo che tu voglia che il tuo playbook esegua 10 diverse attività su 5 diversi sistemi, useresti un singolo playbook per questo? No, l'utilizzo di un singolo playbook può renderlo confuso e soggetto a errori. Invece, puoi creare 10 ruoli diversi, in cui ogni ruolo eseguirà un'attività. Quindi, tutto ciò che devi fare è menzionare il nome del ruolo all'interno del playbook per chiamarli. Imparerai a utilizzare ulteriormente i ruoli in questo blog.

Riusabilità dei ruoli ansible

I ruoli Ansible sono indipendenti l'uno dall'altro. L'esecuzione di un ruolo non dipende dagli altri e quindi possono essere riutilizzati. Puoi persino modificare e personalizzare questi ruoli in base alle tue esigenze. Questo riduce il nostro compito di riscrivere un'intera sezione di codice ogni volta che ne abbiamo bisogno, semplificando così il nostro lavoro.

Torniamo all'esempio precedente. Hai scritto 10 ruoli e ora devi usarne 5 per un altro set di provisioning. Scrivi di nuovo l'intero playbook? No, riutilizzi semplicemente quei 5 ruoli chiamandoli in questo nuovo Playbook. Puoi anche apportare modifiche se necessario, ma finirebbe comunque per risparmiare molto tempo.



Supponiamo che tu abbia bisogno di scrivere un playbook per impostare lo stack LAMP. Devi creare 4 ruoli, ciascuno per la creazione di Linux, Apache, MongoDB e PHP. In futuro, se desideri un altro playbook per la configurazione dello stack LAMP oltre a WordPress, creerai di nuovo nuovi ruoli per lo stack LAMP e WordPress? No! Puoi semplicemente riutilizzare i ruoli precedenti (usati per lo stack LAMP) e inoltre creare un nuovo ruolo per WordPress.

Struttura della directory dei ruoli

Utilizzando Ansible Roles, aspettati che i file siano in una determinata struttura di file. La parte più confusa dell'utilizzo dei ruoli è la comprensione della gerarchia dei file. Ansible fornisce una funzionalità chiamata Ansible Galaxy che ti aiuta a giocare con i ruoli. Sappiamo già dove si trova il nostro Ansible su Ubuntu (/ etc / ansible). Hai mai visto una directory chiamata ruoli in / etc / ansible? Quella directory esiste esattamente per questo motivo. Crei ruoli diversi all'interno di questa directory.

La directory sarà simile a questa:

Albero - Ruoli Ansible - Edureka

Puoi creare un ruolo usando ansible-galaxy comando init all'interno di / etc / ansible / roles.

$sudoansible-galaxy init

Vedrai che sarebbero state create anche altre directory dei ruoli.

Queste directory sono attività, gestori, valori predefiniti, variabili, file, modelli e meta e un file README.mdfile.

Compiti - Contiene l'elenco principale delle attività che devono essere eseguite dal ruolo. Itcontieneil file main.yml per quel particolare ruolo.

Gestori - Contiene gestori che possono essere utilizzati da questo ruolo o anche ovunque al di fuori di questo ruolo.

Default - Contiene le variabili predefinite che verranno utilizzate da questo ruolo.

Di chi - Questa directory è composta da altre variabili che verranno utilizzate dal ruolo. Queste variabili possono essere definite nel tuo playbook, ma è una buona abitudine definirle in questa sezione.

File - Contiene file che possono essere distribuiti da questo ruolo. Contiene file che devono essere inviati agli host durante la configurazione del ruolo.

Meta - Definisce i metadati per questo ruolo. Fondamentalmente, contiene file che stabiliscono le dipendenze dei ruoli.

Ogni compito la directory deve essere costituita da un file main.yml file in cui viene scritto il codice effettivo per quel particolare ruolo.

Vediamo ora il funzionamento o i ruoli con una demo dell'installazione di MEAN Stack.

Demo: installazione di MEAN Stack utilizzando Ansible Roles

Dimostrerò come installare MEAN Stack utilizzando Ansible Roles semplicemente eseguendo un singolo playbook. Avremo tre ruoli: 1) Installazione dei prerequisiti, 2) Installazione di MongoDB e 3) Installazione di NodeJS. Suppongo che tu l'abbia già fatto ha installato Ansible e ha stabilito una connessione client-server su Ubuntu . Cominciamo a giocare con Ansible Roles.

Passo 1 - Accedi alla directory / etc / ansible / roles e crea i ruoli per i prerequisiti, MongoDB e NodeJS.

$ cd / etc / ansible / roles $ sudo ansible-galaxy init prerequisiti $ sudo ansible-galaxy init mongodb $ sudo ansible-galaxy init nodejs

Ora dovresti vedere tre ruoli nella directory dei 'ruoli'.

Passo 2 - Scrivi main.yml per i prerequisiti che installa Git.

puoi lanciare un double a un int
$ cd prerequisites / tasks / main.yml --- - nome: installa git apt: nome: git state: present update_cache: sì

Passaggio 3 - Scrivi main.yml per il ruolo MongoDB

$ cd /mongodb/tasks/main.yml --- - nome: MongoDB - Importa chiave pubblica apt_key: keyserver: hkp: //keyserver.ubuntu.com: 80 id: EA312927 - nome: MongoDB - Aggiungi repository apt_repository: nome file: '/etc/apt/sources.list.d/mongodb-org-3.2.list' repo: 'deb http://repo.mongodb.org/apt/ubuntu trusty / mongodb-org / 3.2 multiverse' stato: presente update_cache : sì - nome: MongoDB - Installa MongoDB apt: nome: mongodb-org stato: presente update_cache: sì - nome: Avvia mongod shell: 'mongod &'

Passaggio 4 - Scrivi main.yml pernodejsruolo

$ cd nodejs / tasks / main.yml --- - name: Node.js - Ottieni script get_url: url: 'http://deb.nodesource.com/setup_6.x' dest: '{{var_node}} / nodejs .sh '- name: Node.js - Imposta i permessi di esecuzione sul file script: path:' {{var_node}} / nodejs.sh 'mode:' u + x '- name: Node.js - Esegui shell script di installazione:' {{var_node}} / nodejs.sh '- name: Node.js - Rimuovi il file di script di installazione: percorso:' {{var_node}} / nodejs.sh 'state: absent - name: Node.js - Installa Node.js apt : name = {{item}} state = present update_cache = yes with_items: - build-essential - nodejs - name: Node.js - Installa bower e gulp globalmente npm: name = {{item}} state = present global = yes with_items : - pergola - gulp

Passaggio 5 - Scrivi il tuo playbook principale

$ cd /etc/ansible/mean.yml --- - host: nodi utente_remoto: ansible diventa: sì diventa_metodo: sudo vars: #variabile necessaria durante l'installazione del nodo var_node: / tmp ruoli: - prerequisiti - mongodb - nodejs

Ora che abbiamo definito i ruoli per l'installazione dei prerequisiti, MongoDB e NodeJs, implementiamoli. Esegui il playbook utilizzando il seguente comando.

$sudoplaybook-ansible /etc/ansible/mean.yml -K

Come puoi vedere, tutte le attività sono state eseguite e il loro stato è cambiato. Ciò significa che le modifiche al playbook sono state applicate al tuo server oltre che all'host. L'impostazione di MEAN Stack è solo un esempio. Puoi impostare letteralmente qualsiasi cosa utilizzando Ansible Roles.

Questo ci porta alla fine del blog Ansible Roles. Se trovi utile questo articolo, controlla il ' offerto da Edureka. Copre tutti gli strumenti che hanno migliorato il settore IT.

Hai domande per noi? Per favore pubblicalo su e ti risponderemo.