Как запустить задачу ansible, если включен ufw? - PullRequest
1 голос
/ 06 февраля 2020

Мне нужно запускать некоторые задачи, только если на сервере Ubuntu включен ufw.

Псевдокод выглядит так:

 - name: detect if ufw is enabled
   magical_module: ???
   register: ufw_is_enabled

 - name: my task
   when: ufw_is_enabled

Я вижу только это не элегантное решение:

  • exe c удаленно ufs status
  • парсит вывод:
root@test:~# ufw status
Status: inactive

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

1 Ответ

2 голосов
/ 06 февраля 2020

Что-то вроде:

- name: check whether ufw status is active
  shell: ufw status
  changed_when: False
  ignore_errors: True
  register: ufw_check

- debug:
    msg: "{{ ufw_check }}"

- name: do something if ufw is enabled
  shell: echo
  when: "'inactive' not in ufw_check.stdout"

Обязательно используйте become: True, поскольку это требуется.

Для управления системами с модулем UFW, см. Это Ansible module

Например, вы можете отключить UFW в системах, в которых вы хотите его отключить:

- name: Disable UFW on hosts
  ufw:
    state: disabled # unloads firewall and disables firewall on boot.
...