• # roles et playbooks

    Posté par . En réponse au journal Déploiement et automatisation avec Ansible - partie 1. Évalué à 10.

    L'exemple que tu donne n'est pas un role, c'est un playbook normal que tu as mis dans le répertoire roles, mais n'importe où d'autre aurait fait l'affaire (puisque tu donne son chemin complet à ansible-playbook).

    Les roles sont des répertoires (placés par défaut dans le répertoire roles que tu indique) avec une structure de sous-répertoires conventionnelle pour limiter les boilerplate. cf
    http://docs.ansible.com/ansible/playbooks_roles.html

    Voici comment restructurer ton exemple en un vrai role (je fais ça de tête, je n'ai pas testé):

    Tu crée un répertoire /etc/ansible/roles/common (common sera donc le nom de ce role), dedans tu fais un répertoire tasks dans lequel tu met un fichier mail.yml avec le contenu

    - name: install common packages for all servers
     apt: 
     update_cache=yes
     state=latest
     name={{item}}
     with_items: 
     - curl
     - htop
     - ncdu
     - pwgen
     - strace
     - sudo
     - tar
     - unzip
     - vim
     - wget
     - whois
     - screen

    Ensuite, dans un fichier skhn.yml (que tu met où tu veux) tu met ceci:

    - hosts: all
     remote_user: root
     roles: [ common ]

    Avec un exemple aussi simple, l'intérêt d'un role est simité par rapport à l'instruction include, ça devient plus intéressant quand tu y ajoute des handlers, des templates, des fichiers, des variables, car ça permet de regrouper les choses logiquement.