Nous devons commencer par installer ansible. Se qu’il faut savoir c’est qu’il est possible d’installer ansible en tant que package sur la machine directement ou alors en tant que module python et c’est cette dernière méthode que nous allons utiliser car elle nous permettra d’avoir plusieurs version d’ansible sur notre machine. Pour installer ansible en tant que module python nous allons utiliser virtual env sur python3.
root@serv:/root# apt install python3.9 python3.9-venv
root@serv:/root# python3.9 -m venv ansible
ensuite on vas sourcer le fichier d'activation de l'environment.
root@serv:/root# cd ansible
root@serv:/root# . ./bin/activate
(ansible) root@serv:/root/ansible# pip install ansible
Maintenant nous allons définir un fichier inventaire (qui contient la liste des seveurs que nous allons manipuler)
echo 'serv.atomit.local' > inventaire.yml
Pour qu’ansible fonctionne vous avez besoin au minimum que ssh soit accessible et aussi que python soit installé pour le bon fonctionnement des modules. Nous allons effectuer des actions basics. Un ping vers notre serveur, installation de python3.9 et donner les droits sudo à l’utilisateur ansible.
(ansible) root@serv:/root/ansible# cat base.yml
- hosts: all
gather_facts: no
become: yes
tasks:
- name: Ping Host
ping:
- name: install python 3.9
raw: test -e /usr/bin/python || ( [ $(command -v apt) ] && apt install -y python3.9 )
- name: Création et ajout du compte ansible dans le groupe sudo
user:
name: ansible
groups: sudo
append: yes
pour la commande suivant vous devez indiquer le nom d’un utilisateur qui à les droits root jojo dans notre cas.
(ansible) root@serv:/root/ansible# ansible-playbook -i inventaire.yml --user jojo --ask-pass --become --ask-become-pass base.yml
SSH password:
BECOME password[defaults to SSH password]:
PLAY [all] **************************************************************************************************************************************
TASK [Gathering Facts] **************************************************************************************************************************************
ok: [serv.atomit.local]
TASK [Ping Host] **************************************************************************************************************************************
ok: [serv.atomit.local]
TASK [install python 3.9] **************************************************************************************************************************************
changed: [serv.atomit.local]
TASK [Création et ajout du compte ansible dans le groupe sudo] ******************************************************************************************************************************
ok: [serv.atomit.local]
PLAY RECAP **************************************************************************************************************************************
serv.atomit.local : ok=4 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Il est aussi possible d’éxécuter des modules ansible directement sans utiliser les fichiers de définition de module.
(ansible) root@serv:/root/ansible# ansible -i inventaire.yml -m user -a 'name=ansible groups=sudo append=yes' --user jojo --ask-pass --become --ask-become-pass all
SSH password:
BECOME password[defaults to SSH password]:
serv.atomit.local | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"append": true,
"changed": false,
"comment": "",
"group": 1001,
"groups": "sudo",
"home": "/home/ansible",
"move_home": false,
"name": "ansible",
"shell": "/bin/sh",
"state": "present",
"uid": 1001
}
Si vous souhaitez récupérer la liste des facts d’un host vous pouvez utiliser.
(ansible) root@serv:/root/ansible# ansible your_server.atomit.local --user jojo -bKk -m ansible.builtin.setup
SSH password:
BECOME password[defaults to SSH password]:
serv.atomit.local | SUCCESS => {
"ansible_facts": {
"ansible_all_ipv4_addresses": [
"10.0.2.15",
"192.168.56.133"
],
"ansible_all_ipv6_addresses": [
"fe80::a00:27ff:fe63:7af1",
"fe80::a00:27ff:fe4b:bcc6"
],
"ansible_apparmor": {
"status": "enabled"
},
"ansible_architecture": "x86_64",
"ansible_bios_date": "12/01/2006",
"ansible_bios_vendor": "innotek GmbH",
"ansible_bios_version": "VirtualBox",
"ansible_board_asset_tag": "NA",
"ansible_board_name": "VirtualBox",
"ansible_board_serial": "0",
Voilà le minimum pour ansible. Bien-sur vous pouvez effectuer des actions beaucoup plus complexe, cela sera l’objet d’un prochain tuto.
Laisser un commentaire