友とコーヒーと嘘と胃袋

Docker

iptablesをAnsibleで管理したかっただけなのに

iptablesをAnsibleで管理したかっただけなのに

結論

Dockerを利用している場合、iptablesのルールを変更した際はDockerデーモンを再起動させましょう

- name: Apply iptables rules
  ansible.builtin.command: iptables-restore /etc/iptables/rules.v4
  become: true
  register: apply_iptables
  changed_when: true
  failed_when: apply_iptables.rc != 0
  notify: Restart Docker

- name: Restart Docker
  ansible.builtin.systemd:
    name: docker
    state: restarted
  become: true

時系列

複数Linuxサーバ(アプリは全てDockerで動いている)がありiptablesの管理を手でやっていたのだが、毎回コマンドを思い出すのが嫌になり、Ansibleコード化を決意

今ならAIでサクサクコードを書けるね、よし適用!

全アプリが外部と通信できなくなりダウン

何が起きたのか

Dockerは内部ネットワーク管理にiptablesルールを利用している。
https://docs.docker.jp/network/iptables.html

Docker管理のiptablesルールを上書きしてしまったため、Dockerで動くアプリの通信ができなくなってしまった。(以降、結論に戻る)

あとがき

そもそもiptablesで管理するのを辞めたい