Abile è uno strumento gratuito di gestione della configurazione e supporta la gestione delle configurazioni di sistemi simili a Unix e Microsoft Windows. Abile gestisce i nodi su SSH o PowerShell e python da installare su di essi.
Abile ti aiuta a eseguire la configurazione, la gestione e l'implementazione del software su centinaia di nodi utilizzando SSH, l'intera operazione può essere eseguita da un unico comando ansible
. Ma, in alcuni casi, potrebbe essere necessario eseguire più comandi per la distribuzione.
Questa guida ti aiuterà a installare Ansible su CentOS 7 / Ubuntu 18.04 / Ubuntu 16.04 / Debian 9 .
Architettura
Se utilizzi altri strumenti di gestione della configurazione come puppet, chef e CFEngine, il software del server viene installato su una macchina e le macchine client vengono gestite tramite l'agente. In Ansible, i nodi sono gestiti controllando la macchina (server Ansible) su SSH, quindi non ci sarà alcun agente in esecuzione sulle macchine dei nodi.
Ansible distribuisce i moduli ai nodi tramite SSH e questi moduli vengono temporaneamente archiviati nei nodi e comunicano con il server Ansible tramite un protocollo JSON. I moduli non sono altro che uno script scritto in Python, Perl, Ruby , bash, ecc.
Requisiti di sistema
Macchina di controllo
Puoi eseguire Ansible su qualsiasi macchina su cui è installato Python 2.6 o 2.7 (Windows non è supportato per la macchina di controllo).
Supporta Red Hat, Debian, CentOS, OS X, qualsiasi BSD.
Nodi client
Le macchine client dovrebbero avere almeno Python 2 (versione 2.6 o successive) o Python 3 (versione 3.5 o successive)
Se hai SELinux abilitato su nodi remoti, dovrai installare libselinux-python
pacchetto sui nodi prima di utilizzare qualsiasi funzione correlata a copia/file/modello in Ansible
Ambiente
Nome host | Indirizzo IP | OS | Scopo |
---|---|---|---|
server.itzgeek.local | 192.168.1.10 | CentOS 7 / Ubuntu 18.04 / Debian 9 | Macchina di controllo |
node1.itzgeek.local | 192.168.1.20 | CentOS 7 | Nodo gestito 1 |
node2.itzgeek.local | 192.168.1.30 | Ubuntu 18.04 | Nodo gestito 2 |
Installa Ansible su CentOS 7/RHEL 7/Ubuntu 18.04/16.04 e Debian 9
Impostazione della macchina di controllo
Per installare Ansible, dovremo Abilitare il repository EPEL su CentOS 7 / RHEL 7 .
### CentOS 7 ### yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm ### RHEL 7 ### subscription-manager repos --enable rhel-7-server-ansible-2.6-rpms ### Ubuntu 18.04 / Ubuntu 16.04 ### sudo apt-get update sudo apt-get install software-properties-common sudo apt-add-repository ppa:ansible/ansible sudo apt-get update ### Debian 9 ### sudo apt-get install dirmngr sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367 echo "deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main" | sudo tee -a /etc/apt/sources.list.d/ansible.list sudo apt-get update
Installa Ansible.
### CentOS 7 / RHEL 7 & Fedora 28 ### yum install -y ansible ### Ubuntu 18.04 / 16.04 & Debian 9 ### sudo apt-get install -y ansible
Una volta installato Ansible, verifica la versione di Ansible eseguendo il comando seguente.
ansible --version
Risultato:
ansible 2.6.3 config file = /etc/ansible/ansible.cfg configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python2.7/site-packages/ansible executable location = /usr/bin/ansible python version = 2.7.5 (default, Jul 13 2018, 13:06:57) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]
Imposta nodi gestiti
Le macchine client devono avere almeno Python 2 (versione 2.6 o successive) o Python 3 (versione 3.5 o successive).
### CentOS 7 / RHEL 7 & Fedora ### yum install -y python ### Ubuntu 18.04 / 16.04 & Debian 9 ### sudo apt-get install -y python
SELinux (CentOS / RHEL / Fedora)
Se hai SELinux abilitato sui nodi gestiti, dovrai installare il pacchetto sottostante sui nodi prima di utilizzare qualsiasi funzione relativa a copia/file/modello in Ansible.
yum install -y libselinux-python
Autenticazione SSH
Come detto in precedenza, Ansible utilizza OpenSSH nativo per la comunicazione remota. Ansible supporta entrambi senza password e password autenticazione per eseguire comandi sui nodi gestiti.
Autenticazione con chiave SSH (autenticazione senza password)
Quando si tratta di autenticazione ssh, per impostazione predefinita, utilizza le chiavi ssh (autenticazione senza password) per autenticarsi con la macchina remota.
LEGGI :Come configurare l'accesso senza password SSH su CentOS 7 / RHEL 7
Sebbene il collegamento sopra sia per CentOS, i passaggi in esso contenuti funzioneranno anche per Ubuntu / Debian.Una volta impostata la comunicazione senza password, verificala.
ssh [email protected] ssh [email protected]
Ora dovresti essere in grado di accedere alla macchina remota senza la password.
Autenticazione password
L'autenticazione con password può essere utilizzata anche ove necessario fornendo l'opzione --ask-pass
. Questa opzione richiede sshpass alla macchina di controllo.
### CentOS 7 / RHEL 7 & Fedora ### yum install -y sshpass ### Ubuntu 18.04 / 16.04 & Debian 9 ### sudo apt-get update sudo apt-get install -y sshpassQui, per questa demo, ho utilizzato la comunicazione senza password tra il nodo di controllo ansible e i nodi gestiti.
Nome utente del server Ansible =root
Nome utente del nodo gestito =raj
Crea inventario Ansible
Modifica (o crea) /etc/ansible/hosts file. Questo file contiene l'inventario degli host remoti a cui Ansible si connetterà tramite SSH per gestirli.
### CentOS 7 / RHEL 7 & Fedora ### vi /etc/ansible/hosts ### Ubuntu 18.04 / 16.04 & Debian 9 ### sudo nano /etc/ansible/hosts
Metti uno o più sistemi remoti e raggruppalo. Qui ho aggiunto entrambe le macchine al gruppo dei server demo.
I gruppi vengono utilizzati per classificare i sistemi per un uso particolare. Se non specifichi alcun gruppo, agiranno come host non raggruppati.
[demo-servers] 192.168.1.20 192.168.1.30
Primo comando
Ora è il momento di controllare tutti i nostri nodi semplicemente facendo un ping dalla macchina di controllo, per farlo useremo il comando ansible con le opzioni -m (carica modulo) e tutti (tutti i server).
# all servers - Works when both server's and client's user name are same (Passwordless) ansible all -m ping # all servers - "raj" is managed node's user (Passwordless) ansible all -u raj -m ping OR # Only demo-servers group - "raj" is managed node's user (Passwordless) ansible demo-servers -u raj -m ping OR # If you use password authendication ansible -m ping all -u raj --ask-pass
Risultato:
192.168.1.20 | SUCCESS => { "changed": false, "ping": "pong" } 192.168.1.30 | SUCCESS => { "changed": false, "ping": "pong" }
Nell'esempio sopra, abbiamo utilizzato il modulo ping con ansible comando per eseguire il ping di tutti o di un gruppo di host remoti.
Allo stesso modo, possiamo utilizzare vari moduli con ansible comando, puoi trovare i moduli disponibili qui .
Qui, per questa demo, ho utilizzato la comunicazione senza password tra il nodo di controllo ansible e i nodi gestiti.Nome utente del server Ansible =root
Nome utente del nodo gestito =raj
Quindi, tutti i miei comandi ansible avranno
-u raj
Esecuzione remota dei comandi
Questa volta utilizzeremo il comando modulo con ansible comando per ottenere informazioni sulla macchina remota.
Ad esempio, eseguiremo nome host comando con comando modulo per ottenere il nome hostname degli host remoti in una volta sola.
ansible -m command -a "hostname" -u raj demo-servers
Risultato:
192.168.1.30 | SUCCESS | rc=0 >> node2.itzgeek.local 192.168.1.20 | SUCCESS | rc=0 >> node1.itzgeek.local
Otterremo i dettagli della partizione con il comando seguente.
ansible -m command -a "df -hT" -u raj demo-servers
Risultato:
192.168.1.30 | SUCCESS | rc=0 >> Filesystem Type Size Used Avail Use% Mounted on udev devtmpfs 1.9G 0 1.9G 0% /dev tmpfs tmpfs 395M 1.5M 393M 1% /run /dev/sda4 ext4 94G 4.9G 84G 6% / tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup /dev/loop0 squashfs 87M 87M 0 100% /snap/core/4486 /dev/loop3 squashfs 3.4M 3.4M 0 100% /snap/gnome-system-monitor/36 /dev/loop1 squashfs 1.7M 1.7M 0 100% /snap/gnome-calculator/154 /dev/loop2 squashfs 141M 141M 0 100% /snap/gnome-3-26-1604/59 /dev/loop4 squashfs 21M 21M 0 100% /snap/gnome-logs/25 /dev/loop5 squashfs 88M 88M 0 100% /snap/core/5328 /dev/loop6 squashfs 13M 13M 0 100% /snap/gnome-characters/69 /dev/sda1 vfat 93M 4.6M 88M 5% /boot/efi tmpfs tmpfs 395M 28K 395M 1% /run/user/120 tmpfs tmpfs 395M 36K 395M 1% /run/user/1000 /dev/loop7 squashfs 15M 15M 0 100% /snap/gnome-logs/40 192.168.1.20 | SUCCESS | rc=0 >> Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/centos-root xfs 50G 1.1G 49G 3% / devtmpfs devtmpfs 1.4G 0 1.4G 0% /dev tmpfs tmpfs 1.5G 0 1.5G 0% /dev/shm tmpfs tmpfs 1.5G 8.5M 1.4G 1% /run tmpfs tmpfs 1.5G 0 1.5G 0% /sys/fs/cgroup /dev/sda1 xfs 1014M 188M 827M 19% /boot /dev/mapper/centos-home xfs 46G 33M 46G 1% /home tmpfs tmpfs 287M 0 287M 0% /run/user/1000 tmpfs tmpfs 287M 0 287M 0% /run/user/0
Per controllare il tempo di attività e caricare i dettagli su entrambi i nodi.
ansible -m command -a "uptime" -u raj demo-servers
Risultato:
192.168.1.30 | SUCCESS | rc=0 >> 16:36:45 up 56 min, 3 users, load average: 0.00, 0.00, 0.00 192.168.1.20 | SUCCESS | rc=0 >> 16:36:45 up 1:09, 2 users, load average: 0.05, 0.04, 0.05
Puoi anche controllare il contenuto di un particolare file.
ansible -m command -a "cat /etc/resolv.conf" -u raj demo-servers
Risultato:
192.168.1.30 | SUCCESS | rc=0 >> # This file is managed by man:systemd-resolved(8). Do not edit. # # This is a dynamic resolv.conf file for connecting local clients to the # internal DNS stub resolver of systemd-resolved. This file lists all # configured search domains. # # Run "systemd-resolve --status" to see details about the uplink DNS servers # currently in use. # # Third party programs must not access this file directly, but only through the # symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way, # replace this symlink by a static file or a different symlink. # # See man:systemd-resolved.service(8) for details about the supported modes of # operation for /etc/resolv.conf. nameserver 127.0.0.53 192.168.1.20 | SUCCESS | rc=0 >> # Generated by NetworkManager search itzgeek.local nameserver 8.8.8.8 nameserver 192.168.1.1
Puoi anche salvare l'output in qualsiasi file reindirizzando come di seguito.
ansible -m command -a "cat /etc/resolv.conf" -u raj demo-servers > /tmp/ouput_file cat /tmp/ouput_file
In questo modo, puoi eseguire molti comandi della shell usando ansible.
Ora hai installato con successo Ansible su CentOS 7 / Ubuntu 18.04 / Ubuntu 16.04 / Debian 9 .
LEGGI DI PIÙ :Come creare playbook Ansible per l'automazione IT
Questo è tutto.