Ansible est un logiciel de déploiement/configuration à distance, créé par M. De Hann ( Redhat : Cobbler et Func) et est écrit en python. Il utilise seulement SSH et ne nécessite pas de serveur : une simple station de travail peut suffire. Il est bon de noter qu'il fonctionne en mode push (de Ansible vers le serveur cible). La machine hébergeant Ansible ne nécessite que python 2.4+, et Ansible est extensible en n'importe quel langage.
Cette solution est plutôt dédiée à un usage professionnel.
Installation
sur Ubuntu
sudo apt-get install software-properties-common sudo apt-add-repository ppa:ansible/ansible sudo apt-get update sudo apt-get install ansible
Key SSH :
ssh-keygen ssh-copy-id -i ~/.ssh/id_rsa.pub login@ip
nous avons normalement 2 fichiers et un dossier etc/ansible:
hosts : c'est dans ce fichier que nous allons indiquer nos serveurs, étape obligatoire pour la suite. roles : ce dossier nous servira surtout par la suite quand on commencera à avoir plusieurs rôles à nos playbooks.
Inventory / hosts
[Name of server] ip 1 ip 2
Test SSH
ping
Avant toute chose, est ce que l'on arrive bien à joindre les serveurs :
ansible -m ping all --one-line
Installation d'une liste de paquets (playbook.yml)
-
hosts: all remote_user: root
tasks:
- name: install common packages for all servers
apt:
update_cache=yes
state=latest
name={{item}}
with_items:
- curl
- htop
- ncdu
- pwgen
- strace
- sudo
- tar
- unzip
- vim
- wget
- whois
- screen
- name: install common packages for all servers
apt:
update_cache=yes
state=latest
name={{item}}
with_items:
#run
Après l'avoir enregistré, il suffira de lancer la commande suivante pour installer cette liste de paquets sur tout les serveurs :
---> ansible-playbook -i hosts playbook.yml
for check
----> ansible-playbook --syntax-check example-playbook.yml
run only task
---> sudo ansible-playbook -vvv playbook.yml --step --start-at-task=