Voici un template plus élaboré pour démarrer un nouveau playbook Ansible et prenant en compte des variables.
---
# Description
- name: Description du playbook
hosts: localhost
gather_facts: true
gather_subset: all
become: true
serial: false
collections:
- community.vmware
vars:
bar: 1
foo: "bar"
bar_dict: {
foo: {bar: "foo", foo: 2},
bar: {bar: "bar", foo: 3}
}
date: "{{lookup('pipe','date +%Y%m%d')}}"
bar_list:
- bar
- foo
tmp_dir: /tmp
tmp_file: "{{ tmp_dir }}/toto"
enc_vault_password: !vault |
$ANSIBLE_VAULT;1.1;AES256
32326566396363316431393632363934396534323464343139636430386337633930383363303531
3765303765326332316633316565356533623630383337320a306131613737336662616234343135
37373938646264653264653639386262303662366464396163346366666230646332393639653532
3761333761623763610a656337316333393963386466303734663066313334396234656166383731
3830
ansible_distro: "{{ ansible_distribution | lower }}"
vars_prompt:
- name: install_git
prompt: Faut-il installer le programme git (o/n) ?
private: false
default: o
pre_tasks:
- include_vars: vars.yaml
tasks:
- name: the first task
# Comment
ansible.builtin.debug:
msg: |
let's go
inventory_hostname: {{ inventory_hostname }}
bar: {{ bar }}
foo: {{ foo }}
bar_dict: {{ bar_dict }}
bar_dict['bar']['foo']: {{ bar_dict['bar']['foo'] }}
date: {{ date }}
bar_list: {{ bar_list }}
tmp_dir: {{ tmp_dir }}
tmp_file: {{ tmp_file }}
dec_vault_password: {{ enc_vault_password }}
install_git: {{ install_git }}
include_vars__other: {{ other }}
ansible_distribution: {{ ansible_distribution }}
ansible_distro: {{ ansible_distro }}
verbosity: 0
Quelques petites explications:
- gather_facts (true/false) permet d'obtenir l'inventaire du ou des hosts
- gather_subset (liste exhaustive) permet d'obtenir des informations supplémentaire concernant le ou les hosts
- become (true/false) permet d'obtenir les droits SUDO
- serial (true/false) permet d'indiquer s'il faut exécuter les tâches en série, host par host ou simultanément sur tous les hosts
- collections permet d'inclure des plugins Ansible supplémentaires
- vars permet d'inclure différentes variables (string, int, dict, list)
- vars_prompt permet d'inclure des variables initialisées par un prompt lors de l'exécution du playbook
- pre_tasks permet d'exécuter des tâches avant l'exécution des tâches du playbook (j'inclus des variables globales grâce à include_vars)
Pour info, la commande lookup('pipe', ...) permet de récupérer le résultat de la sortie standard de la commande passée en paramètre.
Plus d'info ici