2

只有在 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模块。还有其他解决方案吗?

4

1 回答 1

4

类似于以下内容:

    - 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.
于 2020-02-06T13:19:03.430 回答