Ответ 1
Ansible позволяет вам управлять своим выходом с помощью пользовательского callbacks.
В этом случае вы можете просто использовать обратный вызов skippy
, который ничего не выводит на пропущенную задачу.
У меня есть Ansible роль, например
---
- name: Deploy app1
include: deploy-app1.yml
when: 'deploy_project == "{{app1}}"'
- name: Deploy app2
include: deploy-app2.yml
when: 'deploy_project == "{{app2}}"'
Но я развертываю только одно приложение в одном вызове роли. Когда я развертываю несколько приложений, я вызываю роль несколько раз. Но каждый раз есть много skipped tasks output
(из задач, которые не проходят условие), чего я не хочу видеть. Как я могу избежать этого?
Ansible позволяет вам управлять своим выходом с помощью пользовательского callbacks.
В этом случае вы можете просто использовать обратный вызов skippy
, который ничего не выводит на пропущенную задачу.
Я предполагаю, что вы не хотите видеть пропущенные задачи на выходе при запуске Ansible.
Установите значение false в файле ansible.cfg.
display_skipped_hosts = false
Примечание. Он все равно выдает имя задачи, хотя больше не будет отображаться "пропущено".
UPDATE: кстати, вы должны убедиться, что ansible.cfg находится в текущем рабочем каталоге.
Взято из файла ansible.cfg.
ansible будет читать ANSIBLE_CONFIG, ansible.cfg в текущем рабочем каталоге,.ansible.cfg в домашний каталог или /etc/ansible/ansible.cfg, в зависимости от того, что это сначала находит.
Поэтому убедитесь, что вы устанавливаете display_skipped_hosts = false
в файл справа ansible.cfg.
Сообщите мне, как вы идете
Если вы не возражаете потерять цвета, вы можете преодолеть пропущенные задачи, пропустив вывод через sed:
ansible-playbook whatever.yml | sed -nr '/^TASK/{h;n;/^skipping:/{n;b};H;x};p'
Если вы используете роли, вы можете использовать when
для отмены include в main.yml
# roles/myrole/tasks/main.yml
- include: somefile.yml
when: somevar is defined
# roles/myrole/tasks/somefile.yml
- name: this task will only run (and be seen in the output) if somevar is defined
debug:
msg: "Hello World"