Ansible è uno strumento di automazione IT open source utilizzato per automatizzare la gestione della configurazione, il provisioning, la distribuzione delle applicazioni, l'orchestrazione e molti altri processi IT senza la necessità di installare agenti sui nodi client. Si basa sul protocollo SSH per comunicare con i nodi client. Ansible offre facilità d'uso e installazione rispetto ad altri strumenti simili come puppet, chef, terraform ecc. In questo tutorial impareremo come installare Ansible su CentOS 8 Linux e configurarlo.
Installa Ansible su CentOS 8 Linux
Passaggio 1: Installa e abilita EPEL
deposito
[root@install-ansible ~]# dnf install epel-release -y
Passaggio 2: Scarica l'indice remoto dei pacchetti nella cache del file locale per velocizzare il successivo dnf
comandi.
[root@install-ansible ~]# dnf makecache CentOS Linux 8 - AppStream 2.6 kB/s | 4.3 kB 00:01 CentOS Linux 8 - BaseOS 2.6 kB/s | 3.9 kB 00:01 CentOS Linux 8 - Extras 1.0 kB/s | 1.5 kB 00:01 Extra Packages for Enterprise Linux 8 - x86_64 8.7 kB/s | 11 kB 00:01 Extra Packages for Enterprise Linux Modular 8 - x86_64 9.6 kB/s | 10 kB 00:01 Remi's Modular repository for Enterprise Linux 8 - x86_64 501 B/s | 833 B 00:01 Safe Remi's RPM repository for Enterprise Linux 8 - x86_64 802 B/s | 833 B 00:01 Metadata cache created.
Passaggio 3: Installa Ansible
[root@install-ansible ~]# dnf install ansible -y Last metadata expiration check: 0:02:17 ago on Tue 01 Mar 2022 10:28:48 AM IST. Dependencies resolved. ============================================================================================================================================================= Package Architecture Version Repository Size ============================================================================================================================================================= Installing: ansible noarch 2.9.27-1.el8 epel 17 M Installing dependencies: python3-bcrypt x86_64 3.1.6-2.el8.1 epel 44 k python3-jmespath noarch 0.9.0-11.el8 appstream 45 k python3-pyasn1 noarch 0.3.7-6.el8 appstream 126 k python3-pynacl x86_64 1.3.0-5.el8 epel 100 k sshpass x86_64 1.06-9.el8 epel 27 k Installing weak dependencies: python3-paramiko noarch 2.4.3-1.el8 epel 289 k Transaction Summary ============================================================================================================================================================= Install 7 Packages Installed: ansible-2.9.27-1.el8.noarch python3-bcrypt-3.1.6-2.el8.1.x86_64 python3-jmespath-0.9.0-11.el8.noarch python3-paramiko-2.4.3-1.el8.noarch python3-pyasn1-0.3.7-6.el8.noarch python3-pynacl-1.3.0-5.el8.x86_64 sshpass-1.06-9.el8.x86_64 Complete!
Passaggio 4: Verifica l'installazione di ansible
[root@install-ansible ~]# ansible --version ansible 2.9.27 config file = /etc/ansible/ansible.cfg configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python3.6/site-packages/ansible executable location = /usr/bin/ansible python version = 3.6.8 (default, Sep 10 2021, 09:13:53) [GCC 8.5.0 20210514 (Red Hat 8.5.0-3)]
Configura Ansible su CentOS 8
Considera l'architettura seguente per questo tutorial. Puoi estendere lo stesso a n numero di client.
Gestione/amministrazione dei client da Ansible Server
Per la gestione dei client, SSH deve essere installato e in esecuzione. Le porte SSH devono essere aperte e accessibili da Ansible Server.
Passaggio 5: Apri /etc/hosts
file su ansible-server
In questo articolo useremo /etc/hosts
file per la risoluzione dei nomi DNS degli indirizzi IP dei client
[root@ansible-server ~]# vim /etc/hostsIndirizzo IP o Nomi DNS per i client
È possibile utilizzare l'indirizzo IP o i nomi DNS dei client da gestire
Aggiungi le voci seguenti all'indirizzo IP e al nome host del client Ansible
10.180.10.122 ansible-client
Impostazione dell'autenticazione senza password SSH
Passaggio 6: Genera chiavi SSH su Ansible Server (Management Node) senza che venga richiesta una passphrase.
[centos@ansible-server ~]$ ssh-keygen -f id_rsa -t rsa -N '' Generating public/private rsa key pair. Your identification has been saved in id_rsa. Your public key has been saved in id_rsa.pub. The key fingerprint is: SHA256:vqvgSILGrVxCDsLuORbJojxiYDEFEFlNQi5ZrHeqYhE centos@ansible-server The key's randomart image is: +---[RSA 3072]----+ |+B*o. | |.+.o. | |o.o | |oE. . | |++=o S | |@*o . | |OB+o. . | |OX=o . . | |*=+ . ..o. | +----[SHA256]-----+
Passaggio 7: Copia le chiavi SSH su Ansible Client
[centos@ansible-server ~]$ ssh-copy-id centos@ansible-client /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/centos/.ssh/id_rsa.pub" The authenticity of host 'ansible-client (10.180.141.122)' can't be established. ECDSA key fingerprint is SHA256:oDKa1jiDVmPzHmD0HqKr5v10xhalFVbklrdudxAFx5M. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes /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 centos@ansible-client's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'centos@ansible-client'" and check to make sure that only the key(s) you wanted were added.Richiesta password per l'utente centos su ansible-client
Digitare per la prima volta la password di accesso per l'utente centos su Ansible-client. Dopo aver copiato le chiavi SSH, sarai in grado di accedere utilizzando senza password
Passaggio 8: Verifica la connessione senza password
[centos@ansible-server ~]$ ssh centos@ansible-client Last login: Tue Mar 1 05:57:15 2022 from 10.180.6.115 [centos@ansible-client ~]$
Passaggio 9: Accesso sudo per centos
utente su ansible-client
Assicurati, i centos
l'utente su ansible-client ha accesso sudo senza password. Questo aiuta ansible eseguire qualsiasi root
comandi su ansible-client usando centos
utente.
# visudo ## Add the below content centos ALL=(ALL) NOPASSWD:ALL
Ora ansible-client è pronto per essere gestito da ansible-server (Management Node) utilizzando centos
utente su ansible-client.
Come usare Ansible
Passaggio 10: Crea inventario Ansible
Ansible mantiene un elenco di tutte le informazioni del client remoto che gestisce in un file chiamato inventory
file. Il file di inventario di Ansible è solo un semplice file di testo e il percorso predefinito del file è:/etc/ansible/hosts
Possiamo creare un file di inventario Ansible in una posizione diversa da quella predefinita.
[centos@ansible-server ~]$ mkdir ~/ansible [centos@ansible-server ~]$ cd ~/ansible [centos@ansible-server ansible]$ vim hosts
Aggiungi tutte le voci del cliente ansible
ansible-client ansible_user=centosansible_user opzione nel file ansible/hosts
L'opzione ansible_user viene utilizzata per definire l'utente su ansible-client che eseguirà i comandi.
File Ansible Inventory:combinazione di nome host e indirizzo IPPuoi anche combinare indirizzi IP e nomi DNS dei client remoti nel file di inventario
10.180.10.122 ansible_user=centosRaggruppa i client remoti nel file di inventario
Puoi anche raggruppare i client remoti nel file di inventario in base all'utilizzo. Ad esempio, se hai 4 client come server web e 2 come server db.
[centos] ansible-client ansible_user=centos
Passaggio 11: Elenca tutti gli host dal file di inventario
[centos@ansible-server ansible]$ ansible -i hosts --list-hosts all hosts (1): ansible-client
Passaggio 12: Verifica che gli host siano attivi
[centos@ansible-server ansible]$ ansible -i hosts -m ping all ansible-client | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" }
Passaggio 13: Esegui comandi sul client ansible remoto (basato su tutti/nome gruppo)
[centos@ansible-server ansible]$ ansible -i hosts -m shell -a "more /etc/redhat-release" ansible-client ansible-client | CHANGED | rc=0 >> CentOS Linux release 7.8.2003 (Core)
Questo è tutto! Ora inizia a gestire i tuoi clienti remoti utilizzando ansible a modo tuo.
Ansible Playbook aiuta a gestire i tuoi server più facilmente effettuando complesse azioni IT eseguite con un coinvolgimento umano limitato o nullo. Cercheremo di trattare Ansible Playbook nel nostro prossimo articolo.