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

Come impostare lo strumento Ansible Automation in CentOS 7

Ciao e benvenuto nel nostro articolo su Ansible Automation Tool che è simile a Chef o Puppet. Innanzitutto Ansible è facile da installare, semplice da configurare e di facile comprensione. Nell'IT è molto importante mantenere i tuoi sistemi e processi molto semplici. Ansible viene utilizzato per la gestione della configurazione che aiuta nella configurazione dei server Web e delle applicazioni e semplifica la versione dei file e puoi anche utilizzarlo per gestire diverse configurazioni nei tuoi ambienti di sviluppo, staging e produzione. Viene anche utilizzato per la distribuzione dell'applicazione. Può automatizzare completamente le distribuzioni di applicazioni multi-livello in grado di gestire più server e database di gruppi.

Ansible utilizza SSH per connettersi ai server ed eseguire le attività configurate connettendosi ai client tramite SSH, non è necessario configurare alcun agente speciale. Tutto ciò di cui hai bisogno è un python e un utente in grado di accedere ed eseguire gli script, quindi Ansible inizia a raccogliere informazioni sulla macchina come il sistema operativo e i pacchetti installati e quali altri servizi sono in esecuzione ecc. Successivamente Ansible esegue i playbook in formato file YAML , i playbook sono un insieme di comandi che possono eseguire più attività.

Prerequisiti

In questo tutorial installeremo e configureremo Ansible su CentOS 7 e gestiremo i suoi due nodi per comprenderne le funzionalità.

Nel nostro ambiente di test utilizzeremo tre VM Linux CentOS 7, una per controllare dove è installato il server Ansible e due nodi che saranno gestiti da questa macchina di controllo su SSH. Assicurati di avere Python 2.6 o 2.7 installato sui tuoi nodi di controllo e client per una corretta installazione di Ansible.

Connettiamoci al tuo server di controllo utilizzando un utente root o un utente non root con privilegi sudo per iniziare con Ansible.

Imposta il repository EPEL

Per prima cosa dobbiamo abilitare il repository 'epel' per CentOS 7 sul server di controllo perché il pacchetto Ansible non è disponibile nei repository yum predefiniti.

Per abilitare il repository EPEL su CentOS 7/RHEL 7, digita:

# yum install epel-release

Installazione di Ansible

Ora possiamo installare Ansible su CentOS 7 usando il comando 'yum' che lo installerà includendo le sue dipendenze richieste scegliendo il tasto 'y' per procedere come mostrato.

# yum install ansible

Dopo aver installato correttamente Ansible, puoi verificarne e verificarne la versione installata utilizzando il comando seguente.

# ansible --version

Autenticazione SSH basata su chiavi con nodi

Per eseguire qualsiasi distribuzione/gestione da "localhost" all'host remoto, dobbiamo prima generare chiavi sul server Ansible e copiare la chiave pubblica sui nodi client. Esegui il comando seguente sul tuo server Ansible per generare le sue chiavi pubbliche e private.

# ssh-keygen -t rsa -b 4096

Dopo aver generato la chiave SSH, ora copiala sul server remoto utilizzando il seguente comando per posizionare le chiavi SSH su host remoti.

# ssh-copy-id root@node1_ip

Se stai usando una porta ssh personalizzata, menzionala usando il parametro '-p' nel tuo comando. Ti verrà richiesta la password del tuo nodo client, una volta fornita la password corretta del tuo nodo client, verrà autorizzato con successo.

# ssh-copy-id -p2178 root@node1_ip
The authenticity of host '[72.25.70.83]:2178 ([72.25.70.83]:2178)' can't be established.
ECDSA key fingerprint is 49:8a:9c:D9:35:le:09:3d:5f:31:43:a1:41:94:70:53.
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
Authorized uses only. All activity may be \ monitored and reported.
[email protected]'s password:

Number of key(s) added: 1

Now try logging into the machine, with: "ssh -p '2178' '[email protected]'"
and check to make sure that only the key(s) you wanted were added.

Puoi anche aggiungere manualmente la chiave rsa pubblica del tuo server di controllo ai nodi client. Per farlo, accedi al tuo nodo client e segui i passaggi seguenti.

Per prima cosa copia la chiave dal file '/root/.ssh/id_rsa.pub' e salvala sul nodo client all'interno della home directory del tuo server o di qualsiasi altro utente che desideri autenticare.

[root@centos-7 .ssh]# cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAPNRNS/BVcT7XqHDuSvd8oncAjbNl2ZiYiU22MCNFKN8p/cgcblOZoZS0gjlQHpQLR1wm5hVu7PcxY/JAFX2phKyeZ+dbfQlAQ7HLRaaXWfuonelWgTCcs530bSg6XP3MTDRWjW0ZEFTLaOqVz+Yq2nUP3xRYmRKYNq2PhPRrkoBxnDGlmAsgGDm4gWz2TGE59uYHuXvY2Ys4OPeMFHAp0blR5nJIfVF40RB4uH0U79pp19qZ0vbghEvYUiyD4NMjqG13Ba4YYBQQIphe4GA3OTjBvjVmnmBCWZyDOcO+bWWyyKpabEEZOga3KnsoTw4iQ+d+iUyhPTZOvXaoOFUmrFQo5wWG229/GMJnYe1Qv0D3K3CcAQ== root@centos-7
[root@node2 ~]# vi .ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAPNRNS/BVcT7XqHDuSvd8oncAjbNl2ZiYiU22MCNFKN8p/cgcblOZoZS0gjlQHpQLR1wm5hVu7PcxY/JAFX2phKyeZ+dbfQlAQ7HLRaaXWfuonelWgTCcs530bSg6XP3MTDRWjW0ZEFTLaOqVz+Yq2nUP3xRYmRKYNq2PhPRrkoBxnDGlmAsgGDm4gWz2TGE59uYHuXvY2Ys4OPeMFHAp0blR5nJIfVF40RB4uH0U79pp19qZ0vbghEvYUiyD4NMjqG13Ba4YYBQQIphe4GA3OTjBvjVmnmBCWZyDOcO+bWWyyKpabEEZOga3KnsoTw4iQ+d+iUyhPTZOvXaoOFUmrFQo5wWG229/GMJnYe1Qv0D3K3CcAQ== root@centos-7

Salva ed esci dal file e potrai accedere a entrambi i nodi client dal server di controllo senza richiedere la password di root.

[root@centos-7 ~]# ssh -p 2178 root@node1_ip
[root@centos-7 ~]# ssh -p 2178 root@node2_ip
[root@centos-7 .ssh]# ssh -p 2178 [email protected]
Authorized uses only. All activity may be \ monitored and reported.
Last login: Sun Mar 27 21:42:09 2016 from 12.1.0.90

[root@node1 ~]# exit
logout
Connection to 72.25.10.83 closed.

[root@centos-7 .ssh]# ssh -p 2178 [email protected]
The authenticity of host '[72.25.10.84]:2178 ([72.25.10.84]:2178)' can't be established.
ECDSA key fingerprint is 49:8a:3c:85:55:61:79:1d:1f:21:33:s1:s1:fd:g0:53.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[72.25.10.84]:2178' (ECDSA) to the list of known hosts.
Authorized uses only. All activity may be \ monitored and reported.
Last login: Sun Mar 27 22:03:56 2016 from 12.1.0.90
[root@node2 ~]#
[root@node2 ~]# exit
logout
Connection to 72.25.10.84 closed.

Creazione dell'inventario di host remoti

Dopo aver impostato l'autenticazione delle chiavi SSH tra il server Ansible e i suoi nodi client, ora configureremo quegli host remoti sul server di controllo Ansible modificando il file '/etc/ansible/hosts'. Questo file contiene l'inventario degli host remoti a cui Ansible deve connettersi tramite SSH per la gestione dei sistemi.

Apri il file utilizzando uno dei tuoi editor per configurarlo.

[root@centos-7 ~]# vim /etc/ansible/hosts

Qui nel file di configurazione abbiamo configurato entrambi i nodi client per utilizzare la porta '2178', se utilizzi la porta ssh predefinita, inserirai semplicemente il tuo indirizzo IP host.

Dopo aver salvato il file, eseguiamo il seguente comando ansible con le opzioni '-m' per il modulo per verificare la connettività dal server Ansible ai server remoti.

# ansible -m ping 72.25.10.83
# ansible -m ping 72.25.10.73

Puoi anche usare il comando belo per eseguire il ping di tutti i tuoi host configurati.

[root@centos-7 ~]# ansible all -m ping
72.25.10.83 | success >> {
"changed": false,
"ping": "pong"
}

72.25.10.73 | success >> {
"changed": false,
"ping": "pong"
}

Esecuzione di comandi remoti

Negli esempi precedenti abbiamo appena utilizzato il modulo ping per eseguire il ping degli host remoti. Sono disponibili vari moduli per eseguire comandi su host remoti. Ora useremo il modulo "comando" con il comando "ansible" per ottenere informazioni sulla macchina remota come informazioni sul nome host del sistema, spazio libero su disco e tempo di attività come mostrato.

# ansible -m command -a 'hostnamectl' 72.25.10.83
# ansible -m command -a 'df -h' 72.25.10.83
# ansible -m command -a 'uptime' 72.25.10.83

Allo stesso modo puoi eseguire molti comandi della shell usando ansible sul singolo host del client e sul gruppo dei tuoi host simili come se avessi un gruppo configurato di "server web" nel tuo file di inventario dell'host ansible, allora eseguirai il comando così.

# ansible -m command -a "uptime" web-servers

Creazione di Playbook in Ansible

I playbook sono gli script di gestione della configurazione di Ansible utilizzati per gestire le configurazioni e le distribuzioni su macchine remote. I playbook contengono una serie di criteri che desideri vengano implementati nei tuoi sistemi remoti.

Creiamo il tuo primo playbook con il nome del file come 'httpd.yml', quindi configureremo un host per eseguire un server web apache. Qui sceglierai le configurazioni a quali macchine nella tua infrastruttura indirizzare e quale utente remoto per completare le attività come mostrato nel file di configurazione.

[root@centos-7 ~]# vi httpd.yml
---
- hosts: 72.25.10.83
  remote_user: root
  tasks:
  - name: Installing Latest version of Apache
    yum: pkg=httpd state=latest
  - name: Copying the demo file
    template: src=/etc/ansible/index.html dest=/var/www/html
              owner=apache group=apache mode=0644
  - name: (Enable it on System Boot)
    service: name=httpd enabled=yes
    notify:
      - start apache
  handlers:
    - name: start apache
      service: name=httpd state=started

Salva e chiudi il file, quindi crea un file html demo che verrà inserito nella radice del documento predefinita degli host remoti.

[root@centos-7 ~]# vi /etc/ansible/index.html
Installing Apache by Ansible

Apache Web Server is installed by Ansible

Congratulations, Apache is managed through Ansible

Informazioni sulle configurazioni del Playbook

Poiché abbiamo creato il nostro primo playbook, ora è importante capire come funziona. Tutti i file YAML devono iniziare con (tre trattini) '---', che indica l'inizio di un documento. Quindi la riga host è un elenco di uno o più gruppi o modelli host separati da due punti. Puoi menzionare l'account utente remoto insieme all'host.

---
- hosts: 72.25.10.83
  remote_user: root

Quindi abbiamo una serie di attività, in cui ogni riproduzione contiene un elenco di attività, che vengono eseguite in ordine, una alla volta, contro tutte le macchine corrispondenti al modello host, prima di passare all'attività successiva.

tasks:
- name: Installing Latest version of Apache
  yum: pkg=httpd state=latest
- name: Copying the demo file
  template: src=/etc/ansible/index.html dest=/var/www/html
            owner=apache group=apache mode=0644
- name: (Enable it on System Boot)
  service: name=httpd enabled=yes

Ogni attività dovrebbe avere un nome, che è incluso nell'output. Questo è l'output per noi, quindi è bello avere descrizioni ragionevolmente buone di ogni passaggio dell'attività. Quindi, la nostra prima attività installerà l'ultima versione di apache, la seconda copierà la demo html (/etc/ansible/index.html) nella directory /var/www/html degli host remoti e la terza abiliterà l'avvio automatico del servizio apache durante l'avvio del sistema.

Dopodiché, le azioni di "notifica" vengono attivate alla fine di ogni blocco di attività in un playbook e verranno attivate solo una volta anche se notificate da più attività diverse.

notify:
  - start apache

L'elemento "notifica" contiene un elemento chiamato "avvia apache". Questo è un riferimento a un gestore, che può eseguire determinate funzioni quando viene chiamato dall'interno di un'attività. Definiremo il gestore "avvia apache" di seguito.

handlers:
  - name: start apache
    service: name=httpd state=started

I gestori sono elenchi di attività che vengono eseguite solo quando un'attività gli ha detto che sono state apportate modifiche al sistema client. Poiché abbiamo un gestore che avvia il servizio Apache dopo l'installazione del pacchetto.

Esecuzione di Playbook in Ansible

Dopo aver impostato la configurazione del tuo playbook, puoi eseguire il tuo playbook utilizzando il comando seguente.

# ansible-playbook -l 72.25.10.83 httpd.yml

Dopodiché, apri il browser e vai all'indirizzo IP del tuo host remoto menzionato nell'inventario ansible.

http://your_client_node_ip/

Quindi, se ottieni la pagina sopra significa che hai installato con successo Apache con il playbook Ansible. Allo stesso modo, puoi creare molti playbook per installare le tue applicazioni complesse su più host.

Conclusione

Ansible è piuttosto interessante e molto facile, leggero. Può essere facilmente installato e funzionante in 5 minuti. Quindi, hai installato con successo Ansible su CentOS 7 e hai imparato il suo utilizzo di base per creare un semplice playbook per l'automazione dell'installazione di Apache. Spero che tu l'abbia trovato utile nell'automazione delle tue attività.


Cent OS
  1. Come configurare le chiavi SSH su CentOS 8

  2. Come installare Ansible su CentOS 8 Linux

  3. Come installare Ansible su CentOS 7

  4. Come installare Ansible su CentOS 8

  5. Come configurare le chiavi SSH su CentOS 8

Come configurare l'origine di Openshift su CentOS 7

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

Come configurare l'accesso senza password SSH su CentOS 8 / RHEL 8

Come installare Wireshark su CentOS 8

Come generare una chiave SSH in CentOS 8

Come installare lo strumento di automazione della build Gradle su CentOS 8