GNU/Linux >> Linux Esercitazione >  >> Linux

Procedura:per iniziare con Ansible

Introduzione

Ansible è uno strumento di amministrazione del sistema che consente l'amministrazione di più dispositivi da un unico dispositivo centrale. È paragonabile a strumenti come Puppet o Chef, ma mentre quei pacchetti richiedono l'installazione di agenti sui sistemi client, Ansible opera passando i comandi su ssh senza la necessità di agenti. Daremo un'occhiata ad alcune delle attività amministrative di cui è capace Ansible in modo da farti un'idea migliore se Ansible potrebbe essere adatto a te.


.

Prerequisiti

  • Un dispositivo di controllo Linux, BSD o OSX.
  • accesso ssh (firewall e credenziali) ai dispositivi client dal tuo dispositivo di controllo. Ansible preferisce l'uso delle chiavi ssh per accedere ai dispositivi client, ma ti mostreremo anche le opzioni utilizzando nome utente e password.
  • Python 2.6 o 2.7 installato sul dispositivo di controllo.

.

Installazione

Ansible è disponibile tramite i gestori di pacchetti delle principali distribuzioni Linux/BSD/OSX. È anche disponibile tramite il programma di installazione pip di Python.

CentOS/Fedora:

sudo yum install ansible

Ubuntu (dovrai prima aggiungere Ansible PPA):

sudo apt-get install software-properties-common
sudo apt-add-repository ppa:ansible/ansible
sudo apt-get update
sudo apt-get install ansible

Arch Linux:

pacman -S ansible

FreeBSD:

sudo pkg install ansible

Gestore di pacchetti Python, pip (gli utenti OSX possono installare anche con pip):

sudo pip install ansible

Configurazione dell'accesso ai clienti Ansible

Ospitanti

Uno dei vantaggi dell'utilizzo di Ansible è la possibilità di gestire più client da un unico dispositivo di controllo, dalla stessa interfaccia terminale. Puoi specificare vari gruppi di server client in base a funzione, posizione e/o sistema operativo creando gruppi in /etc/ansible/hosts file.

[mailservers]
smtp.orl-fl.example.com
smtp.dal-tx.example.com

[db_servers]
db.orl-fl.example.com
db.sfo-ca.example.com

[orlando]
smtp.orl-fl.example.com
db.orl-fl.examle.com

[nameservers]
ns[01:12].example.com

Un nome racchiuso tra parentesi quadre [] definisce un nome di gruppo e include gli host nell'elenco che lo segue. Puoi anche indicare un intervallo sequenziale all'interno di un modello di nome host con parentesi quadre e due punti, come in ns[01:12].example.com sopra.

Un client può esistere in più gruppi. Il nome del gruppo funziona come un alias per l'elenco dei gruppi, rendendo più facile fare riferimento a quale gruppo di server ti rivolgerai con il tuo particolare comando o playbook Ansible.
.

Tasti ssh

Ansible funziona meglio quando il tuo server di controllo, quello da cui eseguirai i tuoi comandi Ansible, può utilizzare le chiavi ssh per accedere agli host client. Quando esegui un comando Ansible senza opzioni aggiuntive, per impostazione predefinita tenta di accedere ai client remoti tramite chiavi ssh.

Suggerimento:se hai protetto la tua chiave ssh privata con una passphrase, può essere scomodo e inefficiente dover inserire quella passphrase ogni volta che devi decrittografarla per ogni sessione ssh che aprirai con Ansible. Per semplificare questo processo, apri una shell separata con ssh-agent . Quando importi una chiave privata in questa shell, devi inserire la tua passphrase una sola volta per aggiungere la chiave privata non crittografata.

ssh-agent bash
ssh-add ~/.ssh/id_rsa

Il primo comando apre una nuova shell bash. Il ssh-add Il comando ti chiederà la passphrase della tua chiave privata e quindi importa la chiave privata RSA in questa shell. Ovviamente puoi sostituire la chiave privata appropriata, se usi id_ecdsa o id_dsa , per esempio.

.

.

Accesso ssh (senza chiavi ssh)

Se disponi di server client che non dispongono di chiavi ssh impostate, puoi comunque utilizzare Ansible con l'utente corrente e richiedere la password utente. Ad esempio, potremmo voler utilizzare il ping modulo per verificare che tutti i nostri host siano in db_servers il gruppo è reattivo.

ansible db_servers -m ping --ask-pass

Questo comando richiederà innanzitutto la password ssh dell'utente corrente da utilizzare per accedere a tutti i server in db_servers gruppo prima di eseguire il modulo su ciascun client.

Nota:questo comando richiederà che il tuo utente esista su ogni client, che sia consentito l'accesso ssh e utilizzi la stessa password.

Inoltre, il ping il modulo non è correlato al ping ICMP che verifica la connettività di rete. Il suo utilizzo con ansible Il comando verifica che un server client sia accessibile con l'utente indicato e che il server client disponga di una versione di Python con cui Ansible può lavorare. Il ping il modulo dovrebbe restituire un pong risposta al completamento con successo..

.

Accesso ssh (con password)

I comandi Ansible predefiniti presuppongono anche che, oltre a utilizzare le chiavi ssh, tu stia utilizzando sudo senza password. Se disponi di server client che richiedono una password per ottenere l'accesso sudo, puoi utilizzare opzioni aggiuntive per diventare sudo e richiedere una password sudo. Quindi, ad esempio, riavviare tutti i server nei mailservers gruppo utilizzando il nome utente username .

ansible mailservers -a "/sbin/reboot" -u username --become --ask-become-pass

Il --become l'opzione indica che l'utente diventerà un utente privilegiato (sudo) e il --ask-become-pass l'opzione richiede ad Ansible di richiedere la password per diventare quell'utente privilegiato prima di eseguire il comando.

Il --become e --ask-become-pass le opzioni sono opzioni più recenti (a partire dalla versione 1.9 di Ansible) destinate a sostituire il vecchio --sudo e --ask-sudo-pass (-K ) rispettivamente. Queste versioni precedenti funzionano ancora. La sostituzione di sudo per become amplia l'ambito di queste opzioni per includere l'integrazione con strumenti che utilizzano mezzi diversi da sudo per abilitare l'escalation dei privilegi.

.

Alcuni comandi CLI di base di Ansible

Sebbene il vero potere di Ansible risieda nell'uso dei playbook, puoi anche eseguire ansible comando per eseguire una rapida gestione dei client nei casi in cui non ha senso creare un playbook o in cui potrebbe essere necessario inviare un solo comando a un gruppo di dispositivi client.

Il ansible il comando segue lo schema ansible [group] OPTIONS .
.

Esegui aggiornamenti Yum

Se, ad esempio, desideri eseguire gli aggiornamenti yum sui server nei tuoi mailservers gruppo, è possibile eseguire questa attività con il seguente comando Ansible:

ansible mailservers -m yum -a "name=* state=latest" --become

Questo comando aggiorna tutti i server nei mailservers gruppo con il yum modulo (-m ). Il -a opzione indica un argomento particolare tra virgolette, in questo caso aggiorna tutti i pacchetti installati (usando il * jolly) al loro stato più recente.
.

Copia file sui clienti

Puoi utilizzare Ansible per distribuire un file a un gruppo di server client.

ansible orlando -m copy -a "src=/home/scripts/foo.sh dest=/opt/scripts/foo.sh"

Questo comando richiama la copy modulo e indica il src (fonte) e dest (destinazione) tra virgolette per gli argomenti. La posizione di origine è predefinita sul dispositivo su cui è in esecuzione questo comando Ansible e può essere assoluta o relativa. La posizione di destinazione è la posizione sul dispositivo client remoto e deve essere sempre assoluta.

Puoi anche usare il copy modulo per perfezionare ulteriormente gli attributi del file su cui stai copiando.

ansible orlando -m copy -a "src=/home/scripts/foo.sh dest=/opt/scripts/foo.sh owner=foo group=bar mode=0755"

Questo comando modifica inoltre i permessi di proprietario, gruppo e file del file su ciascun client in orlando gruppo.
.

Esegui comando shell

Puoi anche eseguire uno script su ogni client con la shell modulo.

ansible orlando -m shell -a '/opt/scripts/foo.sh >> /home/foo/bar.txt' 

Questo comando eseguirà foo.sh script e reindirizza il suo output a /home/foo/bar.txt file. Nota le virgolette singole qui. Avrai bisogno di virgolette singole anziché doppie in modo da poter passare il >> operatore alla shell remota.
.

Un Ansible Amuse-Bouche

Ci sono molti altri comandi e moduli che puoi usare, ma questo campionamento dovrebbe fornire una buona introduzione a quanto può essere utile Ansible se gestisci anche solo un piccolo numero di server. Se ti trovi nella posizione a volte poco invidiabile di dover eseguire attività ripetitive sull'infrastruttura del server, speriamo che questi esempi ti abbiano dato un assaggio di come Ansible potrebbe aiutarti a lavorare in modo più intelligente (e più efficiente!).

Assicurati di ricontrollare con noi in futuro per ulteriori articoli sull'amministrazione del server e altre cose che puoi fare con Ansible. Atlantic.Net offre un'ampia raccolta di soluzioni di hosting VPS flessibili per una piccola start-up a un'azienda aziendale affermata.
.
.


Linux
  1. Iniziare con Zsh

  2. Iniziare con ls

  3. Iniziare con PostgreSQL su Linux

  4. Come iniziare con Juju?

  5. Introduzione a SSH in Linux

Guida introduttiva ai Playbook Ansible

Guida introduttiva ai comandi ad hoc di Ansible

Iniziare con Nix Package Manager

Iniziare con systemctl

Procedura:Introduzione a Ubuntu 14.04 LTS con LAMP

Procedura:Introduzione a Ubuntu 14.04 LTS con LEMP