TransWikia.com

como hacer que when en ansible se aplique a todas las tareas

Stack Overflow en español Asked by ortiga on November 21, 2020

tengo el siguiente playbook.yml:

tasks:
   - name: INSTALAR EN CENTOS 7
     yum:
       name: fusioninventory-agent-task-inventory
       state: present
     when:
       - ansible_facts['distribution'] == "CentOS"
       - ansible_facts['distribution_major_version'] == "7"
   - name: CRONTAB
     cron:
       name: "programar tarea fusioninventory cron"
       minute: "20"
       hour: "10"
       job: "fusioninventory-agent --server=https://.../plugins/fusioninventory/ --no-ssl-check > /dev/null"
     when:
       - ansible_facts['distribution'] == "CentOS"
       - ansible_facts['distribution_major_version'] == "7"

que hay que hacer para no tener que repetir el when en los módulos cron y yum y ese when se aplique para todas esas tareas y no repetir el código en las dos tareas.

One Answer

Una forma sería usar meta: end_play si lo que quieres es terminar la ejecución en base a una condición, docs. Aunque no lo recomiendo mucho.. no es una feature muy conocida.

Otra forma es agrupar las tareas en un bloque lógico usando block

Y por último, puedes definir un rol e importar el rol solo cuando la condición se cumple, docs

Lo más simple es ir a por el block y si reutilizas las tareas en otros sitios entonces ya pasarlo a un rol.

tasks:
  - name: Instalar CentOs
    block:
      - name: install centos task
      - name: cron task
    when:
      - ansible_facts['distribution'] == "CentOS"
      - ansible_facts['distribution_major_version'] == "7"

Correct answer by nax on November 21, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP