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.
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
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP