I fatti personalizzati (fatti locali) sono le variabili dichiarate su un host gestito ansible. I fatti personalizzati vengono dichiarati nel file ini o json nella directory /etc/ansible/facts.d sull'host gestito. I nomi dei file dei fatti personalizzati devono avere l'estensione .fact.
In questo articolo, illustreremo come creare e utilizzare i fatti personalizzati per installare il file server samba e avviarne il servizio su un host gestito ansible. Qui stiamo usando host1 e host2 come parte del gruppo di fileserver nell'inventario.
Per dimostrare fatti personalizzati, di seguito è riportata la configurazione del mio lab
- control.example.com — 10.20.0.57
- host1.example.com — 10.20.0.10 // Ansible Managed Host
- host3.example.com — 10.20.0.30 // Host gestiti da Ansible
Nota : L'utente devops è configurato su un controllo ansible e gestisce host con diritti sudo. L'inventario e il file ansible.cfg sono definiti nella directory /home/develops/install. I contenuti del mio inventario sono mostrati di seguito:
[[email protected] install]$ cat inventory [fileservers] host1.example.com host3.example.com [dbservers] host2.example.com host1.example.com [[email protected] install]$
I passaggi logici per dichiarare e utilizzare fatti locali personalizzati sono
- Crea un file fact su un host di controllo ansible con estensione .fact
- Crea una riproduzione nel playbook per creare una cartella "/etc/ansible/facts.d" e copiare il file dei fatti sugli host gestiti in questa cartella.
- Crea la seconda riproduzione nel playbook che utilizzerà questi fatti personalizzati utilizzando ansible_local.
. . per installare il server samba e avviarne il servizio.
Immergiamoci nell'effettiva implementazione di fatti personalizzati o locali.
Passaggio 1) Crea un file dei fatti personalizzato sul nodo di controllo
Creiamo il file customfacts.fact con i seguenti contenuti
[[email protected] install]$ cat customfacts.fact [localfacts] pkgname = samba srvc = smb [[email protected] install]$
Qui localfacts è factname e pkgname e srvc sono variabili.
Passaggio 2) Crea un playbook con due riproduzioni diverse
Crea il playbook customfacts-install.yaml con i seguenti contenuti
[[email protected] install]$ vi customfacts-install.yaml --- - name: Install custom facts hosts: fileservers vars: remote_dir: /etc/ansible/facts.d facts_file: customfacts.fact tasks: - name: Create Facts Dir on Managed Hosts file: path: "{{ remote_dir }}" state: directory recurse: yes - name: Copy Contents to Facts file copy: src: "{{ facts_file }}" dest: "{{ remote_dir }}" - name: Install Samba Server with Custom Facts hosts: fileservers tasks: - name: Install SMB package: name: "{{ ansible_local.customfacts.localfacts.pkgname }}" state: present - name: Start SMB Service service: name: "{{ ansible_local.customfacts.localfacts.srvc }}" state: started enabled: yes
salva ed esci dal file.
Passaggio 3) Esegui il playbook sui server di file
Eseguiremo il playbook su file server, prima di eseguirlo, verifichiamo la connettività dal nodo di controllo verso questi nodi.
[[email protected] install]$ ansible fileservers -m ping
Sopra conferma che il ping pong funziona bene, quindi eseguiamo il playbook ansible usando il comando sotto,
[[email protected] install]$ ansible-playbook customfacts-install.yaml
L'output sopra mostra che il playbook è stato eseguito correttamente. Verifichiamo l'installazione dei fatti personalizzati e del servizio samba.
Passaggio 5) Verifica i fatti locali personalizzati e il servizio Samba
Esegui sotto il comando ad hoc ansible per verificare l'installazione dei fatti personalizzati
[[email protected] install]$ ansible fileservers -m setup -a "filter=ansible_local"
Verifica lo stato del servizio del server samba eseguendo di seguito:
[[email protected] install]$ ansible fileservers -m command -a "systemctl status smb"
Perfetto, l'output sopra conferma che Samba è stato installato correttamente e il suo servizio è attivo e funzionante.
Questo è tutto da questo articolo, spero che tu abbia un'idea di base sull'installazione dei fatti personalizzati e sul suo utilizzo.