La struttura dei ruoli in ANSible ci consente di importare automaticamente parametri specifici, azioni, documenti, script e controller che si basano secondo un formato di documento predefinito in Ansible. Il metodo principale per la partizionamento di un playbook in molti documenti è il ruolo. Facilita la creazione di libri di playbook complicati e facilita anche il modo in cui li riutilizzeremo in Ansible. Dividendo il playbook, puoi separarlo in più parti riutilizzabili. Quindi, ogni ruolo è limitato a una caratteristica specifica o ai risultati previsti. Ciascuna delle procedure, necessarie per fornire la conclusione che veniva mantenuta all'interno di quel particolare ruolo stesso, è definita come dipendente in altri ruoli.
Struttura dei ruoli in Ansible
Ora, facciamo capire la struttura di base dei ruoli Ansible. Per utilizzare i ruoli in Ansible, creeremo una nuova directory con l'esatta identità di ogni ruolo. Nel ruolo della gerarchia, i documenti sono organizzati in modo sottodirectory. Per creare la directory, impiegheremo il seguente comando di ruolo ansible-galassia:
[root@master ansible]# ansible-galaxy init win_package_install_role
Dopo aver eseguito il comando sopra, otterremo il seguente risultato desiderato:
- Il ruolo Win_Package_install_role è stato creato correttamente
Poiché Ansible-Galaxy stesso è incluso nello strumento Ansible, non è necessario installare ulteriori componenti per esso. Se si desidera controllare la struttura gerarchica del ruolo e diverse directory con layout modificabile, i documenti verranno visualizzati dopo aver eseguito il comando di seguito:
[root@master ansible]# albero win_package_install_role
Come mostrato, ora abbiamo un totale di 8 directory disponibili nel ruolo denominato "win_package_install_role" e 8 documenti modificabili.
A volte, dobbiamo aggiornare documenti come Readme.MD e Meta/Main.YML per descrivere correttamente il tuo ruolo anche se non è necessario che il ruolo funzioni. È essenziale includere qualsiasi requisito in meta/main.YML Se il ruolo deve accedere a ruoli aggiuntivi da eseguire. Ciò consentirà a Ansible di raggiungere questo problema come necessario. Per entrare nella nuova directory, che abbiamo recentemente creato, scriveremo la dichiarazione di seguito nel terminale.
[root@master ansible]# cd win_package_install_role
Quindi, mostrerà la nuova directory aggiunta al percorso principale mostrato di seguito:
[root@master ansible] ~/win_package_install_role#
Non ci sono prerequisiti necessari per il tuo ruolo win_package_install_role. Un formato meta-file funzionante è mostrato qui come esempio. Se vuoi cambiarlo per riflettere il tuo nome, il nome della tua attività e, se del caso, modifica anche la licenza scrivendo il seguente comando:
[root@master ansible] ~/win_package_install_role# nano meta/main.YML
Specificando i compiti del ruolo in Ansible
Molto spesso, il ruolo svolgerebbe una o anche più attività per impostare il dispositivo remoto secondo i criteri del ruolo. L'installazione e l'impostazione di win_package_install_role è ciò che dovremmo fare in questa situazione.
win_package_install_role /attività /main.YML:
Quando eseguiamo un ruolo, cerca per impostazione predefinita la sottocartella "Attività" per un documento chiamato Main.YML e poi elencheremo tutte le attività. Per ruoli più complessi, è possibile dividere le attività in più documenti e chiamarli da Main.YML utilizzando le attività include o moduli di importazione. Di seguito è riportato il comando che useremo per entrare nella directory dell'attività.
# File di attività per win_package_install_role
- Nome: Fetching Product_name stato di installazione
Win_Shell: 'Get-Itemproperty HKLM: \ software \ wow6432node \ Microsoft \ Windows \ CurrentSion \ Uninstall \* | Where -Object -Property DisplayName -like "*Product_name*" | Format -Table IdentifypingNumber, Nome, DisplayName, LocalPackage -Autosize '
Registro: Installation_Status
- debug:
MSG:
- "Prodotto già installato"
- "Installation_Status.stdout_lines "
Quando: installation_status.stdout_lines è definito e installazione_status.stdout_lines | lunghezza> 0
- Meta: end_play
Quando: installation_status.stdout_lines è definito e installazione_status.stdout_lines | lunghezza> 0
- Nome: Crea directory target se non esiste
win_file:
Path: "target_machine_path"
Stato: directory
- Nome: scarica il programma di installazione
win_get_url:
url: "url_to_download_setup"
dest: "target_machine_path"
Registro: download
Quando: Url_to_download_setup è definito e url_to_download_setup != ""
- set_fact:
package_name_zip: "download.dest "
Quando: scarica.fallito == false
- Nome: decomprimere il pacchetto
win_unzip:
src: "package_name_zip"
dest: "target_machine_path"
delete_archive: sì
Registro: decompress_status
Quando: (package_name_zip è definito) e (".zip "in package_name_zip o".gz "in package_name_zip o".GZ "In package_name_zip)
- Nome: Trova la posizione del file di configurazione
win_find:
Paths: "target_machine_path"
patterns: ["setup_name"]
RECORSE: vero
Registro: risultato
- Nome: Impostazione del percorso di configurazione per il pacchetto Windows fornito
set_fact:
setup_path: "risultato.File [0].sentiero"
Quando: risultato.fallito == falso e risultato.abbinato> 0
- Nome: Installazione "setup_name"
win_package:
Path: "setup_path"
Product_id: auto
Stato: presente
Argomenti: /Q
Registro: stato
- debug:
msg: "setup_name installato correttamente"
Quando: stato.rc == 0
- set_fact:
Reboot_Required: True
Quando: stato.Reboot_Required è definito e stato.Reboot_Required
notificare:
- Riavvia il server Windows
In questo documento, abbiamo svolto compiti come abbiamo recuperato il nome del prodotto. Abbiamo fatto una directory target se la directory non è disponibile. Dobbiamo scaricare l'URL, disprezzare il pacchetto, trovare la posizione della configurazione e abbiamo anche impostato la posizione per il pacchetto di finestre, ecc.
win_package_install_role /default /main.YML:
I parametri predefiniti sono definiti all'interno della directory predefinita. I parametri predefiniti sono quelli con il massimo significato, rendendoli semplici da modificare. Il parametro definito in valori predefiniti/main.YML verrebbe utilizzato se non fosse definito da nessuna parte.
---
# file predefinito per win_package_install_role
Target_machine_path: C: \ ProgramFiles
win_package_install_role /var /main.YML:
Per specificare i parametri richiesti per il ruolo, creiamo un documento VAR in questo passaggio. Per evitare qualsiasi controversia di titolo con parametri al di fuori del ruolo, è un'opzione intelligente che prefiggeremo gli identificatori dei parametri del ruolo.
# file vars per win_package_install_role
url_to_download_setup: https: // archive.Apache.org/dist/httpd/binaries/win32/httpd-2.2.25-win32-x86-no_ssl.MSI
Product_name: Apache
setup_name: httpd-2.2.25-win32-x86-no_ssl.MSI
Target_machine_path: C: \ Installer
win_package_install_role /gestori /main.YML:
I gestori di Ansible saranno conservati all'interno della directory del gestore. I compiti nel documento sono noti come gestori che possono essere contrassegnati durante un gioco per l'esecuzione dopo che è finita. Potremmo impiegare gestori come riteniamo necessari.
# File dei gestori per Win_Package_Install_Role
- Nome: riavvia Windows Server
win_reboot:
Quando: reboot_required
win_package_install_role /meta /main.YML:
Una volta che decidiamo di trasmettere il ruolo in Galaxy.Ansible.com, utilizzeremo la meta directory per contenere metadati dell'autore. Le informazioni sul ruolo di Ansible includono l'editore che è "kalsoom", sistemi di supporto e persone a carico.
galaxy_info:
Autore: Kalsoom
Descrizione: Installa pacchetto Windows fornito
Azienda: Ng Pvt Ltd
Licenza: licenza (GPL-2.0-Or-Later, MIT, ecc.)
min_ansible_version: "2.9 "
Piattaforme:
- Nome: Windows
Creazione di Role_Main.Playbook YML:
In questo playbook, passeremo il nome del ruolo che inizialmente abbiamo creato insieme all'host. Raccoglieremo anche le informazioni relative agli host. Quanto segue è il comando utilizzato per creare il playbook in Ansible:
[Root@Master Ansible]# nano Role_Main.YML
Tutto:
ospiti:
Windows_host:
Ansible_host: 192.168.5.220
Ansible_User: Ansible
Ansible_Password: ******
Ansible_Connection: Winrm
Ansible_port: 5986
ANSIBLE_WINRM_SERVER_CERT_VALIDATION: ignora
Dopodiché, ora eseguiremo la dichiarazione per ottenere l'output desiderato nel terminale:
[root@master ansible]# ansible-playbook Role_main.yml -i host.YML
Conclusione
Il concetto di ruoli e come costruire un ruolo in Ansible è stato trattato in questo articolo. La struttura gerarchica dei ruoli è stata coperta anche. Ogni directory che è stata immagazzinata sotto il ruolo è stata spiegata in dettaglio. Per comprendere come i ruoli vengono utilizzati in Ansible, abbiamo inoltre sviluppato un esempio.