Ansible 2.9 の firewalld モジュールで NIC の zone を変更しても permanent で永続化されない件


Ansible で Firewalld の設定を行ったところ、NIC の Zone の変更について、OS を再起動すると設定がリセットされる現象を確認しました。

具体的な例

環境

  • Ansible 2.9.10
  • CentOS 8.2 (2004)

Playbook

firewalld モジュールを使います。

- name: set eth0 internal
  firewalld:
    zone: internal
    interface: eth0
    permanent: yes
    state: enabled
    immediate: yes

実行前の状態

# firewall-cmd --list-interface --zone=public
eth0 eth1

実行結果

-v を付けた結果となりますが、実行直後は設定変更されているように見えます。

TASK [common : set eth0 internal] *
 changed: [cent8-router-vm] => {"changed": true, "msg": "Permanent and Non-Permanent(immediate) operation, Changed eth0 to zone internal"}
# firewall-cmd --list-interface --zone=internal
eth0

再起動後

このように元の状態に戻ってしまいました。

# firewall-cmd --list-interface --zone=public
eth0 eth1

他の方の報告

この件は、2年前の2018年に最初の報告がありますが、現時点でも解消していないようです。

回避方法

Ansible の Firewalld モジュールではなく、firewall-cmd コマンドを実行するしかなさそうです。

- name: set eth0 internal
  command: "firewall-cmd --zone=internal --permanent --add-interface=eth0"

- name: reload firewalld
  command: "firewall-cmd --reload"

英語の情報はありましたが、日本語での事例はなかったので、今回ブログにまとめました。


Comments

comments

コメントを残す

メールアドレスが公開されることはありません。

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)