我将 Ansible playbook 部署到一些debian:stable
旨在更新包索引缓存的机器上,ufw
以与 Ansible 架构无关和版本无关的方式安装和设置它。
- name: Update all apt package index cache (apt update)
apt: update_cache=yes
- name: Install a latest ufw
apt:
name: ufw
state: latest
- name: Setup firewall with ufw
ufw:
rule: allow
port: 22,25,80,443
我的困难在这里
在 Bash 中,我也经常使用ufw --force enable
,但我没有找到如何使用 Ansible-YAML 语法将其添加到剧本中Ansible ufw 文档。
我的问题
ufw --force enable
如果有的话,我应该如何正确添加?
答案1
如果您只想运行 shell 命令,可以使用 Ansibleshell
或command
模块。
就目前而言ufw
,我认为它直接编辑规则文件。查看源代码,它在操作之前和之后运行此操作以检查这些文件是否已更改内容。
grep '^### tuple' /lib/ufw/user.rules /lib/ufw/user6.rules /etc/ufw/user.rules /etc/ufw/user6.rules
至于启用或禁用,这就是该state
操作的目的
只要你说state: enabled
,就会做到ufw -f enable
if command == 'state':
states = {'enabled': 'enable', 'disabled': 'disable',
'reloaded': 'reload', 'reset': 'reset'}
execute(cmd + [['-f'], [states[value]]])