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

Come installare e configurare Ansible su CentOS 8 / RHEL 8

Ansible è uno strumento di gestione della configurazione e del provisioning software open source per sistemi operativi simili a Unix e Microsoft Windows.

A differenza di Puppet, Chef e CFEngine, il software del server è installato su una macchina e le macchine client sono gestite tramite il software dell'agente. In Ansible, i nodi sono gestiti controllando il nodo (server Ansible) su SSH, quindi non ci sarà alcun software agente in esecuzione su macchine con nodo gestito (server client).

Ansible può eseguire il deployment, la gestione della configurazione del software su centinaia di nodi utilizzando SSH, l'intera operazione viene normalmente 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 8 / RHEL 8.

Ambiente

Nome host Indirizzo IP OS Scopo
server.itzgeek.local 192.168.0.10 CentOS 8 / RHEL 8 Macchina di controllo
node1.itzgeek.local 192.168.0.20 CentOS 8 Nodo gestito 1
node2.itzgeek.local 192.168.0.30 CentOS 7 Nodo gestito 2

Installa Ansible su CentOS 8 / RHEL 8

Installazione del nodo di controllo

Per installare Ansible, dovremo abilitare il repository EPEL e Ansible rispettivamente su CentOS 8 e RHEL 8.

### CentOS 8 ###

yum install -y epel-release

### RHEL 8 ###

subscription-manager repos --enable ansible-2.9-for-rhel-8-x86_64-rpms

Installa Ansible con il comando yum.

yum install -y ansible

Una volta installato Ansible, verifica la versione di Ansible eseguendo il comando seguente.

ansible --version

Risultato:

ansible 2.8.5
  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, May 21 2019, 23:51:36) [GCC 8.2.1 20180905 (Red Hat 8.2.1-3)]

Imposta nodo gestito

Le macchine client devono avere almeno Python 2 (versione 2.6 o successive) o Python 3 (versione 3.5 o successive).

### CentOS 8 / RHEL 8 ###

yum install -y platform-python

### CentOS 7 / RHEL 7 ###

yum install -y python

SELinux

Se hai SELinux abilitato sui nodi gestiti, dovrai installare il pacchetto seguente sui nodi prima di utilizzare qualsiasi funzione relativa a copia/file/modello in Ansible.

### CentOS 8 / RHEL 8 ###

yum install -y python3-libselinux

### CentOS 7 / RHEL 7 ###

yum install -y libselinux-python

Autenticazione SSH

Come detto in precedenza, Ansible utilizza OpenSSH nativo per la comunicazione remota. Ansible supporta l'autenticazione senza password e password per eseguire comandi sui nodi gestiti.

Qui, per questa demo, ho utilizzato la comunicazione senza password tra il nodo di controllo ansible (root) e i nodi gestiti (root). Tuttavia, ti mostrerò come utilizzare Ansible con l'autenticazione della password.

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 8 / RHEL 8

LEGGI :Come configurare l'accesso senza password SSH su CentOS 7 / RHEL 7

Come saprai, il provisioning del software o le modifiche alla configurazione eseguite sui nodi richiedono privilegi di root o privilegi equivalenti di root (sudo). Quindi, per semplicità, imposta la comunicazione senza password tra l'utente root di Ansible Server e l'utente root dei nodi.

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.

yum install -y sshpass 

Crea inventario Ansible

Il file /etc/ansible/hosts contiene l'inventario degli host remoti a cui Ansible si connetterà tramite SSH/Winrm (Windows) per gestirli. In questo momento vedremo solo come gestire le configurazioni del nodo Linux remoto.

Modifica il file dell'inventario.

vi /etc/ansible/hosts

Inserisci uno o più indirizzi IP o nomi host del sistema remoto. Puoi raggruppare i server con [GROUP_NAME]. 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.

[demoservers]
192.168.0.20
192.168.0.30

Verifica Ansible Connectivity

Verifichiamo la connettività dei nodi utilizzando ping (modulo) dalla macchina di controllo. Per farlo, utilizzeremo il comando ansible con le opzioni -m (modulo di caricamento) e all (tutti i server) o demoserver (un gruppo di nodi).

Questo modulo ping viene spesso utilizzato per risolvere i problemi di connettività di Ansible.
# All servers - If you use passwordless authentication. Current logged in user on Ansible server and remote node's user are same

ansible -m ping all

# All servers - If you use passwordless authentication and the remote user is different from logged in user on Ansible server

ansible -m ping -u raj all

# All servers - If you use password authentication and the remote user is different from logged in user on Ansible server

ansible -m ping all -u raj --ask-pass

# Only demoservers group - If you use passwordless authentication. Current logged in user on Ansible server and remote node's user are same

ansible -m ping demoservers

Risultato:

192.168.1.20 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
192.168.1.30 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

Nell'esempio sopra, abbiamo visto come utilizzare il modulo ping con il comando ansible per eseguire il ping di tutti o un gruppo di host remoti con autenticazione password e password.

Allo stesso modo, possiamo utilizzare vari moduli con comando ansible. Puoi trovare i moduli disponibili qui.

Esegui comando sui nodi

Questa volta, useremo il modulo di comando con il comando ansible per ottenere informazioni sulla macchina remota.

I comandi seguenti vengono scritti presupponendo che si disponga di una comunicazione senza password tra il nodo di controllo e i nodi gestiti. Sto usando un gruppo di server demo per eseguire i comandi.

Controlla il nome host

Nel nostro primo esempio, eseguiremo il comando hostname con il modulo di comando per ottenere il nome hostname dei nodi remoti in una volta sola.

ansible -m command -a "hostname" demoservers

Risultato:

192.168.1.30 | SUCCESS | rc=0 >>
node2.itzgeek.local

192.168.1.20 | SUCCESS | rc=0 >>
node1.itzgeek.local

Controlla il tempo di attività

Per controllare il tempo di attività dei nodi.

 ansible -m command -a "uptime" demoservers

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

Leggi file remoti

Puoi anche visualizzare il contenuto di un particolare file.

ansible -m command -a "cat /etc/hosts" demoservers

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

Reindirizza l'output del file

Puoi anche salvare l'output (sul server Ansible) in qualsiasi file utilizzando il reindirizzamento.

ansible -m command -a "cat /etc/resolv.conf" demoservers > /tmp/ouput_file

cat /tmp/ouput_file

Apporta modifiche alla configurazione su Node

Possiamo usare il modulo lineinfile per modificare i file su nodi remoti. Ad esempio, per aggiungere ulteriori server dei nomi, possiamo utilizzare il comando seguente.

ansible -m lineinfile -a "path=/etc/resolv.conf line=nameserver 8.8.4.4" demoservers

Puoi convalidare le modifiche utilizzando il comando seguente.

ansible -m command -a "cat /etc/resolv.conf | grep -i nameserver" demoservers

Conclusione

È tutto. Ora hai installato con successo Ansible su CentOS 8 / RHEL 8. Puoi procedere con la creazione di playbook Ansible per automatizzare le tue attività.


Cent OS
  1. Come installare Ansible su CentOS 7 / RHEL 7 / Ubuntu 18.04 / 16.04 e Debian 9

  2. Come installare Ansible su CentOS 7

  3. Come installare Ansible su CentOS 8

  4. CentOS / RHEL 7 :Come installare e configurare telnet

  5. Come installare e configurare Samba in CentOS/RHEL

Come installare e configurare samba su RHEL 8 / CentOS 8

Come installare YUM su RHEL 8 / CentOS 8

Come installare mongodb su RHEL 8 / CentOS 8

Come installare Maven su RHEL 8 / CentOS 8

Come installare e configurare Checkmk su CentOS 8 / RHEL 8

Come installare e configurare Jenkins su CentOS 8 / RHEL 8