chef-soloでローカルのサーバにインストールしてみる
chef-soloでローカルのサーバにインストールしてみる。
今回はphpをインストールしてみる。
Chefのインストール
gemでchefをインストールする。
$ sudo gem install chef
その後、knifeの設定を行う。
すべてデフォルトのままでOKみたい。
$ knife configure
knifeの設定が終わると、下記のようなファイルが作られる。
$ cat ~/.chef/knife.rb log_level :info log_location STDOUT node_name 'ユーザー名v' client_key '/home/ユーザー名/.chef/dev.pem' validation_client_name 'chef-validator' validation_key '/etc/chef-server/chef-validator.pem' chef_server_url 'https://localhost:443' syntax_check_cache_path '/home/ユーザー名/.chef/syntax_check_cache'
あと、ディレクトリ構成の確認用にtreeコマンドを入れておく。
(今回の確認用に入れるだけで、Chefを使うために必要というわけではありません)
$ sudo yum install tree
今回は、knife-soloを使う場合と使わない場合の2通りを試すので、
ここで一旦VirtualBoxのスナップショットをとっておく。
knife-soloを使わないでインストール
knife-soloを使わない場合、gitが必要になるので、gitを入れておく。
$ sudo yum install git
gitを使って、chefのリポジトリの雛形みたいなのをダウンロードする。
$ git clone git://github.com/opscode/chef-repo.git
ディレクトリ構成は下記のようになっている。
$ tree chef-repo/ ohef-repo/ ├── LICENSE ├── README.md ├── Rakefile ├── certificates │ └── README.md ├── chefignore ├── config │ └── rake.rb ├── cookbooks │ └── README.md ├── data_bags │ └── README.md ├── environments │ └── README.md └── roles └── README.md
リポジトリに移動。
$ cd chef-repo/
cookbookを作成する。
$ knife cookbook create php -o cookbooks
作成したcookbookのディレクトリ構成は下記のようになっている。
$ tree cookbooks/ cookbooks/ ├── README.md └── php ├── CHANGELOG.md ├── README.md ├── attributes ├── definitions ├── files │ └── default ├── libraries ├── metadata.rb ├── providers ├── recipes │ └── default.rb ├── resources └── templates └── default
PHPをインストールするためにレシピを書く。
$ vi cookbooks/php/recipes/default.rb
package "php" do action :install end
どのレシピを実行するか指定する。
$ vi localhost.json
{ "run_list" : [ "recipe[php]" ] }
テンポラリのディレクトリとcookbooksのパスを指定する。
$ vi solo.rb
file_cache_path "/tmp/chef-solo" cookbook_path ["/home/ユーザー名/chef-repo/cookbooks"]
chef-soloを実行。
$ sudo chef-solo -c solo.rb -j ./localhost.json
PHPが入った。
$ php -v PHP 5.3.3 (cli) (built: Dec 11 2013 03:29:57) Copyright (c) 1997-2010 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
knife-soloを使ってインストール
とっておいたスナップショットに環境を戻す。
knife-soloを使うので、インストールする。
$ sudo gem install knife-solo
knife-soloでchefのリポジトリを作成する。
$ knife solo init chef-repo
ディレクトリ構成は下記のようになっている。
$ tree chef-repo/ chef-repo/ ├── cookbooks ├── data_bags ├── environments ├── nodes ├── roles └── site-cookbooks
リポジトリに移動。
$ cd chef-repo/
cookbookを作成する。
knife-soloを使わない場合と違い、site-cookbooksに作るのが一般的みたい。
$ knife cookbook create php -o site-cookbooks
作成したcookbookのディレクトリ構成は下記のようになっている。
$ tree site-cookbooks/ site-cookbooks/ └── php ├── CHANGELOG.md ├── README.md ├── attributes ├── definitions ├── files │ └── default ├── libraries ├── metadata.rb ├── providers ├── recipes │ └── default.rb ├── resources └── templates └── default
PHPをインストールするためにレシピを書く。
$ vi site-cookbooks/php/recipes/default.rb
package "php" do action :install end
どのレシピを実行するか指定する。
knife-soloを使わない場合と違い、jsonファイルはnodesディレクトリに置くみたい。
$ vi nodes/localhost.json
{ "run_list" : [ "recipe[php]" ] }
knife soloで実施する。
この時、10回くらいパスワード入力を求められるが頑張る。
$ knife solo cook localhost
PHPが入った。
$ php -v PHP 5.3.3 (cli) (built: Dec 11 2013 03:29:57) Copyright (c) 1997-2010 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies