10
Un « Playbook » est un fichier écrit en YAML, dans lequel on liste des instructions demandant à Ansible d’effectuer des actions.
Il est possible de créer le premier fichier « Playbook » dans un répertoire de son choix, mais il peut être opportun de commencer à s’intéresser aux chapitre des bonnes pratiques de la documentation Ansible quant aux choix de l’organisation des répertoires. Le premier intérêt immédiat est qu’il existe un fonctionnement par défaut reposant sur une organisation des répertoires qui peut faire gagner du temps et de la syntaxe.
Nous pouvons créer notre premier « Playbook » nommé myFirstPlaybook.yml. Vous noterez l’extension « .yml » qui désigne ce fichier comme étant au format YAML avec une syntaxe particulière à respecter, comme ci-dessous :
---
- name: Test de ping sur toutes les machines
hosts: Ansible
gather_facts: no
tasks:
- name: run ping
ping:
[root@overwatch playbook]# ansible-playbook myFirstPlaybook.yml PLAY [Test de ping sur toutes les machines] *********************************************************** TASK [run ping] *********************************************************** ok: [overwatch] PLAY RECAP *********************************************************** overwatch : ok=1 changed=0 unreachable=0 failed=0
Ce premier « Playbook » est lancé directement avec la commande « ansible-playbook ». Il ne fait, pour l’instant, que des ping mais permet de comprendre un peu plus en détail la structure du fichier YAML et son fonctionnement avec Ansible.
Note : A la fin du playbook, l’instruction « ping: » se termine par « : » qu’il ne faut surtout pas oublier pour éviter une erreur.
Nous pouvons aussi réaliser un « Playbook » plus élaboré, permettant d’installer des paquets nécessaires pour un serveur web (vim, apache, php, mysql, pdo…).
---
- name: Installation de paquets de base
hosts: Ansible
gather_facts: no
tasks:
- name: Installation des paquets
apt: name={{ item }} state= latest
with_items:
- vim
- apache2
- php
- mysql
- pdo
---
- name: Get system version
hosts: ios_switch
gather_facts: false
tasks:
- name: show version
raw: "show version"
register: display_return
- debug: var=display_return.stdout_lines
Le fichier YAML peut être exécuté de la façon suivante :
ansible-playbook ios_playbook.yml -u myuser -k | grep "ok:\|Cisco IOS Software"
Ansible possède un certain nombre de « Network Modules », directement inclus dans la distribution de base, dont beaucoup sont associés à des constructeurs particuliers. Il existe un « Applications Store », appelé « Galaxy », depuis lequel il est possible de télécharger d’autres modules. Pour rebondir sur l’exemple précédent, il est possible d’illustrer le concept avec « ios_command Network Module » et l’usage des « Magic Variables », afin d’effectuer une sauvegarde de configuration. On peut noter l’escalade de privilèges pour exécuter la commande demandée.
---
- name: Get config and save it
hosts: ios_switch
gather_facts: false
connection: local
tasks:
- name: get config
ios_command:
authorize: yes
commands:
- "show run"
register: display_return
- debug: var=display_return.stdout_lines
- name: save output to a file
copy:
content="{{ display_return.stdout[0] }}"
dest="./{{ inventory_hostname }}.txt"
Le « Playbook » s’exécute à l’aide de la commande :
ansible-playbook ios_playbook_module.yml -u myuser -k