Saltar al contenido

¿Cómo ejecutar solo una tarea en el libro de jugadas ansible?

Si hallas algún problema con tu código o proyecto, recuerda probar siempre en un entorno de testing antes añadir el código al proyecto final.

Solución:

Deberías usar tags: como se documenta en https://docs.ansible.com/ansible/latest/user_guide/playbooks_tags.html


Si tiene un libro de jugadas grande, puede ser útil poder ejecutar una parte específica de la configuración sin ejecutar todo el libro de jugadas.

Tanto las jugadas como las tareas admiten “etiquetas:” attribute por esta razón.

Ejemplo:

tasks:

    - yum: name= item  state=installed
      with_items:
         - httpd
         - memcached
      tags:
         - packages

    - template: src=templates/src.j2 dest=/etc/foo.conf
      tags:
         - configuration

Si solo quisiera ejecutar la parte de “configuración” y “paquetes” de un libro de jugadas muy largo, podría hacer esto:

ansible-playbook example.yml --tags "configuration,packages"

Por otro lado, si desea ejecutar un libro de jugadas sin ciertas tareas, puede hacer esto:

ansible-playbook example.yml --skip-tags "notification"

También puede aplicar etiquetas a roles:

roles:
  -  role: webserver, port: 5000, tags: [ 'web', 'foo' ] 

Y también puede etiquetar declaraciones de inclusión básicas:

- include: foo.yml tags=web,foo

Ambos tienen la función de etiquetar cada tarea individual dentro de la declaración de inclusión.

Hay una manera, aunque no muy elegante:

  1. ansible-playbook roles/hadoop_primary/tasks/hadoop_master.yml --step --start-at-task='start hadoop jobtracker services'
  2. Recibirá un aviso: Perform task: start hadoop jobtracker services (y/n/c)
  3. Responder y
  4. Recibirá un mensaje siguiente, presione Ctrl-C

FWIW con Ansible 2.2 se puede usar include_role:

libro de jugadas test.yml:

- name: test
  hosts:
    - 127.0.0.1
  connection: local
  tasks:
    - include_role:
        name: test
        tasks_from: other

entonces en roles/test/tasks/other.yml:

- name: say something else
  shell: echo "I'm the other guy"

E invoque el libro de jugadas con: ansible-playbook test.yml Llegar:

TASK [test : say something else] *************
changed: [127.0.0.1]

Recuerda algo, que tienes la capacidad de glosar tu experiencia si te ayudó.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *