¿Hay alguna manera de ejecutar solo una tarea en el libro de jugadas ansible?
Por ejemplo, en roles/hadoop_primary/tasks/hadoop_master.yml
. Tengo "start hadoop job tracker services"
tarea ¿Puedo ejecutar esa única tarea?
archivo 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
Hay una manera, aunque no muy elegante:
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
fuente
--check
y-vvv
también es bastante útil. Realmente no ejecutará el comando pero le dará una salida muy detallada de lo que hubiera sucedido.FWIW con Ansible 2.2 se puede usar include_role :
libro de jugadas
test.yml
:luego en
roles/test/tasks/other.yml
:E invoque el libro de jugadas con:
ansible-playbook test.yml
para obtener:fuente
Me encantaría poder usar un rol como una colección de tareas de modo que, en mi libro de jugadas, pueda elegir qué subconjunto de tareas ejecutar. Desafortunadamente, el libro de jugadas solo puede cargarlos todos y luego debe usar la
--tags
opción en la línea de cm para elegir qué tareas ejecutar. El problema con esto es que todas las tareas se ejecutarán a menos que recuerde configurar--tags
o--skip-tags
.Sin embargo, he configurado algunas tareas con una
when:
cláusula que solo se activará si se establece una var.p.ej
Ahora, esta tarea no se activará de forma predeterminada, pero solo si configuro el
stuff=true
o en un libro de jugadas:
fuente
¿Estás familiarizado con los controladores ? Creo que es lo que estás buscando. Mueva el reinicio de
hadoop_master.yml
aroles/hadoop_primary/handlers/main.yml
:y ahora llame al uso
notify
enhadoop_master.yml
:fuente
Esto se puede hacer fácilmente usando las etiquetas
El ejemplo de etiquetas se define a continuación:
para ejecutar las etiquetas usamos el comando
fuente