GNU/Linux >> Linux Esercitazione >  >> Cent OS

Come installare Ansible su CentOS 7 / RHEL 7 / Ubuntu 18.04 / 16.04 e Debian 9

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 sshpass
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

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.


Cent OS
  1. Come installare Apache Hadoop su CentOS 7, Ubuntu 18.04 e Debian 9

  2. Come installare Redis su CentOS 7 / RHEL 7 e Ubuntu 18.04 / Ubuntu 16.04

  3. Come installare Ansible su Debian 11

  4. Come installare Ansible su CentOS 8

  5. Come installare SSHFS su CentOS/RHEL/Ubuntu

Come installare Kubernetes su CentOS 7, Ubuntu 18.04/16.04 e Debian 9

Come installare e configurare Ansible su CentOS 8 / RHEL 8

Come installare TeamViewer 15 su Fedora/RHEL/CentOS e Debian/Ubuntu

Come installare VestaCP su Ubuntu/Debian e RHEL/Centos

Come installare Zabbix su RHEL/CentOS e Debian/Ubuntu

Come installare TeamViewer 15 su RHEL/CentOS/Fedora e Debian/Ubuntu