Ansible: installazione su MacOsX

Visto che l’installazione di Ansible su OsX non è stata delle più agevoli, cerchiamo di fare un recap dei passi necessari.

Innanzitutto dovrete installare XCode CLI (Command Line Interface).
No, Xcode da solo non basta, se non siete sicuri se lo avete già installato o meno potete sfruttare il seguente comando per verificarne la presenza:

$ pkgutil –pkg-info=com.apple.pkg.DeveloperToolsCLI

package-id: com.apple.pkg.DeveloperToolsCLI
version: 4.6.0.0.1.1365549073
volume: /
location: /
install-time: 1370983764
groups: com.apple.FindSystemFiles.pkg-group com.apple.DevToolsBoth.pkg-group com.apple.DevToolsNonRelocatableShared.pkg-group

Qualora invece non fosse presente, provvedete al download e all’installazione

Ora passiamo ad installare il Package Manage di Python, che ci permetterà di eseguire i passi successivi più agevolmente:

sudo easy_install pip

E utilizziamolo subito per installare le dipendenze dirette e ansible stesso:

sudo pip install paramiko PyYAML jinja2
sudo pip install ansible
A questo punto ansible dovrebbe già essere installato, funzionante e alla versione più recente, verifichiamo:
$ ansible
Usage: ansible <host-pattern> [options]
Options:
  -a MODULE_ARGS, --args=MODULE_ARGS
                        module arguments
  -k, --ask-pass        ask for SSH password
  -K, --ask-sudo-pass   ask for sudo password
  -B SECONDS, --background=SECONDS
                        run asynchronously, failing after X seconds
                        (default=N/A)
  -C, --check           don't make any changes; instead, try to predict some
                        of the changes that may occur
  -c CONNECTION, --connection=CONNECTION
                        connection type to use (default=smart)
  -f FORKS, --forks=FORKS
                        specify number of parallel processes to use
                        (default=5)
  -h, --help            show this help message and exit
  -i INVENTORY, --inventory-file=INVENTORY
                        specify inventory host file
                        (default=/etc/ansible/hosts)
  -l SUBSET, --limit=SUBSET
                        further limit selected hosts to an additional pattern
  --list-hosts          outputs a list of matching hosts; does not execute
                        anything else
  -m MODULE_NAME, --module-name=MODULE_NAME
                        module name to execute (default=command)
  -M MODULE_PATH, --module-path=MODULE_PATH
                        specify path(s) to module library
                        (default=/usr/share/ansible/)
  -o, --one-line        condense output
  -P POLL_INTERVAL, --poll=POLL_INTERVAL
                        set the poll interval if using -B (default=15)
  --private-key=PRIVATE_KEY_FILE
                        use this file to authenticate the connection
  -s, --sudo            run operations with sudo (nopasswd)
  -U SUDO_USER, --sudo-user=SUDO_USER
                        desired sudo user (default=root)
  -T TIMEOUT, --timeout=TIMEOUT
                        override the SSH timeout in seconds (default=10)
  -t TREE, --tree=TREE  log output to this directory
  -u REMOTE_USER, --user=REMOTE_USER
                        connect as this user (default=msacchetti)
  -v, --verbose         verbose mode (-vvv for more, -vvvv to enable
                        connection debugging)
  --version             show program's version number and exit
 
 
$  ansible --version
ansible 1.3.2
Tuttavia se volete utilizzare anche il modulo per mysql dobbiamo fare ancora qualche passo.
Innanzitutto un avvertenza: il modulo MySQL-Python funziona solo fino alla versione 5.5 di mysql, quindi se avete la 5.6 installata prendete in seria considerazione un downgrade o dovrete rinunciare all’utilizzo del modulo mysql_db in favore di comandi manuali via command/shell (magari vedremo qualche esempio in un altro post)
Se invece rientrate nei parametri necessari e volete installare il modulo, diamoci da fare.
Per prima cosa scopriamo dove sono installati mysql_config e gli altri binari:
locate mysql_config
/usr/local/mysql-5.5.32-osx10.6-x86_64/bin/mysql_config
Questo comando viene utilizzato dalla procedura di installazione di pip per il modulo mysql-python, quindi provvedete ad aggiungere il percorso al vostro path
export PATH=$PATH:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/local/bin:/opt/local/sbin:/usr/local/mysql-5.5.32-osx10.6-x86_64/bin
Questo ci permetterebbe già di installare il pacchetto con pip, ma, una volta lanciato qualsiasi task mysql_db questo fallirebbe miseramente senza addurre motivazioni molto chiare.Dando un’occhiata ai sorgenti del modulo ansible, ho scoperto (con una certa tristezza) che si aspetta gli eseguibili standard di mysql in percorsi ben precisi.Quindi provvediamo a piazzare un paio di link nei posti giusti:

sudo ln-s /usr/local/mysql-5.5.32-osx10.6-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
sudo ln-s /usr/local/mysql-5.5.32-osx10.6-x86_64/bin/mysql/usr/bin/mysql
sudo ln-s /usr/local/mysql-5.5.32-osx10.6-x86_64/bin/mysqldump/usr/bin/mysqldump

A questo punto tutto dovrebbe finalmente essere al suo posto, installiamo quindi l’agognato modulo:

sudo pip install MySQL-python

e godiamoci la nostra installazione di Ansible funzionante a regola d’arte 🙂
Annunci

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

w

Connessione a %s...