Comment appeler les rôles dans un playbook Ansible?
sobes.tech IA
Réponse de l'IA
Les rôles dans Ansible peuvent être invoqués de plusieurs façons dans un playbook.
-
Utilisation du mot-clé
rolesau niveau du playbook :# playbooks/my_playbook.yml - name: Appliquer des rôles aux serveurs hosts: webservers become: yes roles: - role: common # Appel du rôle 'common' - role: nginx # Appel du rôle 'nginx' vars: # Passage de variables au rôle nginx_port: 8080 - another_role # Forme abrégée d'appelCette méthode est utilisée pour invoquer des rôles qui seront exécutés séquentiellement pour tous les hôtes définis dans la section
hosts. -
Utilisation du module
include_roledans la liste des tâches :# playbooks/my_playbook.yml - name: Appliquer des rôles avec conditions hosts: appservers tasks: - name: Inclure le rôle de la base de données (seulement pour dev) include_role: name: database when: env == 'dev' # Appel du rôle conditionnel - name: Inclure le rôle de l'application include_role: name: app vars: app_version: 1.2.0 # Passage de variables au rôleLe module
include_roleexécute le rôle comme s'il s'agissait d'une liste de tâches incluse dans le play actuel. Il permet d'utiliser des conditions (when) et des boucles (loop) pour contrôler l'exécution du rôle. -
Utilisation du module
import_roledans la liste des tâches :# playbooks/my_playbook.yml - name: Importer le rôle de l'application hosts: appservers tasks: - name: Importer le rôle de l'application pour tous les hôtes import_role: name: app vars: app_config_file: /etc/app/config.conf # Passage de variablesLe module
import_roleest traité lors de l'analyse du playbook, avant son exécution effective. Cela signifie que toutes les directives, telles quewhen, seront appliquées à toutes les tâches à l'intérieur du rôle, et non seulement à l'appel du rôle. Les variables passées viavarsseront accessibles à l'intérieur du rôle.
La différence clé entre include_role et import_role réside dans le moment de traitement : import_role est traité statiquement lors de l'analyse, tandis que include_role est traité dynamiquement lors de l'exécution du playbook. Cela influence la possibilité d'utiliser des conditions et des boucles :
| Fonction | include_role |
import_role |
|---|---|---|
| Traitement | Dynamique | Statique |
Utilisation de when pour l'invocation |
Oui | Non |
Utilisation de loop pour l'invocation |
Oui | Non |
| Capacité d'utiliser des variables définies précédemment dans le play | Oui | Non |
Le choix entre ces méthodes dépend de la flexibilité requise et du moment de traitement. Pour une inclusion simple de rôles, la clé roles ou import_role suffit généralement. Pour des scénarios plus complexes avec conditions et boucles, include_role est utilisé.