Ansible est un logiciel Open Source permettant de gérer une infrastructure informatique, les déploiements automatisés et les configurations systèmes. il a été développé par Michael Dehaan en 2012 avec python et ensuite racheté par Red Hat en 2015, Il fonctionne sous un environnement Linux.
Les commandes ad-hoc d’Ansible permettent d’exécuter une tache précise et particulière, par exemple tester la connexion vers vos serveurs et afficher leurs espaces disque. Vu l’importance de ces commandes, j’ai décidé de rédiger ce guide simple pour vous montrer quelques exemple ad-hoc que je vois qu’il est important de les retenir. Allons-y faisons de l’Ansible 🙂 .
1- Tester la connectivité des serveurs
[root@bdd ansible]# ansible -m ping all webserver | SUCCESS => { "changed": false, "ping": "pong" } bddserver | SUCCESS => { "changed": false, "ping": "pong" }
Ici la commande utilise le module ping pour tester la connexion vers les serveurs, ces derniers je les ai définit sur un fichier dont l’emplacement est indiqué dans le fichier de configuration de Ansible /etc/ansible/ansible.cfg :
# config file for ansible -- https://ansible.com/ # =============================================== # nearly all parameters can be overridden in ansible-playbook # or with command line flags. ansible will read ANSIBLE_CONFIG, # ansible.cfg in the current working directory, .ansible.cfg in # the home directory or /etc/ansible/ansible.cfg, whichever it # finds first [defaults] # some basic default values... inventory = /etc/ansible/posts #library = /usr/share/my_modules/ #module_utils = /usr/share/my_module_utils/
2-Vérifier l’espace disque et la mémoire de vos serveurs :
[root@bdd ansible]# ansible -m shell -a "free -m" all webserver | SUCCESS | rc=0 >> total used free shared buff/cache available Mem: 940 163 524 7 252 593 Swap: 1639 0 1639 bddserver | SUCCESS | rc=0 >> total used free shared buff/cache available Mem: 802 90 720 5 630 200 Swap: 1639 0 1639
Le module « shell » permet d’exécuter une commande sur le serveur distant.
La commande ci-dessous vous affiche le même résultat :
[root@bdd ansible]# ansible -a "free -m" all webserver | SUCCESS | rc=0 >> total used free shared buff/cache available Mem: 940 163 523 7 252 593 Swap: 1639 0 1639
3- Commande ad hoc pour exécuter une commande ad hoc en tant que root ( sudo) :
Dans l’exemple suivant je veux savoir si l’utilisateur user1 existe sur le serveur distant et je veux que la commande soit exécuté en tant que root en utilisant sudo :
#ansible -m shell -a "getent passwd | grep user1" -b -K all SUDO password: Enter passphrase for key '/root/.ssh/id_rsa': webserver | SUCCESS | rc=0 >> hassan:x:1002:1002::/home/hassan:/bin/bash
4- Commande ad hoc pour créer un groupe :
#ansible -m group -a "name=web1 state=present" all webserver | SUCCESS => { "changed": true, "gid": 1003, "name": "web1", "state": "present", "system": false } bddserver | SUCCESS => { "changed": true, "gid": 1006, "name": "web1", "state": "present", "system": false }
5- Commande ad hoc pour créer un utilisateur :
# ansible -m user -a "name=dev group=web1 createhome=yes" -b all webserver | SUCCESS => { "changed": true, "comment": "", "createhome": true, "group": 1003, "home": "/home/dev", "name": "dev", "shell": "/bin/bash", "state": "present", "system": false, "uid": 1003 }
6- Commande ad hoc pour Crée un dossier avec le module « file » :
# ansible -m file -a "path=/home/dev/documents state=directory" -b all webserver | SUCCESS => { "changed": true, "gid": 0, "group": "root", "mode": "0755", "owner": "root", "path": "/home/dev/documents", "secontext": "unconfined_u:object_r:user_home_t:s0", "size": 6, "state": "directory", "uid": 0 }
7- Commande ad hoc pour changer les droit d’un répertoire :
Nous allons changer les droits du répertoire que nous avons créé précédemment :
[root@bdd ansible]# ansible -m file -a "path=/home/dev/documents state=directory mode=0751" -b all
Enter passphrase for key '/root/.ssh/id_rsa':
webserver | SUCCESS => {
"changed": true,
"gid": 0,
"group": "root",
"mode": "0751",
"owner": "root",
"path": "/home/dev/documents",
"secontext": "unconfined_u:object_r:user_home_t:s0",
"size": 6,
"state": "directory",
"uid": 0
}
8- Commande ad hoc pour crée un fichier:
Nous allons créer un fichier dans le répertoire « Documents » créé précédemment :
[root@bdd ansible]# ansible -m file -a "path=/home/dev/documents/file.txt state=touch" -b all
webserver | SUCCESS => {
"changed": true,
"dest": "/home/dev/documents/file.txt",
"gid": 0,
"group": "root",
"mode": "0644",
"owner": "root",
"secontext": "unconfined_u:object_r:user_home_t:s0",
"size": 0,
"state": "file",
"uid": 0
}
9- Commande ad hoc pour changer les droit d’un fichier :
Nous allons changer les droits du fichier précédemment créé :
#ansible -m file -a "path=/home/dev/documents/file.txt mode=0640" -b all webserver | SUCCESS => { "changed": true, "gid": 0, "group": "root", "mode": "0640", "owner": "root", "path": "/home/dev/documents/file.txt", "secontext": "unconfined_u:object_r:user_home_t:s0", "size": 0, "state": "file", "uid": 0 }
10-Commande ad-hoc pour démarrer un service :
#ansible -m service -a 'name=mysqld state=started' -b all
Protocole du routage
How to check the lock status of a user account in Linux
Iptables : 12 commandes à connaître
EC2 : Comment crée une instance sur AWS
Fail2Ban : How to protect Linux services