Rubyでサーバ設定を自動化! Chef Soloを試そう!第4回

前回はファイアウォールの設定が必要だというところで終わりましたが、ファイアウォールであるiptablesの操作を行うcookbookも提供されています。これも、cookbooksディレクトリにダウンロード展開します。


cookbooks$git clone git://github.com/opscode-cookbooks/iptables.git

このcookbookは/etc/iptables.dに設定用のファイルをコピーし、その後そのファイルを使ってiptablesを設定します。

既定では確立済みのセッションを許可するall_established.erbというテンプレートと、ICMPプロトコルを許可するall_icmp.erbだけが設定されます。HTTPを許可するためには下記のファイルを用意します。

cookbooks/main/templates/default/http.erb


# Port 80 for http
-A FWR -p tcp -m tcp --dport 80 -j ACCEPT

ただ、これではSSHによる接続もできなくなるので、これを許可するテンプレートも用意します。

cookbooks/main/templates/default/ssh.erb


# Port 22 for ssh
-A FWR -p tcp -m tcp --dport 22 -j ACCEPT

つぎに、cookbooks/main/recipes/default.rbに、iptablesのレシピと、上記の2つのファイルを設定するためのメソッド呼び出しを追加します。

cookbooks/main/recipes/default.rb


include_recipe "selinux::permissive"
include_recipe "apache2"
include_recipe "iptables"
iptables_rule "ssh"
iptables_rule "http"

これでrsyncとsshによるchef-solo実行を行えば、http://192.168.1.1/でApacheのでファオルトページが表示されるはずです。