ansible.posix.firewalld

在 RHEL 裡要設定防火牆,主要是使用 firewall-cmd 這個指令,在 Ansible 對應的模組是 ansible.posix.firewalld。

若熟悉 firewall-cmd 用法,對於使用這模組會很容易入手。

以下就幾個常用的用法做說明。

在防火牆開通 HTTP 服務,或者是開通 8081 port,然後在開通後立即更新防火牆狀態。

- name: permit traffic in default zone for https service
  ansible.posix.firewalld:
    service: https
    permanent: yes
    state: enabled
    immediate: yes
- name: permit traffic in default zone on port 8081/tcp
  ansible.posix.firewalld:
    port: 8081/tcp
    permanent: yes
    state: enabled
    immediate: yes

以上的 playbook 對應到實際的指令如下

firewall-cmd --add-service https --permanent
firewall-cmd --reload
firewall-cmd --add-port "8081/tcp" --permanent
firewall-cmd --reload

那要關閉指定的 port 該怎麼做呢?跟上面開通的用法很相近,差異在於把 state 改為 disabled

- name: do not permit traffic in default zone on port 8081/tcp
  ansible.posix.firewalld:
    port: 8081/tcp
    permanent: yes
    state: disabled
    immediate: yes

以上的 playbook 對應的實際的指令如下

firewall-cmd --remove-port="8081/tcp" --permanent
firewall-cmd --reload

那也可以針對 zone 來設定,或者是設定規則跟 port forwarding 等等,這邊因為這些不常用到,就先略過,等之後有遇到特殊用法,再來介紹。

參考資料