GNU/Linux >> Linux Esercitazione >  >> Cent OS

Come creare playbook Ansible per l'automazione IT

Playbook non è altro che di Ansible script di gestione della configurazione e può essere utilizzato per gestire le distribuzioni e le configurazioni dei nodi gestiti. Il Playbook contiene una serie di criteri che desideri vengano applicati dai nodi gestiti o una serie di passaggi in un processo IT generale.

I playbook sono scritti e sviluppati in un semplice linguaggio testuale. La sintassi che utilizziamo nei playbook è diversa dai normali comandi che abbiamo utilizzato per testare nel tutorial precedente.

Nel tutorial precedente, abbiamo visto come installare Ansible su CentOS 7 / RHEL 7 / Ubuntu 18.04 / 16.04 e Debian 9 .

Crea Ansible Playbook

Per questa demo, creeremo un playbook chiamato web.yml per configurare un host per eseguire un server Web Apache . Ogni playbook è composto da uno o più play in un elenco.

Per ogni gioco nel playbook, puoi scegliere quali macchine nella tua infrastruttura scegliere come target e quale utente remoto per completare le attività.

vi web.yml

CentOS / RHEL Playbook:

---
- hosts: 192.168.1.20
  remote_user: raj
  become: yes
  become_method: su

  tasks:
  - name: Install Apache
    yum: pkg=httpd state=latest
  - name: Copying the demo file
    template: src=/etc/ansible/index.html dest=/var/www/html
              owner=apache group=apache mode=0644
  - name: Enable Apache on System Boot
    service: name=httpd enabled=yes

    notify:
    - start apache
    - setup firewalld
    - reload firewalld

  handlers:
    - name: start apache
      service: name=httpd state=started
    - name: setup firewalld
      firewalld:
        service: http
        permanent: true
        state: enabled
    - name: reload firewalld
      service: name=firewalld state=restarted

Playbook Ubuntu/Debian:

---
- hosts: 192.168.1.30
  remote_user: raj
  become: yes
  become_method: sudo

  tasks:
  - name: Install Apache
    apt:
      name: apache2
      update_cache: yes
  - name: Copying the demo file
    template: src=/etc/ansible/index.html dest=/var/www/html
              owner=www-data group=www-data mode=0644

Crea un file HTML demo (/etc/ansible/index.html ). Questo file HTML verrà inserito nella DocumentRoot predefinita di server Apache sul nodo gestito.

vi /etc/ansible/index.html

HTML:

<html>
  <head>
    <title>Apache is installed by Ansible</title>
  </head>
  <body>
  <h1>Apache is installed by Ansible</h1>
  <p>Now, Apache is managed through Ansible</p>
  </body>
</html>

Ripartire Ansible Playbook

Ora esamineremo ogni sezione del playbook web.yml file per capire cosa significa.

Il file inizia con

---

Tutti i file YAML dovrebbero iniziare con (tre trattini) --- e questo indica l'inizio di un documento. YAML è molto sensibile allo spazio e lo usa per raggruppare insieme diverse informazioni. Gli spazi devono essere coerenti nel file per essere letti correttamente. Gli elementi allo stesso livello di indentazione sono considerati elementi di pari livello.

Host e utenti

---
- hosts: 192.168.1.20
  remote_user: raj

La riga hosts è un elenco di uno o più gruppi (es. server demo) o pattern host (es. 192.168.1.20), separati da due punti. Insieme all'host, puoi menzionare l'account utente remoto.

---
- hosts: 192.168.1.20
  remote_user: raj
  become: yes
  become_method: su

Devi diventare un utente root per installare qualsiasi pacchetto su un sistema. Per farlo, puoi utilizzare metodi di escalation dei privilegi, come su o sudo . Ogni volta che utilizzi questo tipo di metodi di escalation dei privilegi, devi eseguire un playbook ansible con --ask-become-pass argomento.

Compiti

Ora abbiamo una serie di attività.

  tasks:
  - name: Install Apache
    yum: pkg=httpd state=latest
  - name: Copying the demo file
    template: src=/etc/ansible/index.html dest=/var/www/html
              owner=apache group=apache mode=0644
  - name: Enable Apache on System Boot
    service: name=httpd enabled=yes

Ogni riproduzione contiene un elenco di attività, che vengono eseguite in ordine, una alla volta, contro tutte le macchine corrispondenti al modello host, prima di passare all'attività successiva.

Quando esegui il playbook, viene eseguito dall'alto verso il basso e gli host con attività non riuscite vengono eliminati dalla rotazione per l'intero playbook.

Ogni attività dovrebbe avere un nome e viene utilizzato per visualizzare l'attività corrente durante l'esecuzione del playbook. Questo output è per gli esseri umani, quindi è bello avere descrizioni ragionevolmente buone di ogni fase dell'attività.

Qui installerà l'ultima versione di Apache e copierà l'HTML demo (/etc/ansible/index.html) nella directory /var/www/html del nodo gestito e quindi consentirà l'avvio automatico del servizio Apache durante l'avvio del sistema.

Avvisa

Questi notifica le azioni vengono attivate alla fine di ogni blocco di attività in un playbook e verranno attivate solo una volta anche se notificate da più attività diverse.

    notify:
    - start apache
    - setup firewalld
    - reload firewalld

La notifica item contiene un elemento chiamato start apache , imposta firewalld e ricarica firewalld . Questi sono i riferimenti ai gestori che svolgono funzioni specifiche quando viene chiamato dall'interno di un'attività. Definiremo il gestore di apache di avvio e firewalld.

Gestore

I gestori sono elenchi di attività, non molto diversi dalle normali attività. Tuttavia, vengono eseguiti solo quando un'attività gli ha detto che sono state apportate modifiche al sistema client.

  handlers:
    - name: start apache
      service: name=httpd state=started
    - name: setup firewalld
      firewalld:
        service: http
        permanent: true
        state: enabled
    - name: reload firewalld
      service: name=firewalld state=restarted

Nel nostro caso, abbiamo un gestore che avvia il servizio Apache e configura il firewall dopo l'installazione del pacchetto.

Questa azione si verifica perché il notificatore ha notificato al gestore le modifiche al sistema, il che significa che il pacchetto Apache doveva essere installato e insieme a quel file demo doveva essere copiato in DocumentRoot.

Esegui Ansible Playbook

Una volta che hai un playbook pronto, puoi eseguirlo usando il comando seguente.

ansible-playbook web.yml -f 1 --ask-become-pass

OR

ansible-playbook web.yml -f 1 --ask-become-pass -u raj --ask-pass

playbook ansible :comando per eseguire i playbook Ansible.

web.yml: File YAML (file Ansible Playbook – che abbiamo creato all'inizio di questo tutorial)

-f 1 :playbook utilizzando un livello di parallelismo di 1

–chiedi-diventa-pass :Dal momento che dobbiamo diventare utenti root per installare i pacchetti.

-u raj :Utente sul nodo gestito

Risultato:

Si supponga di aver creato un playbook per un gruppo (es. server demo) di server e di voler eseguire un playbook su un host specifico. Il comando seguente esegue il playbook solo su 192.168.1.40 .

ansible-playbook -l 192.168.1.40 web.yml -u raj --ask-become-pass

Verifica le azioni di Ansible Playbook

Dopo aver eseguito un playbook, apri il browser e vai all'host remoto menzionato nell'inventario ansible.

Nel mio caso, l'URL sarà

http://192.168.1.20

Ora dovresti andare sopra la pagina Apache è installato da Ansible e questa pagina ci conferma che Apache è stato installato da Ansible.

Hai imparato come creare un semplice playbook per l'automazione dell'installazione di apache. Puoi trovare ulteriori informazioni sulla creazione di playbook qui .

Questo è tutto.


Cent OS
  1. Come utilizzo Ansible e anacron per l'automazione

  2. Come creare un Playbook Ansible

  3. Demistificare Ansible per gli amministratori di sistema Linux

  4. 6 abilità di risoluzione dei problemi per i playbook Ansible

  5. Come passare variabili extra a un playbook Ansible

Come utilizzare i gestori in Ansible Playbook

Come creare ruoli Ansible e usarli in Playbook

Ansible Guide:crea Ansible Playbook per LEMP Stack

Come impostare lo strumento Ansible Automation in CentOS 7

Come definire e utilizzare i gestori in Ansible Playbook

Come creare ed eseguire file Ansible Playbook