Existe-t-il un moyen d'exécuter une seule tâche dans un playbook ansible?
Par exemple, dans roles/hadoop_primary/tasks/hadoop_master.yml
. J'ai une "start hadoop job tracker services"
tâche. Puis-je simplement exécuter cette tâche?
Fichier hadoop_master.yml:
---
# Playbook for Hadoop master servers
- name: Install the namenode and jobtracker packages
apt: name={{item}} force=yes state=latest
with_items:
- hadoop-0.20-mapreduce-jobtracker
- hadoop-hdfs-namenode
- hadoop-doc
- hue-plugins
- name: start hadoop jobtracker services
service: name=hadoop-0.20-mapreduce-jobtracker state=started
tags:
debug
Il existe un moyen, bien que pas très élégant:
ansible-playbook roles/hadoop_primary/tasks/hadoop_master.yml --step --start-at-task='start hadoop jobtracker services'
Perform task: start hadoop jobtracker services (y/n/c)
y
Ctrl-C
la source
--check
et-vvv
est également très utile. Il n'exécutera pas réellement la commande mais vous donnera une sortie très détaillée de ce qui se serait passé.FWIW avec Ansible 2.2 on peut utiliser include_role :
livre de jeu
test.yml
:puis dans
roles/test/tasks/other.yml
:Et invoquez le playbook avec:
ansible-playbook test.yml
pour obtenir:la source
J'adorerais pouvoir utiliser un rôle comme une collection de tâches pour que, dans mon livre de jeu, je puisse choisir le sous-ensemble de tâches à exécuter. Malheureusement, le playbook ne peut que les charger tous, puis vous devez utiliser l'
--tags
option sur la cmdline pour choisir les tâches à exécuter. Le problème avec ceci est que toutes les tâches s'exécuteront à moins que vous ne vous rappeliez de définir--tags
ou--skip-tags
.Cependant, j'ai configuré certaines tâches avec une
when:
clause qui ne se déclenchera que si un var est défini.par exemple
Désormais, cette tâche ne se déclenchera pas par défaut, mais uniquement si je règle le
stuff=true
ou dans un playbook:
la source
connaissez-vous les gestionnaires ? Je pense que c'est ce que vous recherchez. Déplacez le redémarrage de
hadoop_master.yml
versroles/hadoop_primary/handlers/main.yml
:et maintenant appeler l'utilisation
notify
danshadoop_master.yml
:la source
Cela peut être facilement fait en utilisant les balises
L'exemple de balises est défini ci-dessous:
pour exécuter les balises, nous utilisons la commande
la source