- 更新日: 2014年8月24日
- Vagrant & Chef
Chef Recipe で CentOS のネットワーク・ホストを設定
Chef の Recipe で CentOS6 のネットワーク・ホストの設定を行います。ホストとネットワークの設定 〜 CentOS6 | EasyRamble に相当する作業となります。
このエントリーは、CentOS サーバー設定用 Chef Cookbook/Recipe の目次 の一部です。
ネットワーク設定用の Recipe
site-cookbooks/base_cookbook/recipes/network.rb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# need to restart manually when modifying network config files # config files network_conf = "/etc/sysconfig/network" eth0_conf = "/etc/sysconfig/network-scripts/ifcfg-eth0" resolv_conf = "/etc/resolv.conf" etc_hosts = "/etc/hosts" [network_conf, eth0_conf, resolv_conf, etc_hosts].each do |conf_file| conf_basename = File.basename(conf_file) bash "move_#{conf_basename}_conf_original" do code <<-EOC mv #{conf_file} #{conf_file}.org EOC creates "#{conf_file}.org" end template conf_file do owner "root" group "root" mode "0644" end end # remove NetworkManager service 'NetworkManager' do action [:disable, :stop] end package "NetworkManager" do action :remove end # start network service service "network " do supports :status => true, :restart => true, :reload => true action [:enable, :start] end |
それぞれ設定ファイルのオリジナルのバックアップを取った後、template リソースで設定ファイルを作成。NetworkManager 削除と、network を service に登録しています。
一応 template 編集後の network の再起動は手動で行うようにしていて、template リソースに notifies は指定しないようにしました。設定ファイルの編集で、何かミスった時にすぐに気付けるようにしたかったので。運用方針次第では、notifies を使っても良いと思います。
以降は、設定ファイルのテンプレートです。
ネットワーク関連の設定ファイル用テンプレート
site-cookbooks/base_cookbook/templates/network.erb
1 2 3 4 5 |
<%# /etc/sysconfig/network %> NETWORKING=yes HOSTNAME=<%= node.set['network']['hostname'] %> GATEWAY=<%= node.set['network']['gateway'] %> NETWORKING_IPV6=<%= node.set['network']['networking_ipv6'] %> |
site-cookbooks/base_cookbook/templates/ifcfg-eth0.erb
1 2 3 4 5 6 7 8 9 10 11 |
<%# /etc/sysconfig/network-scripts/ifcfg-eth0 %> DEVICE=eth0 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=<%= node.set['network']['ifcfg_eth0']['nm_controlled'] %> BOOTPROTO=<%= node.set['network']['ifcfg_eth0']['bootproto'] %> IPADDR=<%= node.set['network']['ifcfg_eth0']['ipaddr'] %> NETMASK=<%= node.set['network']['ifcfg_eth0']['netmask'] %> GATEWAY=<%= node.set['network']['ifcfg_eth0']['gateway'] %> BROADCAST=<%= node.set['network']['ifcfg_eth0']['broadcast'] %> IPV6INIT=<%= node.set['network']['ifcfg_eth0']['ipv6init'] %> |
site-cookbooks/base_cookbook/templates/resolv.conf.erb
1 2 3 |
<%# /etc/resolv.conf %> nameserver <%= node.set['resolv_conf']['nameserver']['first'] %> nameserver <%= node.set['resolv_conf']['nameserver']['second'] %> |
site-cookbooks/base_cookbook/templates/hosts.erb
1 2 3 |
<%# /etc/hosts %> 127.0.0.1 localhost <%= node.set['hosts']['ipaddr'] %> <%= node.set['hosts']['hostname'] %> |
ノードにより異なる可能性のある値は、変数で取得するようにしています。変数の値は、attributes あるいは wrapper cookbook / environment cookbook の recipe で指定します。以上です。
- 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 でユーザー・グループを作成
- NetworkManager 他不要なパッケージを削除する Chef Recipe
- CentOS サーバー設定用 Chef Cookbook/Recipe の目次
Leave Your Message!