Ansible - Faire un premier playbook !
Objectif: Faire un playbook qui permettra de faire un ping de lab.lenorcy.fr depuis le node manager (noeud d’administration) sur lequel nous avons installé ansible
Connexion ssh avec clés depuis le node manager#
Sur la machine lab.lenorcy.fr, nous créons l’utilisateur ansible :
adduser ansible
usermod -G sudo ansible
Sur le node manager nous allons créer une paire de clés, puis nous copions la clé publique sur le noeud distant (lab.lenorcy.fr) :
ssh-keygen -f ~/.ssh/ansible-home
ssh-copy-id -i ~/.ssh/ansible-home.pub ansible@lab.lenorcy.fr
Préparation de l’environnement#
Nous allons créer l’arborescence de travail suivante sur le node manager :
├── ansible.cfg (f)
├── ping.yml (f)
└── inventories
├── connexion-ansible.yml (f)
├── group_vars
│ └── all
│ └── ansible_account_vault.yml (f)
└── hosts (f)
Création des dossiers :
mkdir -p inventories/group_vars/all
Création du fichier de configuration de base ansible.cfg :
cat > ansible.cfg <<EOL
[defaults]
inventory = inventories
ask_vault_pass = true
roles_path = roles
interpreter_python = /usr/bin/python3
[ssh_connection]
pipelining = True
EOL
Création du fichier inventaire hosts :
cat > inventories/hosts <<EOL
[lab]
lab.lenorcy.fr
EOL
Création du fichier contenant les variables permettant la connexion avec le compte ansible :
cat > inventories/connexion-ansible.yml <<EOL
# Mode de connexion par défaut avec compte Ansible
all:
vars:
ansible_user: ansible
ansible_become: yes
ansible_become_method: sudo
ansible_become_pass: "{{ ansible_account_password }}"
EOL
Création du fichier vault qui contiendra le secret :
ansible-vault edit ansible_account_vault.yml
Nous y mettons le mot de passe :
ansible_account_password: "censured"
Ainsi positionné dans l’arborescence, ce mot de passe pourra servir à administrer tous les noeuds.
Création de notre premier script ansible (qu’on appelle également playbook) qui réalisera un test de ping ! :
cat > ping.yml <<EOL
---
- hosts: all
vars:
# puisque la commande ping ne necessite pas d'être root, on positionne ansible_become à no
ansible_become: no
tasks:
- ping:
EOL
Exécution de notre premier playbook !#
On utilise la commande ansible-playbook :
$ ansible-playbook ping.yml -l lab
Vault password:
PLAY [all] **********************************************************************************************
TASK [Gathering Facts] **********************************************************************************
ok: [lab.lenorcy.fr]
TASK [ping] *********************************************************************************************
ok: [lab.lenorcy.fr]
PLAY RECAP **********************************************************************************************
lab.lenorcy.fr : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Il existe un module ping évitant la création d’un playbook. Il suffit de le charger via la commande ansible :
$ ansible -m ping lab.lenorcy.fr -e ansible_become=no
Vault password:
lab.lenorcy.fr | SUCCESS => {
"changed": false,
"ping": "pong"
}