Questa pagina descrive come installare Ansible su diverse piattaforme. Ansible è uno strumento di automazione agentless che per impostazione predefinita gestisce le macchine tramite il protocollo SSH. Una volta installato, Ansible non aggiunge un database e non ci saranno demoni da avviare o mantenere in esecuzione. È sufficiente installarlo su un solo computer (che potrebbe essere un portatile) per gestire un intero parco macchine remote da quel punto centrale. Quando Ansible gestisce le macchine remote, non lascia il software installato o in esecuzione su di esse, quindi non c'è una vera domanda su come aggiornare Ansible quando si passa a una nuova versione.

  • Prerequisiti

    • Requisiti del nodo di controllo
    • Requisiti del nodo gestito
  • Selezione di una versione di Ansible da installare
  • Installazione di Ansible su RHEL, CentOS o Fedora
  • Installazione di Ansible su Ubuntu
  • Installazione di Ansible su Debian
  • Installare Ansible su Gentoo con portage
  • Installare Ansible su FreeBSD
  • Installare Ansible su macOS
  • Installazione di Ansible su Solaris
  • Installazione di Ansible su Arch Linux
  • Installazione di Ansible su Slackware Linux
  • Installare Ansible su Clear Linux
  • Installare Ansible con pip

    • Aggiornamento di Ansible dalla versione 2.9 o precedente alla versione 2.10 o successiva
    • Installazione della versione di sviluppo di ansible-base
    • Ambienti virtuali
  • Esecuzione ansible-base da sorgente (devel)
  • Trovare i tarball dei rilasci taggati
  • Completamento della shell dei comandi di Ansible

    • Installazione argcomplete su RHEL, CentOS o Fedora
    • Installazione di argcomplete con apt
    • Installare argcomplete con pip
    • Configurazione argcomplete

      • Globalmente
      • Per comando
    • argcomplete con zsh o tcsh
  • ansible-base su GitHub

Prerequisiti

Si installa Ansible su un nodo di controllo, che utilizza SSH (per impostazione predefinita) per comunicare con i nodi gestiti (i dispositivi finali che si desidera automatizzare).

Requisiti del nodo di controllo

Attualmente Ansible può essere eseguito da qualsiasi macchina con Python 2 (versione 2.7) o Python 3 (versioni 3.5 e successive) installati. Ansible 2.11 renderà Python 3.8 una dipendenza soft per il nodo di controllo, ma funzionerà con i requisiti sopra citati. Ansible 2.12 richiederà Python 3.8 o più recente per funzionare sul nodo di controllo. A partire da Ansible 2.11, il progetto sarà pacchettizzato solo per Python 3.8 o più recente. Questo include Red Hat, Debian, CentOS, macOS, qualsiasi BSD e così via. Windows non è supportato per il nodo di controllo; per saperne di più, consultare la sezione Il post sul blog di Matt Davis.

Quando si sceglie un nodo di controllo, tenere presente che qualsiasi sistema di gestione trae vantaggio dall'essere eseguito vicino alle macchine gestite. Se si esegue Ansible in un cloud, si consideri la possibilità di eseguirlo da una macchina all'interno del cloud. Nella maggior parte dei casi questo funzionerà meglio che su Internet.

Nota

macOS per impostazione predefinita è configurato per un numero ridotto di file handle, quindi se si desidera utilizzare 15 o più fork è necessario aumentare l'ulimit con sudo launchctl limit maxfiles unlimited. Questo comando può anche risolvere qualsiasi errore "Troppi file aperti".

Avvertimento

Ansible 2.11 renderà Python 3.8 una dipendenza soft per il nodo di controllo, ma funzionerà con i requisiti sopra citati. Ansible 2.12 richiederà Python 3.8 o più recente per funzionare sul nodo di controllo. A partire da Ansible 2.11, il progetto sarà pacchettizzato solo per Python 3.8 o più recente.

Avvertimento

Si noti che alcuni moduli e plugin hanno requisiti aggiuntivi. Per i moduli, questi devono essere soddisfatti sulla macchina 'target' (il nodo gestito) e devono essere elencati nella documentazione specifica del modulo.

Requisiti del nodo gestito

Sui nodi gestiti è necessario un modo per comunicare, che normalmente è SSH. Per impostazione predefinita si usa SFTP. Se non è disponibile, si può passare a SCP in ansible.cfg. È necessario anche Python 2 (versione 2.6 o successiva) o Python 3 (versione 3.5 o successiva).

Nota

  • Se avete SELinux abilitato sui nodi remoti, dovrete installare anche libselinux-python su di essi prima di utilizzare qualsiasi funzione di copia/file/template in Ansible. È possibile utilizzare il comando modulo yum o modulo dnf in Ansible per installare questo pacchetto su sistemi remoti che non lo hanno.
  • Per impostazione predefinita, prima che il primo modulo Python di un playbook venga eseguito su un host, Ansible tenta di scoprire un interprete Python adatto su quell'host. È possibile sovrascrivere il comportamento di scoperta impostando l'opzione ansible_python_interpreter a un interprete specifico e in altri modi. Vedere Scoperta dell'interprete per i dettagli.
  • Ansible modulo raw e il modulo modulo di script non dipendono da un'installazione di Python sul lato client per funzionare. Tecnicamente, si può usare Ansible per installare una versione compatibile di Python usando l'opzione modulo raw che consente di utilizzare tutto il resto. Per esempio, se si ha bisogno di avviare Python 2 su un sistema basato su RHEL, lo si può installare come segue:

    $ ansible myhost --become -m raw -a "yum install -y python2"

Selezione di una versione di Ansible da installare

La scelta della versione di Ansible da installare dipende dalle vostre esigenze specifiche. È possibile scegliere uno dei seguenti modi per installare Ansible:

  • Installare l'ultima versione con il gestore di pacchetti del sistema operativo (per Red Hat Enterprise Linux (TM), CentOS, Fedora, Debian o Ubuntu).
  • Installare con pip (il gestore di pacchetti Python).
  • Installare ansible-base dai sorgenti per accedere allo sviluppo (devel) per sviluppare o testare le ultime funzionalità.

Nota

Si dovrebbe eseguire solo ansible-base da devel se si sta modificando ansible-baseo di provare le funzioni in fase di sviluppo. Si tratta di una fonte di codice in rapida evoluzione e può diventare instabile in qualsiasi momento.

Ansible crea nuove versioni due o tre volte all'anno. A causa di questo breve ciclo di rilascio, i bug minori saranno generalmente risolti nella release successiva piuttosto che mantenere i backport sul ramo stabile. Per i bug più importanti sono previsti rilasci di manutenzione, anche se non sono frequenti.

Installare Ansible su RHEL, CentOS o Fedora

Su Fedora:

$ sudo dnf install ansible

Su RHEL:

$ sudo yum install ansible

Su CentOS:

$ sudo yum install epel-release
$ sudo yum install ansible

Gli RPM per RHEL 7 e RHEL 8 sono disponibili nella sezione repository di Ansible Engine.

Per abilitare il repository di Ansible Engine per RHEL 8, eseguire il seguente comando:

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

Per abilitare il repository di Ansible Engine per RHEL 7, eseguire il seguente comando:

$ sudo subscription-manager repos --enable rhel-7-server-ansible-2.9-rpms

Gli RPM per le versioni attualmente supportate di RHEL e CentOS sono disponibili anche su EPEL.

Nota

Poiché Ansible 2.10 per RHEL non è disponibile al momento, continuare a utilizzare Ansible 2.9.

Ansible può gestire sistemi operativi più vecchi che contengono Python 2.6 o superiore.

Installazione di Ansible su Ubuntu

Sono disponibili build per Ubuntu in un PPA qui.

Per configurare il PPA sulla propria macchina e installare Ansible eseguire questi comandi:

$ sudoapt update
$ sudoaptinstall software-properties-common
$ sudo add-apt-repository --yes --update ppa:ansible/ansible
$ sudoaptinstall ansible

Nota

Nelle distribuzioni Ubuntu più vecchie, "software-properties-common" è chiamato "python-software-properties". Si consiglia di utilizzare apt-get invece di apt nelle versioni più vecchie. Inoltre, si tenga presente che solo le distribuzioni più recenti (in altre parole, 18.04, 18.10, e così via) hanno un -u o --update quindi è necessario adattare il proprio script di conseguenza.

I pacchetti Debian/Ubuntu possono anche essere compilati dal checkout dei sorgenti, eseguite:

$ make deb

Si può anche eseguire dai sorgenti per ottenere il ramo di sviluppo, come descritto di seguito.

Installazione di Ansible su Debian

Gli utenti Debian possono utilizzare gli stessi sorgenti del PPA di Ubuntu.

Aggiungere la seguente riga a /etc/apt/sources.list:

deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main

Quindi eseguire questi comandi:

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
$ sudoapt update
$ sudoaptinstall ansible

Nota

Questo metodo è stato verificato con i sorgenti Trusty in Debian Jessie e Stretch, ma potrebbe non essere supportato nelle versioni precedenti. Si consiglia di utilizzare apt-get invece di apt nelle versioni precedenti.

Installare Ansible su Gentoo con portage

$ emerge -av app-admin/ansible

Per installare la versione più recente, potrebbe essere necessario smascherare il pacchetto Ansible prima di emergere:

$ echo'app-admin/ansible'>> /etc/portage/package.accept_keywords

Installare Ansible su FreeBSD

Sebbene Ansible funzioni con entrambe le versioni di Python 2 e 3, FreeBSD ha pacchetti diversi per ogni versione di Python. Quindi per l'installazione si può usare:

$ sudo pkg install py27-ansible

o:

$ sudo pkg install py36-ansible

Si può anche desiderare di installare dalle porte, eseguendo:

$ sudomake -C /usr/ports/sysutils/ansible install

Si può anche scegliere una versione specifica, ad esempio ansible25.

Le vecchie versioni di FreeBSD funzionavano con qualcosa di simile (sostituire con il gestore di pacchetti scelto):

$ sudo pkg install ansible

Installazione di Ansible su macOS

Il modo preferito per installare Ansible su Mac è con pip.

Le istruzioni si trovano in Installazione di Ansible con pip. Se si utilizza macOS versione 10.12 o precedente, è necessario aggiornare alla versione più recente pip per connettersi in modo sicuro all'indice dei pacchetti Python. Va notato che pip deve essere eseguito come modulo su macOS e il link pip vi mostreranno come farlo.

Nota

Se si ha installato Ansible 2.9 o versioni precedenti, è necessario usare pip uninstall ansible per rimuovere le versioni precedenti di Ansible prima di reinstallarlo.

Se si sta installando su macOS Mavericks (10.9), è possibile che si verifichino dei disturbi da parte del compilatore. Per risolvere il problema, procedere come segue:

$ CFLAGS=-Qunused-arguments CPPFLAGS=-Qunused-arguments pip install --user ansible

Installazione di Ansible su Solaris

Ansible è disponibile per Solaris come Pacchetto SysV da OpenCSW.

# pkgadd -d http://get.opencsw.org/now# /opt/csw/bin/pkgutil -i ansible

Installazione di Ansible su Arch Linux

Ansible è disponibile nel repository della Comunità:

$ pacman -S ansible

AUR ha un PKGBUILD per prelevare direttamente da GitHub, chiamato ansible-git.

Si veda anche la sezione Ansible sulla ArchWiki.

Installazione di Ansible su Slackware Linux

Lo script di compilazione di Ansible è disponibile nella cartella SlackBuilds.org repository. Può essere costruito e installato usando sbopkg.

Crea una coda con Ansible e tutte le dipendenze:

# sqg -p ansible

Costruisce e installa i pacchetti da un queuefile creato (rispondere alla domanda Q se sbopkg deve usare queue o package):

# sbopkg -k -i ansible

Installare Ansible su Clear Linux

Ansible e le sue dipendenze sono disponibili come parte del pacchetto di gestione dell'host di sysadmin:

$ sudo swupd bundle-add sysadmin-hostmgmt

L'aggiornamento del software sarà gestito dallo strumento swupd:

$ sudo swupd update

Installazione di Ansible con pip

Ansible può essere installato con pipil gestore di pacchetti Python. Se pip non è già disponibile sul vostro sistema Python, eseguite i seguenti comandi per installarlo:

$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
$ python get-pip.py --user

Nota

Se avete installato Ansible 2.9 o versioni precedenti, dovete usare il comando pip uninstall ansible per rimuovere le versioni precedenti di Ansible prima di reinstallarlo.

Quindi installare Ansible 1:

$ python -m pip install --user ansible

Suggerimento

Se è la prima volta che si installano pacchetti con pip, potrebbe essere necessario eseguire alcune configurazioni aggiuntive prima di poter eseguire Ansible. Si veda la documentazione di Python su installazione nel sito dell'utente per ulteriori informazioni.

Per utilizzare il programma paramiko o i moduli che richiedono il plugin di connessione paramiko, installare il modulo richiesto 2:

$ python -m pip install --user paramiko

Se si desidera installare Ansible globalmente, eseguire i seguenti comandi:

$ sudo python get-pip.py
$ sudo python -m pip install ansible

Nota

Esecuzione pip con sudo apporterà modifiche globali al sistema. Da quando pip non si coordina con i gestori dei pacchetti di sistema, potrebbe apportare modifiche al sistema che lo lascerebbero in uno stato incoerente o non funzionante. Questo è particolarmente vero per macOS. Installare con --user è consigliata a meno che non si conoscano a fondo le implicazioni della modifica dei file globali del sistema.

Nota

Le versioni precedenti di pip hanno come impostazione predefinita http://pypi.python.org/simple che non funziona più. Assicuratevi di avere l'ultima versione di pip prima di installare Ansible. Se si dispone di una versione precedente di pip installata, è possibile effettuare l'aggiornamento seguendo le istruzioni le istruzioni di aggiornamento di pip .

Aggiornamento di Ansible dalla versione 2.9 o precedente alla versione 2.10 o successiva

A partire dalla versione 2.10, Ansible è composto da due pacchetti. È necessario disinstallare la vecchia versione di Ansible (2.9 o precedente) prima di effettuare l'aggiornamento. Se non si disinstalla la vecchia versione di Ansible, verrà visualizzato il seguente messaggio e non verrà eseguita alcuna modifica:

Cannot install ansible-base with a pre-existing ansible==2.x installation.

Installing ansible-base with ansible-2.9 or older currently installed with
pip is known to cause problems. Please uninstall ansible and install the new
version:

pip uninstall ansible
pip install ansible-base

...

Come spiegato dal messaggio, per eseguire l'aggiornamento è necessario prima rimuovere la versione di Ansible installata e poi installare la versione più recente.

$ pip uninstall ansible
$ pip install ansible

Installare la versione di sviluppo di ansible-base

In Ansible 2.10 e successivi, il file repository ansible/ansible contiene il codice per le caratteristiche e le funzioni di base, come la copia del codice del modulo nei nodi gestiti. Questo codice è noto anche come ansible-base.

Nota

Si dovrebbe eseguire solo ansible-base da devel se si sta modificando ansible-base o di provare le funzioni in fase di sviluppo. Si tratta di una fonte di codice in rapida evoluzione e può diventare instabile in qualsiasi momento.

Nota

Se è stato installato Ansible 2.9 o versioni precedenti, è necessario usare pip uninstall ansible per rimuovere le versioni precedenti di Ansible prima di reinstallarlo.

È possibile installare la versione di sviluppo di ansible-base direttamente da GitHub con pip.

$ python -m pip install --user https://github.com/ansible/ansible/archive/devel.tar.gz

Sostituire devel nell'URL di cui sopra, con qualsiasi altro ramo o tag su GitHub per installare le versioni precedenti di Ansible (prima di ansible-base 2.10.) Questo installa tutto Ansible.

$ python -m pip install --user https://github.com/ansible/ansible/archive/stable-2.9.tar.gz

Vedere Esecuzione di ansible-base dai sorgenti (devel) per le istruzioni su come eseguire ansible-base direttamente dai sorgenti, senza bisogno di installazione.

Ambienti virtuali

Nota

Se è stato installato Ansible 2.9 o versioni precedenti, è necessario usare pip uninstall ansible per rimuovere le versioni precedenti di Ansible prima di reinstallarlo.

Ansible può anche essere installato all'interno di una nuova o esistente cartella virtualenv:

$ python -m virtualenv ansible  # Create a virtualenv if one does not already exist
$ source ansible/bin/activate   # Activate the virtual environment
$ python -m pip install ansible

Esecuzione ansible-base da sorgente (devel)

In Ansible 2.10 e successivi, il parametro repository ansible/ansible contiene il codice per le caratteristiche e le funzioni di base, come la copia del codice del modulo nei nodi gestiti. Questo codice è noto anche come ansible-base.

Nota

Si dovrebbe eseguire solo ansible-base da devel se si sta modificando ansible-base o di provare le funzioni in fase di sviluppo. Si tratta di una fonte di codice in rapida evoluzione e può diventare instabile in qualsiasi momento.

ansible-base è facile da eseguire dai sorgenti. Non è necessario root per usarlo e non c'è software da installare. Non sono richiesti demoni o impostazioni di database.

Nota

Se si desidera utilizzare Ansible Tower come nodo di controllo, non utilizzare un'installazione sorgente di Ansible. Utilizzare un gestore di pacchetti del sistema operativo (come apt o yum) o pip per installare una versione stabile.

Per installare dai sorgenti, clonare il file ansible-base repository git:

$ git clone https://github.com/ansible/ansible.git
$ cd ./ansible

Una volta git ha clonato il repository ansible-base , configurare l'ambiente Ansible:

Utilizzando Bash:

$ source ./hacking/env-setup

Utilizzo di Fish:

$ source ./hacking/env-setup.fish

Se si vogliono sopprimere gli avvisi/errori spuri, usare:

$ source ./hacking/env-setup -q

Se non si dispone di pip installato nella vostra versione di Python, installatelo:

$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
$ python get-pip.py --user

Ansible utilizza anche i seguenti moduli Python, che devono essere installati:

$ python -m pip install --user -r ./requirements.txt

Per aggiornare ansible-base i checkout, usare pull-with-rebase in modo che qualsiasi modifica locale venga riprodotta.

$ git pull --rebase
$ git pull --rebase #same as above
$ git submodule update --init --recursive

Una volta eseguito lo script env-setup, si eseguirà il checkout e il file di inventario predefinito sarà /etc/ansible/hosts. È possibile specificare facoltativamente un file di inventario (vedere Come costruire l'inventario) diverso da /etc/ansible/hosts:

$ echo "127.0.0.1" > ~/ansible_hosts
$ export ANSIBLE_INVENTORY=~/ansible_hosts

Per saperne di più sul file d'inventario si veda Come costruire l'inventario.

Ora testiamo le cose con un comando ping:

$ ansible all -m ping --ask-pass

Si può anche usare "sudo make install".

Trovare i tarball dei rilasci taggati

Volete impacchettare Ansible o costruire da soli un pacchetto locale, ma non volete fare un checkout git? I tarball dei rilasci sono disponibili da pypi come https://pypi.python.org/packages/source/a/ansible/ansible-{{VERSION}}.tar.gz. È possibile rendere VERSION una variabile nel sistema di gestione dei pacchetti, da aggiornare in un unico posto ogni volta che si crea una nuova versione. In alternativa, si può scaricare https://pypi.python.org/project/ansible per ottenere l'ultima versione stabile.

Nota

Se si sta creando il proprio pacchetto Ansible, è necessario scaricare o pacchettizzare anche il pacchetto ansible-base come parte del pacchetto Ansible. È possibile scaricarlo come https://pypi.python.org/packages/source/a/ansible-base/ansible-base-{{VERSION}}.tar.gz.

Questi rilasci sono anche etichettati nel file repository git con la versione del rilascio.

Completamento della shell dei comandi di Ansible

A partire da Ansible 2.9, il completamento della shell delle utilità della riga di comando di Ansible è disponibile e fornito attraverso una dipendenza opzionale chiamata argcomplete. argcomplete supporta bash e ha un supporto limitato per zsh e tcsh.

È possibile installare python-argcomplete da EPEL sulle distribuzioni basate su Red Hat Enterprise o dai repository standard del sistema operativo per molte altre distribuzioni.

Per ulteriori informazioni sull'installazione e la configurazione, consultare la sezione documentazione di argcomplete.

Installazione argcomplete su RHEL, CentOS o Fedora

Su Fedora:

$ sudo dnf install python-argcomplete

Su RHEL e CentOS:

$ sudo yum install epel-release
$ sudo yum install python-argcomplete

Installazione argcomplete con apt

$ sudo apt install python-argcomplete

Installare argcomplete con pip

$ python -m pip install argcomplete

Configurazione argcomplete

Ci sono 2 modi per configurare argcomplete per consentire il completamento da shell delle utilità della riga di comando di Ansible: globalmente o per comando.

Globalmente

Il completamento globale richiede bash 4.2.

$ sudo activate-global-python-argcomplete

Scrive un file di completamento di bash in una posizione globale. Utilizzare --dest per cambiare la posizione.

Per comando

Se non si dispone di bash 4.2, è necessario registrare ogni script in modo indipendente.

$ eval $(register-python-argcomplete ansible)
$ eval $(register-python-argcomplete ansible-config)
$ eval $(register-python-argcomplete ansible-console)
$ eval $(register-python-argcomplete ansible-doc)
$ eval $(register-python-argcomplete ansible-galaxy)
$ eval $(register-python-argcomplete ansible-inventory)
$ eval $(register-python-argcomplete ansible-playbook)
$ eval $(register-python-argcomplete ansible-pull)
$ eval $(register-python-argcomplete ansible-vault)

Dovete inserire i comandi di cui sopra nel file di profilo della vostra shell, come ad esempio ~/.profile o ~/.bash_profile.

argcomplete con zsh o tcsh

Vedere il file argcompleto.

ansible-base su GitHub

Si può anche seguire la documentazione progetto GitHub se si dispone di un account GitHub. Qui si trova anche il tracker dei problemi per condividere bug e idee sulle funzionalità.

Vedere anche

Introduzione ai comandi ad hoc

Esempi di comandi di base

Lavorare con i playbook

Imparare il linguaggio di gestione della configurazione di Ansible

Come si gestiscono le dipendenze dei pacchetti richieste da Ansible durante l'installazione di Ansible?

Installazione di Ansible in relazione alle domande frequenti

Mailing List

Domande? Aiuto? Idee? Passate dalla lista su Google Groups

irc.freenode.net

Canale di chat IRC #ansible

1(1,2)

Se si riscontrano problemi con l'installazione del pacchetto "pycrypto" su macOS, si può provare con CC=clang sudo -E pip install pycrypto.

2

paramiko è stato incluso nella versione di Ansible requirements.txt di Ansible prima della 2.8.