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