Ansible: playbooks: Template élaboré

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

Etiquettes: 

Ajouter un commentaire

Filtered HTML

  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.
  • Tags HTML autorisés : <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Les lignes et les paragraphes vont à la ligne automatiquement.

Plain text

  • Aucune balise HTML autorisée.
  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.
  • Les lignes et les paragraphes vont à la ligne automatiquement.
CAPTCHA
Cette question permet de s'assurer que vous êtes un utilisateur humain et non un logiciel automatisé de pollupostage.
CAPTCHA visuel
Entrez les caractères (sans espace) affichés dans l'image.