如果启用了 ufw,如何运行 ansible 任务?

Max*_*ock 2 ansible ufw

仅当 Ubuntu 服务器上启用了 ufw 时,我才需要运行一些任务。

伪代码如下所示:

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

 - name: my task
   when: ufw_is_enabled
Run Code Online (Sandbox Code Playgroud)

我只看到这个不优雅的解决方案:

  • 远程执行ufs status
  • 解析输出:
root@test:~# ufw status
Status: inactive
Run Code Online (Sandbox Code Playgroud)

也许启用 ufw 时有一些文件?在这种情况下,就可以使用stat模块了。还有其他解决方案吗?

Kev*_*n C 5

大致如下:

    - name: check whether ufw status is active
      shell: ufw status
      changed_when: false
      register: ufw_check

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

    - name: do something if ufw is enabled
      shell: echo
      when: "'inactive' not in ufw_check.stdout"
Run Code Online (Sandbox Code Playgroud)

确保使用become: true,因为需要 root 权限才能成功执行该命令。

要使用 UFW 模块管理系统,请参阅此 Ansible 模块

例如,您可以在想要禁用 UFW 的系统上禁用它:

    - name: Disable UFW on hosts
      ufw:
        state: disabled # unloads firewall and disables firewall on boot.
Run Code Online (Sandbox Code Playgroud)