概要
- 以前に試した knife-xensever を改めて試してみる
- 前回は XenServer の調子が悪くて断念してしまったこともあり、改めて、knife-xenserver と chef を利用したサーバーの構築を行なってみたい
前回、前々回まで
- knife-xenserver を利用して VM の作成したりテンプレートの一覧取得等を行った
- 同様に knife-xenserver を利用して VM の削除を行った
- knife-xenserver が XenServer とどのような通信をしているのかをちょっとだけ調べた
- node の初期設定(bootstrap)の挙動を確認した
今回
- XenServer で VM を構築後、Chef Server(Hosted Chef)を利用して VM に対して cookbook を適用してみる
登場人物
役割 | 名前 | 別名 |
---|---|---|
Chef Server | Hosted Chef | |
Chef Client | XenServer 上の VM | node |
Workstation | X1Carbon |
Chef Server としては Hosted Chef を利用する。また、すでに Hosted Chef からは knife.rb
や validation.pem
と account.pem
はダウンロードされている状態でいつでも Hosted Chef が使える状態にしておくこと。尚、Client ととなるのはもちろん XenServer 上に構築する VM となる。
cookbook を用意する
テスト用の cookbook を用意してみる。この作業は Workstation 上にて行う。
knife cookbook create
knife cookbook create hoge_cookbook -o ./
template
リソースを使ったごく簡単な cookbook で...
template "/tmp/config.conf" do source "config.conf.erb" end
knife cookbook upload
Hosted Chef にアップロードする。
knife cookbook upload hoge_cookbook -o ./
Uploading hoge_cookbook [0.1.1] Uploaded 1 cookbook.
metadata.rb
の version
を任意でしているとバージョン番号(上記では 0.1.1)を指定することが出来る。
knife cookbook list
一応、Hosted Chef に登録済みの cookbook 一覧を取得してみる。
knife cookbook list
apache-enable 0.1.0 apache2 1.6.0 apache2-take 0.1.0 chef-client 2.2.2 cron 1.2.2 fluentd_apache 0.1.0 hoge_cookbook 0.1.1
ちゃんと登録されている。
XenServer で VM を構築後、Chef Server(Hosted Chef)を利用して VM に対して cookbook を適用してみる
knife xenserver vm create のおさらい
VM を構築後、VM に対して cookbook を適用する際に必要なオプション。
オプション | 役割 |
---|---|
--vm-template ${UUID} | テンプレートの UUID を指定する |
--vm-name ${VM_NAME} | VM の名前を指定する |
--vm-networks ${NETWORK} | VM のネットワークを指定する |
--vm-networks | VM のネットワークを指定する |
-r | 適用する run-list やレシピを指定する "recipe[${recipe}]" で指定し、複数ある場合にはカンマで区切る |
-d | distro を指定する chef-full/centos5-gems/ubuntu12.04-gems 等を指定可能 |
実行してみる
長かったけどやっと knife xenserver vm create を実行してみる。
knife xenserver vm create --vm-template 886cd33d-380d-ac9a-83ab-ba0a00c4b7e1 --vm-name chef-test2 --vm-networks 'Pool-wide network associated with eth0' -r "recipe[hoge_cookbook]" d chef-full
VM が構築された後で bootstrap が実行された後...
xxx.xx.xx.xx Thank you for installing Chef! xxx.xx.xx.xx Starting Chef Client, version 11.4.4 xxx.xx.xx.xx Creating a new client identity for chef-test2 using the validator key. xxx.xx.xx.xx resolving cookbooks for run list: ["hoge_cookbook"] xxx.xx.xx.xx Synchronizing Cookbooks: xxx.xx.xx.xx - hoge_cookbook xxx.xx.xx.xx Compiling Cookbooks... xxx.xx.xx.xx Converging 1 resources xxx.xx.xx.xx Recipe: hoge_cookbook::default xxx.xx.xx.xx * template[/tmp/config.conf] action create xxx.xx.xx.xx xxx.xx.xx.xx - create template[/tmp/config.conf] xxx.xx.xx.xx --- /tmp/chef-tempfile20130526-980-88xi5r 2013-05-26 10:33:34.612251948 +0900 xxx.xx.xx.xx +++ /tmp/chef-rendered-template20130526-980-w9ecix 2013-05-26 10:33:34.611252008 +0900 xxx.xx.xx.xx @@ -0,0 +1 @@ xxx.xx.xx.xx +hoge xxx.xx.xx.xx xxx.xx.xx.xx Chef Client finished, 1 resources updated Name: chef-test2 IP Address: xxx.xx.xx.xx Environment: _default Run List: recipe[hoge_cookbook] Done!
Hosted Chef にアクセスして cookbook をダウンロードして node に cookbook が適用された。念の為、node 上でも確認してみる。
ssh node
[root@vm01 ~]# cd /tmp/ [root@vm01 tmp]# ls config.conf yum.log [root@vm01 tmp]# cat config.conf hoge [root@vm01 ~]#
一応、/tmp/ 以下に config.conf ファイルが作成されている。
まとめ
- 三回にわたって knife プラグインの一つである knife-xenserver を使ってみた
- 基本的には他のクラウドプラグイン(knife-ec2 等)と同様に利用することが出来ると思われる
- Chef Server ではなく chef-solo を使うことが出来ないか調べたが、今のところ出来なさそう...
- 実運用を考慮すると Chef Server は自前で Opscode の Chef Server を立てるか、軽量簡易な Chef Server の chef-zero を検討する
- ということで次回は chef-zero を Chef Server に見立つつ、もう少し複雑な cookbook を適用してみる