Gibt es eine Möglichkeit, nur eine Aufgabe in einem ansible Playbook auszuführen?
Zum Beispiel in roles/hadoop_primary/tasks/hadoop_master.yml
. Ich habe eine "start hadoop job tracker services"
Aufgabe. Kann ich nur diese eine Aufgabe ausführen?
hadoop_master.yml Datei:
---
# 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
Es gibt einen Weg, wenn auch nicht sehr elegant:
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
quelle
--check
und zu-vvv
kombinieren ist auch sehr nützlich. Der Befehl wird nicht ausgeführt, aber Sie erhalten eine sehr ausführliche Ausgabe darüber, was passiert wäre.FWIW mit Ansible 2.2 kann include_role verwenden :
Spielbuch
test.yml
:dann in
roles/test/tasks/other.yml
:Und rufen Sie das Playbook auf mit: um
ansible-playbook test.yml
zu erhalten:quelle
Ich würde die Möglichkeit lieben, eine Rolle als Sammlung von Aufgaben zu verwenden, sodass ich in meinem Spielbuch auswählen kann, welche Teilmenge von Aufgaben ausgeführt werden soll. Leider kann das Playbook nur alle laden, und dann müssen Sie die
--tags
Option in der cmdline verwenden, um auszuwählen, welche Aufgaben ausgeführt werden sollen. Das Problem dabei ist, dass alle Aufgaben ausgeführt werden, sofern Sie nicht daran denken,--tags
oder festzulegen--skip-tags
.Ich habe jedoch einige Aufgaben mit einer
when:
Klausel eingerichtet, die nur ausgelöst wird, wenn eine Variable festgelegt ist.z.B
Jetzt wird diese Aufgabe nicht standardmäßig ausgelöst, sondern nur, wenn ich die Einstellung vorgenommen habe
stuff=true
oder in einem Spielbuch:
quelle
Kennen Sie sich mit Handlern aus ? Ich denke, es ist das, wonach Sie suchen. Verschieben Sie den Neustart von
hadoop_master.yml
nachroles/hadoop_primary/handlers/main.yml
:und rufen Sie jetzt use
notify
in aufhadoop_master.yml
:quelle
Dies kann einfach mit den Tags erfolgen
Das Beispiel für Tags ist unten definiert:
Um die Tags auszuführen, verwenden wir den Befehl
quelle