- 更新日: 2014年8月7日
- Vagrant & Chef
iptables や sshd の Chef recipe で notifies :restart を書くべきかどうか
あまりサーバーの状態をブラックボックス化させたくないので、Chef Cookbook/Recipe は基本自作するように努めているのですが、昨日ちょっと考えたことを書きます。iptables, sshd, network などの SSH 接続、ネットワーク周りなどサーバー構成の重要な部分について。
iptables や sshd での notifies :restart
昨日 iptables 設定用の自作 Recipe を修正した時に考えたことです。iptables や sshd , network などネットワーク周りのサービス設定を Chef で自動化する場合に、設定ファイルを template や cookbook_file リソースで作成するわけですが、その時 notifies :restart の扱いをどうするべきか。以下のような notifies :restart の処理を書くべきかどうか、という問題を考えました。
iptables 用の recipe
1 2 3 4 5 6 |
cookbook_file "/etc/sysconfig/iptables" do owner "root" group "root" mode "0600" notifies :restart, 'service[iptables]' end |
sshd 用の recipe
1 2 3 4 5 6 |
cookbook_file "/etc/ssh/sshd_config" do owner "root" group "root" mode "0600" notifies :restart, 'service[sshd]' end |
何が問題としてひっかかったか
Chef の Recipe はローカル環境やテスト環境で試した後に本番環境に適用させるとはいえ、万が一ネットワーク周りの template, cookbook_file の設定ファイルにミスがあった場合、最悪 Cookbook 適用後に SSH ログインができなくなってしまうなどの恐れがあるのではないか・・・と。
iptables や sshd, network などのデーモンは、他ののデーモンより扱いを慎重にしないといけません。となると、保守的にサーバーを運用するとしたら、それらのデーモン(サービス)の Recipe では notifies :restart を書かずに、Recipe 修正後に手動でサービス再起動させるのでしょうかね…。
定石が分からなかったので、Chef コミュニティにある opscode 製 Recipe のソースを読んでみたところ、rebuild-iptables.erb で iptables サービスを再起動させているようです。
opscode-cookbooks/iptables: rebuild-iptables.erb
1 2 3 4 |
def install_redhat(data) write_iptables("/etc/sysconfig/iptables", data) system("/sbin/service", "iptables", "restart") end |
install_redhat メソッドが最後のほうで呼び出されています。まあ十分にテストされてるでしょうから大丈夫なのでしょうけど。iptables や sshd などはコミュニティの Cookbook を使ったほうが良いかもです・・・。
iptables Cookbook – Chef Supermarket
一応現段階では、私は iptables などネットワーク周りの自作の Recipe では、notifies :restart を書かないようにしました。とりあえず保守的に手動で restart させる方針で行こうかと。
- Vagrant & Chef の関連記事
- Vagrantで使うVirtualBoxのVM(仮想マシン)を外付けHDDに移動
- Chefで/etc/sysctl.confのkernel.panicを設定
- Chefでtelnetをインストール
- Chefでyumリポジトリを追加する設定
- Chef で iptables の設定
- ChefでSSH接続用の公開鍵をサーバーに設置
- nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
- Chef Recipe でユーザー・グループを作成
- Chef Recipe で CentOS のネットワーク・ホストを設定
- NetworkManager 他不要なパッケージを削除する Chef Recipe
Leave Your Message!