Questo tutorial illustra passo passo l'installazione e la configurazione di Ansible su Redhat Enterprise Linux 8.
Ansible è il principale sistema di gestione della configurazione Open Source. Consente agli amministratori e ai team operativi di controllare facilmente migliaia di server dalla macchina centrale senza installare agenti su di essi.
In questo tutorial imparerai:
- Panoramica Ansible
- Installa e configura Python
- Imposta SSH senza password
- Installa Ansible
- Testare e gestire Ansible

Requisiti e convenzioni software utilizzati
Categoria | Requisiti, convenzioni o versione del software utilizzata |
---|---|
Sistema | Red Hat Enterprise Linux 8 |
Software | Python3, Ansible |
Altro | Accesso privilegiato al tuo sistema Linux come root o tramite sudo comando. |
Convenzioni | # – richiede che i comandi linux dati vengano eseguiti con i privilegi di root direttamente come utente root o usando sudo comando$ – richiede che i comandi linux dati vengano eseguiti come un normale utente non privilegiato |
Panoramica Ansible
Ansible è un motore di automazione IT estremamente semplice che automatizza il provisioning del cloud, la gestione della configurazione, l'implementazione delle applicazioni, l'orchestrazione all'interno dei servizi e molte altre esigenze IT.
Progettato per implementazioni multi-livello sin dal primo giorno, Ansible modella la tua infrastruttura IT descrivendo come tutti i tuoi sistemi sono correlati, invece di gestire un solo sistema alla volta.
Non utilizza agenti e nessuna infrastruttura di sicurezza personalizzata aggiuntiva, quindi è facile da implementare e, soprattutto, utilizza un linguaggio molto semplice (YAML, sotto forma di Ansible Playbooks) che ti consente di descrivere i tuoi lavori di automazione in un modo che si avvicina inglese semplice. Ansible funziona connettendosi ai tuoi nodi e inviando loro piccoli programmi, chiamati "moduli Ansible".
Questi programmi sono scritti per essere modelli di risorse dello stato desiderato del sistema. Ansible quindi esegue questi moduli (su SSH per impostazione predefinita) e li rimuove al termine.
La tua libreria di moduli può risiedere su qualsiasi macchina e non sono richiesti server, demoni o database. In genere lavorerai con il tuo programma terminale preferito, un editor di testo e probabilmente un sistema di controllo della versione per tenere traccia delle modifiche ai tuoi contenuti.
Installa e configura Python
La versione predefinita di Python in RHEL 8 è Python 3.6. Ma Python 2 rimane disponibile in RHEL 8. Se per qualsiasi motivo Python 3.6 manca nell'installazione di Red Hat Enterprise Linux 8, dovrai installarlo manualmente.
Python 3.6 può essere installato su RHEL 8 eseguendo il comando seguente sul tuo terminale. Python deve essere installato sia su Ansible Server che su tutti gli host/client a cui si connetterà.
# yum install python3 Updating Subscription Management repositories. Updating Subscription Management repositories. Last metadata expiration check: 8:59:59 ago on Sun 03 Feb 2019 11:20:51 PM +04. Dependencies resolved. ====================================================================================================================================================== Package Arch Version Repository Size ====================================================================================================================================================== Installing: python36 x86_64 3.6.6-17.el8+2102+a4bbd900 rhel-8-for-x86_64-appstream-beta-rpms 22 k Enabling module streams: python36 3.6 Transaction Summary ====================================================================================================================================================== Install 1 Package Total download size: 22 k Installed size: 22 k Is this ok [y/N]: y Downloading Packages: python36-3.6.6-17.el8+2102+a4bbd900.x86_64.rpm 6.0 kB/s | 22 kB 00:03 ------------------------------------------------------------------------------------------------------------------------------------------------------ Total 6.0 kB/s | 22 kB 00:03 warning: /var/cache/dnf/rhel-8-for-x86_64-appstream-beta-rpms-64aba9de5ea7e089/packages/python36-3.6.6-17.el8+2102+a4bbd900.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f21541eb: NOKEY Red Hat Enterprise Linux 8 for x86_64 - AppStream Beta (RPMs) 3.2 kB/s | 3.3 kB 00:01 Importing GPG key 0xF21541EB: Userid : "Red Hat, Inc. (beta key 2) <security@redhat.com>" Fingerprint: B08B 659E E86A F623 BC90 E8DB 938A 80CA F215 41EB From : /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-beta Is this ok [y/N]: y ... Installed: python36-3.6.6-17.el8+2102+a4bbd900.x86_64 Complete!
Per usare Python 3, digita semplicemente python3
nel terminale.
Avresti dovuto notare che per utilizzare Python 3, il comando è python3 e python2 per Python 2. Cosa succede se le tue applicazioni sono configurate per fare riferimento a python che non è disponibile a livello di sistema. Riceverai il seguente errore bash.
# python -bash: python: command not found
È possibile utilizzare il meccanismo delle alternative per abilitare il comando python senza versione a livello di sistema e impostarlo su una versione specifica. Per impostare Python 3 come predefinito, esegui il comando seguente.
# alternatives --set python /usr/bin/python3
L'esecuzione di python -V dovrebbe mostrare la versione predefinita di Python configurata:
#python -V Python 3.6.6
o avviando Python una console:
# python Python 3.6.6 (default, Oct 16 2018, 01:53:53) [GCC 8.2.1 20180905 (Red Hat 8.2.1-3)] on linux Type "help", "copyright", "credits" or "license" for more information. >>>
Imposta SSH senza password
Crea l'utente ansible
su tutti gli host:
# useradd ansible ; echo "" | passwd --stdin ansible
Inserisci la voce necessaria nel file sudoers /etc/sudoers
per utenti ansible per l'accesso sudo senza password:
ansible ALL=(ALL) NOPASSWD: ALL
Ora genera la chiave SSH in Ansible Server:
$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/ansible/.ssh/id_rsa): Created directory '/home/ansible/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/ansible/.ssh/id_rsa. Your public key has been saved in /home/ansible/.ssh/id_rsa.pub. The key fingerprint is: SHA256:wNt/uNePRkrV+Hhv/DJgteXK2BjOGvPbr9yNigXM2EM ansible@rhel8-ansible-server The key's randomart image is: +---[RSA 2048]----+ | | | . | | o E o | | + * + o| | . S * o * | | . += + +| | ==o@ +.| | OBoO+=| | +o++*BB| +----[SHA256]-----+
Copialo su server remoti come utente ansible:
$ ssh-copy-id ansible@rhel8-ansible-client /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/ansible/.ssh/id_rsa.pub" The authenticity of host 'rhel8-ansible-client (192.168.1.109)' can't be established. ECDSA key fingerprint is SHA256:e+NfCeK/kvnignWDHgFvIkHjBWwghIIjJkfjygR7NkI. Are you sure you want to continue connecting (yes/no)? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys ansible@rhel8-ansible-client's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'ansible@rhel8-ansible-client'" and check to make sure that only the key(s) you wanted were added.
Installa Ansible
Una volta installato Python, procedi con l'installazione di Pip che è un gestore di pacchetti Python che useremo per installare Ansible:
# yum -y install python3-pip Updating Subscription Management repositories. Updating Subscription Management repositories. Last metadata expiration check: 9:03:18 ago on Sun 03 Feb 2019 11:20:51 PM +04. Package python3-pip-9.0.3-4.el8.noarch is already installed. Dependencies resolved. Nothing to do. Complete!
Una volta che abbiamo pip3
installato, utilizzalo per installare Ansible nel sistema di gestione di Ansible come utente ansible.
$ pip3 install ansible --user
Puoi vedere Ansible installato usando il seguente comando:
$ ansible --version ansible 2.7.6 config file = None configured module search path = ['/home/ansible/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /home/ansible/.local/lib/python3.6/site-packages/ansible executable location = /home/ansible/.local/bin/ansible python version = 3.6.6 (default, Oct 16 2018, 01:53:53) [GCC 8.2.1 20180905 (Red Hat 8.2.1-3)]
Test e gestione
Crea il file di inventario Ansible, l'impostazione predefinita è /etc/ansible/hosts
ma puoi copiare il file hosts nella home directory dell'utente ansible. Puoi anche creare un gruppo di host remoti come di seguito nel file hosts.
[web]
192.168.1.105
[db]
192.168.1.107
[app]
192.168.1.108
192.168.1.109
192.168.1.110
Puoi utilizzare il modulo ping per testare Ansible e dopo l'esecuzione riuscita puoi vedere l'output di seguito.
$ ansible -i hosts 192.168.1.109 -m ping 192.168.1.109 | SUCCESS => { "changed": false, "ping": "pong" }
L'opzione -i viene utilizzata per fornire il percorso al file di inventario. Dovresti ottenere lo stesso output per il nome del gruppo "app".
$ ansible -i hosts app -m ping 192.168.1.108 | SUCCESS => { "changed": false, "ping": "pong" } 192.168.1.109 | SUCCESS => { "changed": false, "ping": "pong" } 192.168.1.110 | SUCCESS => { "changed": false, "ping": "pong" }
Conclusione
La semplicità e la capacità di Ansible di ridurre la complessità di altri strumenti lo hanno reso un candidato affidabile per il tuo ambiente. La sua principale preoccupazione è sulla sicurezza e l'affidabilità. Utilizza OpenSSH per il trasporto e il linguaggio è progettato attorno all'audibilità anche da coloro che non hanno familiarità con il programma. Ansible è sufficientemente adatto per la gestione sia di piccole configurazioni con una manciata di istanze che di ambienti aziendali.