Come creare una directory in Ansible

Come creare una directory in Ansible

Ansible è uno dei migliori strumenti di automazione disponibili, offrendo strumenti semplici, intuitivi e potenti per eseguire attività di automazione nel mondo moderno.

Per la maggior parte delle attività di automazione, dovrai creare directory, soprattutto quando si installano vari strumenti e applicazioni, backup e restazioni. Sebbene sia possibile eseguire queste attività utilizzando uno script automatizzato, Ansible fornisce una migliore funzionalità, consentendo di creare directory in host specificati.

Questo tutorial mostra come utilizzare il modulo file Ansible per creare, rimuovere e modificare le autorizzazioni di directory per gli host specificati.

Come creare una directory in Ansible

Uno dei seguenti metodi può essere utilizzato per creare una directory in Ansible:

  • Un comando raw ansible con il modulo di comando
  • Un modulo di file in un playbook Ansible

Per creare una directory in Ansible usando il modulo di comando, immettere il comando mostrato di seguito:

$ ansible all -m comando -a "mkdir ~/backups"

Dopo aver inserito il comando sopra, è necessario ottenere l'output mostrato di seguito:

Immettere passphrase per la chiave '/home/utente/.SSH/ID_RSA ':
[ATTENZIONE]: considera l'uso del modulo file con la directory State = anziché eseguire 'mkdir'. Se è necessario utilizzare il comando perché il file è insufficiente, puoi aggiungere "avverte: false" a questa attività di comando o impostare "comando_warnings = false" in ansible.CFG per sbarazzarsi di questo messaggio.
35.222.210.12 | Cambiato | rc = 0 >>

Verifica che l'inventario degli host Ansible in/etc/ansible/host contenga le informazioni corrette sui tuoi host remoti.

Sebbene il modulo di comando sia semplice da utilizzare su un singolo host Ansible, diventa molto inefficiente quando si tratta di più host con directory e attività diverse.

Per contrastare questo svantaggio, useremo il modulo di file Ansible e creeremo un playbook contenente gli host che vogliamo usare e le directory che desideriamo creare.

NOTA: Il modulo file può anche essere usato come singolo comando in Ansible, ma funziona in modo molto simile al modulo di comando.

Per utilizzare un playbook Ansible, crea un file YAML e inserisci le seguenti voci per creare una directory:

- Host: tutte le attività:
- Nome: Modulo file ansible Crea directory
file:
Path: ~/backups
Stato: directory

Salva il file e usa Ansible-Playbook per creare le directory:

Ansible-PlayBook Mkdir.YML

Ciò dovrebbe produrre un output come quello seguente, indicando che le azioni sono state eseguite correttamente utilizzando il file del playbook specificato.

Giocare tutto] ********************************************** ************************************************* *************
Attività [raccolta fatti] ******************************************* ************************************************* **
Immettere passphrase per la chiave '/home/utente/.SSH/ID_RSA ':
OK: [35.222.210.12]
Task [Modulo file ansible Crea directory] ****************************************** ********************************
OK: [35.222.210.12]
Gioca al riepilogo ********************************************* ************************************************* ***********
35.222.210.12: OK = 2 modificato = 0 non raggiungibile = 0 non riuscito = 0 saltato = 0 salvato = 0 ignorato = 0

Come creare più directory con gli elementi

I playbook Ansible ti consentono anche di creare più directory utilizzando l'istruzione With_Items nel file YAML.

Ad esempio, per creare backup per tre servizi, mysql, repository e config, è possibile creare l'attività mostrata nel file YAML di seguito:

- Host: tutte le attività:
- Nome: ansible Crea più directory con_items
file:
Path: ~/backups/item
Stato: directory
with_items:
- 'mysql'
- 'repository'
- 'config'

Salva il file sopra ed eseguilo con Ansible-Playbook.

$ ansible-playbook mkdir_multi.YML Play [All] ******************************************* ************************************************* ************************************************* ************************************************* ***
Attività [raccolta fatti] ******************************************* ************************************************* ************************************************* ***************************************
Immettere passphrase per la chiave '/home/utente/.SSH/ID_RSA ':
OK: [35.222.210.12]
Task [ansible crea più directory con_items] ********************************************* ************************************************* ************************************************* *************
Cambiato: [35.222.210.12] => (item = mysql)
Cambiato: [35.222.210.12] => (item = repository)
Cambiato: [35.222.210.12] => (item = config)
Gioca al riepilogo ********************************************* ************************************************* ************************************************* *************************************************
35.222.210.12: OK = 2 modificato = 1 non raggiungibile = 0 non riuscito = 0 saltato = 0 salvato = 0 ignorato = 0

Il playbook sopra dovrebbe creare più directory, come ~/backups/mysql, ~/backups/repository e ~/backups/config.

$ ls -la

L'output dell'elenco delle directory è come mostrato di seguito:

Totale 0
drwxrwxr-x. 5 Debian Debian 51 Mar 6 17:26 .
drwx------. 6 Debian Debian 117 mar 6 17: 26 ..
drwxrwxr-x. 2 Debian Debian 6 marzo 6 17:26 Config
drwxrwxr-x. 2 Debian Debian 6 marzo 6 17:26 Mysql
drwxrwxr-x. 2 Debian Debian 6 marzo 6 17:26

Come impostare le autorizzazioni per una directory

Ansible consente di specificare le autorizzazioni per una directory utilizzando la direttiva di modalità. Considera il seguente playbook, che crea una directory e imposta le autorizzazioni:

- Host: tutto
compiti:
- Nome: Ansible Crea Directory e Imposta autorizzazioni
file:
Path: /Backups
Stato: directory
Modalità: "U = RW, G = WX, O = RWX"
Diventa: sì

Nella voce sopra, abbiamo creato una directory in /. Avevamo anche bisogno di diventare root, quindi il diventato: sì entrata.

$ ansible-playbook autorizzazione.YML Play [All] ******************************************* ************************************************* ************************************************* ************************************************* ***
Attività [raccolta fatti] ******************************************* ************************************************* ************************************************* ***************************************
Immettere passphrase per la chiave '/home/utente/.SSH/ID_RSA ':
OK: [35.222.210.12]
Attività [ansible crea directory e imposta autorizzazioni] ***************************************** ************************************************* ************************************************* ****************
Cambiato: [35.222.210.12]
Gioca al riepilogo ********************************************* ************************************************* ************************************************* *************************************************
35.222.210.12: OK = 2 modificato = 1 non raggiungibile = 0 non riuscito = 0 saltato = 0 salvato = 0 ignorato = 0

Se visualizzi le autorizzazioni della directory che abbiamo creato, vedrai quanto segue:

$ ls -lrt / | backup grep

L'output è come mostrato di seguito:

drw --wxrwx. 2 Root Root 6 Mar 6 17:36 Backups

Come modificare ricorsivamente le autorizzazioni in una directory

Per modificare le autorizzazioni di una directory e dei suoi file in modo ricorsivo, basta specificare la voce ricorsiva, come mostrato di seguito:

- Host: tutto
compiti:
- Nome: Ansible Crea Directory e Imposta autorizzazioni
file:
Path: /Backups
Stato: directory
Modalità: "U = RW, G = WX, O = RWX"
Ricorsivo: sì
Diventa: sì

Come impostare le autorizzazioni in più directory

La configurazione delle autorizzazioni per più directory in Ansible è anche semplice come alcune righe di voci. Considera il seguente playbook.

- Host: tutto
compiti:
- Nome: Ansible Crea directory Mutliple con autorizzazioni
file:
Path: "Item.sentiero "
modalità: "item.modalità"
Stato: directory
with_items:
- Path: '~/backups/mysql', modalità: '0777'
- Path: '~/backups/repository', modalità: '0755'
- Path: '~/backups/config', modalità: '0707'

Come eliminare una directory in Ansible

Per rimuovere una directory e tutti i suoi contenuti usando un playbook Ansible, specificare lo stato come assente, come mostrato di seguito:

- Host: tutto
compiti:
- Nome: Directory Ansible Elimina
file:
Path: /Backups
Stato: assente
Diventa: sì

Questo comando rimuoverà la directory e tutti i file e le directory dei bambini.

NOTA: Assicurati di avere autorizzazioni per la directory su cui stai lavorando.

Come creare una directory temporanea

In alcuni casi, potrebbe essere necessario creare una directory con un timestamp collegato ad essa, che può essere molto utile, specialmente quando si crea backup. Per creare una directory temporanea, possiamo usare la variabile Ansible_Date_time.

Considera il seguente playbook:

- Host: tutto
compiti:
- Nome: Ansible Aggiungi timestamp alla directory
file:
Path: "/backups/mysql ansible_date_time.data"
Stato: directory
Modalità: "0777"
Diventa: sì

Una volta eseguito il playbook, avrai una directory con il timestamp.

$ ls -l

L'elenco della directory dovrebbe essere come mostrato di seguito:

Totale 0 drwxrwxrwx. 2 Root Root 6 mar 6 18:03 Mysql2021-03-06

NOTA: Per evitare errori, controlla sempre la sintassi del file YAML che si intende utilizzare in Ansible.

Conclusione

Questo tutorial ti ha mostrato che lavorare con i moduli Ansible è molto semplice e intuitivo, rendendo più semplice l'automazione di attività complesse. Utilizzando il modulo file Ansible, è possibile creare una o più directory e aggiungere autorizzazioni per ciascuno. È inoltre possibile utilizzare lo stesso modulo per rimuovere una directory per ulteriori informazioni su come utilizzare il modulo di file Ansible, controlla la documentazione ufficiale nella pagina delle risorse.