Как запустить ansible задачу, если ufw включен?

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

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

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

 - name: my task
   when: ufw_is_enabled

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

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

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


person Max Block    schedule 06.02.2020    source источник


Ответы (1)


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

    - 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

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

    - name: Disable UFW on hosts
      ufw:
        state: disabled # unloads firewall and disables firewall on boot.
person Kevin C    schedule 06.02.2020