Ansible
Ansible

Ansible: 10 commandes ad-hc à connaitre

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