一人Web開発~第2夜(2) サーバ共通設定
ひとまず簡易的に実行環境を整える作業に入ります。
プラットフォームの環境設定は手で行わず、原則Chefを使って実施します。
元のChefリポジトリのcommonクックブックを見直します。
Chefクックブック
以前Oracle12cインストール時に使ったもののうち、時刻同期を主目的としています。
# Install packages pkgs = [ \ "git" \ , "ntp" \ ] pkgs.each do |pkg| package pkg do action :install end end # Setup timezone file "/etc/localtime" do action :delete force_unlink true not_if {File.readlink("/etc/localtime") == "/usr/share/zoneinfo/Asia/Tokyo"} notifies :create, "link[/etc/localtime]", :immediately end link "/etc/localtime" do to "/usr/share/zoneinfo/Asia/Tokyo" action :nothing end # Setup ntpd cookbook_file "/etc/ntp.conf" do mode 00644 notifies :restart, "service[ntpd]" end service "ntpd" do action [:enable, :start] end
- gitとntpパッケージのインストール
- タイムゾーンの設定。JSTじゃない環境でやったことはないのだけれど、VMのイメージを海外から取得するとどうなっているか分からないので設定する。
- ntp.confの設定と設定後のNTPデーモンの起動設定。
ntp.confの中身はこんな感じ。
# panicを起こす時差(0は起こさない) tinker panic 0 driftfile /var/lib/ntp/drift restrict default kod nomodify notrap nopeer noquery restrict -6 default kod nomodify notrap nopeer noquery restrict 127.0.0.1 restrict -6 ::1 # NICTのサーバを参照 server ntp.nict.jp
Chefロール設定
一応ロールとして定義しておきます。
# roles/common.json { "name" : "common", "default_attributes" : {}, "override_attributes" : {}, "json_class" : "Chef::Role", "description" : "", "chef_type" : "role", "run_list" : [ "recipe[common]" ] }
実行
ひとまずnodesの設定はクックブック単位で実行できるようにしておきたいので、ファイル名もそのようにつける。本当は、クックブックを適用するホスト名でつけるのが正しいけれど、今回はchef-solo -jで実行するので、Chefのルールから外れてます。
# nodes/common.json { "name" : "common", "default_attributes" : {}, "override_attributes" : {}, "run_list" : [ "role[common]" ] }
本当は、roles/common.jsonを指定して実行できるかと思ったのだけれど、エラーが出てうまくいかなかったので深く調べずnodesの下にも似たようなのを作りました。
これでchef-solo実行して正常終了すれば最初の第一歩完了。
# chef-solo -j nodes/common.json