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