linux 使用ansible验证firewalld配置

soat7uwm  于 2023-05-28  发布在  Linux
关注(0)|答案(1)|浏览(361)

我正在使用ansible配置firewalld。
lineinfile模块有一个validate参数,我想用它来验证我的配置。
我试过这个:

- name: config firewalld
  become: true
  ansible.builtin.lineinfile:
    path: /etc/firewalld/firewalld.conf
    regexp: "^#?FirewallBackend"
    line: "FirewallBackend=iptables"
    state: present
    validate: firewall-cmd --check-config         # <--------------

但我得到一个ansible错误:
验证必须包含%s:firewall-cmd --check-config
这是因为它需要文件的路径(%s)。
我查阅了--check-config的文档,想找到一种指定配置文件路径的方法,但什么也找不到。

  • 有没有办法做到这一点?* 我可以运行一个原始的sudo firewall-cmd --check-config,但我希望有一个本地的ansible方法来做到这一点。
unguejic

unguejic1#

the repo的细节来看,看起来这不可能用ansible干净地完成。这里有一个解决方案:

- name: modify config
  become: true
    # ...
  register: result1

- name: modify config
  become: true
    # ...
  register: result2

- name: modify config
  become: true
    # ...
  register: result3

- name: validate config
  become: true
  command: firewall-cmd --check-config              
  when: result1 is changed or result2 is changed or result3 is changed
  notify: "reload firewalld"

相关问题