Может ли ansible извлекать обновленные факты прямо в плейбуке?

У меня проблемы с запуском полной пьесы, потому что некоторые факты, от которых зависят более поздние игры, были изменены в более ранних играх, но ansible не обновляет факты в середине.

Запуск ansible somehost -m setup, когда вся playbook запускается на новом VPS:

"ansible_selinux": {
    "status": "disabled"
}, 

Моя книга воспроизведения содержит игру, которая устанавливает SELinux и перезагружает сервер (в то время как ожидаемые ожидания_for), а более поздняя задача использует условный when: ansible_selinux.status != 'disabled'. Однако даже несмотря на то, что SELinux теперь установлен и принудительно (что потребовало перезагрузки), факты для системы по-прежнему показывают, что SELinux отключен, поэтому условный сбой и задача пропускается.

Разумеется, запуск сценария снова работает, потому что факты обновляются и теперь возвращаются:

"ansible_selinux": {
    "config_mode": "enforcing", 
    "mode": "enforcing", 
    "policyvers": 28, 
    "status": "enabled", 
    "type": "targeted"
}

Есть ли способ обновить факты в середине учебника? Может, хакнуть самому set_fact на ansible_selinux.status после перезагрузки?

Обновление: это было слишком просто, благодаря BruceP я добавил эту задачу для получения обновленных фактов в конце моей игры в SELinux.

- name: SELinux - Force ansible to regather facts
  setup: filter='ansible_selinux'

person xref    schedule 03.02.2016    source источник


Ответы (2)


Добавьте это в свою книгу, чтобы использовать модуль настройки для обновления фактов.

Например, я добавил еще один интерфейс с DHCP, теперь я хочу знать, какой у него адрес, а затем сделать это:

- name: do facts module to get latest information
  setup:
person Brent    schedule 25.05.2017

модуль настройки - это то, что Ansible использует для сбора фактов. Он неявно запускает его перед запуском вашей playbook. Вы должны иметь возможность запускать его вручную в своей книге для обновления фактов.

person Bruce P    schedule 03.02.2016