1. hbstudy#37 x IDCF クラウドハンズオン
Chef Server および knife-cloudstack-fog
導入手順書
2012 年 9 月 1 日
初版
@tafujish @anikundesu
2. Chef Server および knife-cloudstack-fog 導入手順書
目次
1. この文書について .................................................................. 3
2. IDCF クラウド上に仮想マシン作成.................................................... 4
1) CloudPortal から Chef Server 用の仮想マシンを作成 ............................... 4
2) SSH 接続するためのネットワーク設定 ............................................. 4
3. Chef Server の構築 ................................................................ 5
1) Chef Server 用 VM(CentOS 6.1)に SSH ログイン .................................... 5
2) Chef Server を導入 ............................................................. 5
4. Chef Workstation(knife-cloudstack-fog 実行環境)の構築 .............................. 7
1) Chef Workstation 操作用ユーザーの作成 .......................................... 7
2) Ruby コンパイル用パッケージ導入 ................................................ 7
3) Chef Workstation 環境の前提ソフトウェア導入 .................................... 7
4) knife-cloudstack-fog の各種設定 ................................................ 8
5. knife-cloudstack-fog から仮想マシン作成........................................... 11
1) knife-cloudstack-fog を使った VM 構築自動化 .................................... 11
6. Template ID、Service Offering ID、VM のインスタンス ID、Zone ID の調べ方 ........... 15
付録)公式の knife-cloudstack-fog をインストール ...................................... 16
2 / 16
3. Chef Server および knife-cloudstack-fog 導入手順書
1. この文書について
この文書は、 フロンティアのクラウドサービス セルフタイプ
IDC (以下、IDCF クラウド)において、
Chef Server を構築し、knife-cloudstack-fog による VM 作成から Chef Server 管理下に登録するま
での手順を説明したものです。
検証は行っておりますが、動作を保証するものではありません。また、本手順書に従って操作をし
たことによって不利益、損害等が発生した場合でも、一切保証は致しません。
3 / 16
5. Chef Server および knife-cloudstack-fog 導入手順書
3. Chef Server の構築
1) Chef Server 用 VM(CentOS 6.1)に SSH ログイン
ローカルの環境から、作成した仮想マシンに SSH 接続します。
2) Chef Server を導入
以下のコマンドで、RBEL リポジトリを追加後、yum コマンドで Chef サーバをインストールします。
その後、Chef Server のセットアップスクリプトを実行します。
# rpm -Uvh http://rbel.co/rbel6
# yum install rubygem-chef-server
# setup-chef-server.sh
ここで、chef-server-webui サービスが正常に立ち上がりません。以下のコマンドで、Chef Server
のサービスが起動しているか確認します。
# service chef-server status
chef-server (pid ####) を実行中...
# service chef-server-webui status
chef-server-webui が停止していますが PID ファイルが残っています
実行中、という表示なら問題なし。検証時は『chef-server-webui が停止していますが PID ファイ
ルが残っています』というエラーが初回は必ず出てしまいます。この時は以下のコマンドを実行し、
プロセス再起動を行います。
# service chef-server-webui restart
ここで、CloudPortal の画面から「リソース」>「ネットワーク」>「ポートフォーワーディング」
と「ファイアウォール」にて、TCP/4040 を公開します。
5 / 16
6. Chef Server および knife-cloudstack-fog 導入手順書
次に、Chef-Server の Web 画面にアクセスできるか確認します。
URL およびログイン情報は以下の通りです。
URL http://(4040 番ポートを開放したグローバル IP):4040/
User 名 admin
パスワード(初期設定) chef321go
ログイン直後、強制的にパスワード変更を求められるので、任意のパスワードに変更します。
6 / 16
9. Chef Server および knife-cloudstack-fog 導入手順書
?knife ツール用の Directory 構造の準備
Knife コマンドを実行するために、ホームディレクトリの下に、chef-repo ディレクトリを作成しま
す。さらに knife コマンド実行に必要なファイル群を展開します。その後、knife 設定ファイルを置
く chef-repo/.chef ディレクトリを作成します。
$ cd ~
$ git clone git://github.com/opscode/chef-repo.git
$ mkdir -p ~/chef-repo/.chef
?knife 用の環境セットアップ
まず、root ユーザーにて Chef Server で Default で作成されている validation ユーザー、および
webui ユーザーの秘密鍵をコピーします。
$ su -
(以下、root での作業)
# cp /etc/chef/validation.pem /etc/chef/webui.pem /home/hoge/chef-repo/.chef/
(validation.pem と webui.pem をコピー)
# chown -R hoge:hoge /home/hoge/chef-repo/.chef
# exit
$
次に、Chef Server、Workstation の初期設定を行います。
$ knife configure -i
WARNING: No knife configuration file found
Where should I put the config file? [/home/hoge/.chef/knife.rb]
/home/hoge/chef-repo/.chef/knife.rb
Please enter the chef server URL: [http://i-???-?????-VM.cs???cloud.internal:4000]
Please enter a clientname for the new client: [hoge](chef server で作るユーザー名)
Please enter the existing admin clientname: [chef-webui]
Please enter the location of the existing admin client's private key: [/etc/chef/webui.pem]
/home/hoge/chef-repo/.chef/webui.pem
Please enter the validation clientname: [chef-validator]
Please enter the location of the validation key: [/etc/chef/validation.pem]
/home/hoge/chef-repo/.chef/validation.pem
9 / 16
10. Chef Server および knife-cloudstack-fog 導入手順書
Please enter the path to a chef repository (or leave blank): /home/hoge/chef-repo
Creating initial API user...
Created client[hoge]
Configuration file written to /home/hoge/chef-repo/.chef/knife.rb
さらに、knife-cloudstack-fog で利用するための CloudStack API 情報、API エンドポイント URL 情
報を、~/chef-repo/.chef/knife.rb に追記します。
$ vi ~/chef-repo/.chef/knife.rb
(以下の行を追加)
knife[:cloudstack_access_key_id] = "API キー"
knife[:cloudstack_secret_access_key] = "秘密鍵"
knife[:cloudstack_api_endpoint] = "https://api.noahcloud.jp/portal/client/api"
API キーおよび秘密鍵は、IDCF クラウドのポータル右上の「マイプロファイル」をクリックすると
表示されます。(最新のエンドポイントの情報は FAQ を参照します)
?knife-cloudstack-fog の動作確認
以下のコマンドを実行し、knife-cloudstack-fog が正常に動作していることを確認します。
$ cd ~/chef-repo
$ knife cloudstack zone list
ID Name Network Type Security Groups?
1 jp-east-t1v Advanced No
10 / 16
12. Chef Server および knife-cloudstack-fog 導入手順書
?bootstrap スクリプトの作成
VM 作成後、Chef Client として動作するための一連の設定を行うスクリプト(bootstrap)を準備し
ます。拡張後の knife-cloudstack-fog の中に、CentOS 6 用の bootstrap があるのでコピーします。
$ cd ~/chef-repo/.chef
$ mkdir bootstrap
$ cd bootstrap
$ cp ~/anikundesu-knife-cloudstack-fog-fbdcfea/erb/centos6.erb ./
?cookbook の入手と Chef Server へのアップロード
下記サイトに Chef のコミュニティにより作成された Cookbook のリストがあるので、好きなものを
選んで導入することができます。
http://community.opscode.com/cookbooks
Cookbook のアップロードをするために、~/chef-repo ディレクトリで以下を実行します。
$ knife cookbook site install (cookbook 名)
$ knife cookbook upload (cookbook 名)
ここでは、例として getting-started、apache2 という 2 つの cookbook をアップロードします。
$ cd ~/chef-repo
$ git init
$ knife cookbook site install getting-started
$ knife cookbook site install apache2
$ knife cookbook upload -a
※site install にてローカルにダウンロードした cookbook すべてをアップロード
アップロード後、Chef Server の Web UI の「Cookbooks」タブに、upload した cookbook が表示され
ることを確認します。
12 / 16
13. Chef Server および knife-cloudstack-fog 導入手順書
?VM の作成
knife-cloudstack-fog は knife コマンドに”cloudstack”から始まるサブコマンドを渡すことで実
行できます。
利用可能なサブコマンド一覧、および各コマンドに渡す引数は以下のように調べることができます。
利用可能サブコマンド一覧
$ knife cloudstack
knife cloudstack
FATAL: Cannot find sub command for: 'cloudstack'
Available cloudstack subcommands: (for details, knife SUB-COMMAND --help)
** CLOUDSTACK COMMANDS **
knife cloudstack template list (options)
knife cloudstack volume list (options)
knife cloudstack securitygroup list (options)
knife cloudstack server list (options)
knife cloudstack keypair list (options)
knife cloudstack keypair create (options)
knife cloudstack server delete INSTANCE_ID [INSTANCE_ID] (options)
knife cloudstack server stop INSTANCE_ID [INSTANCE_ID] (options)
knife cloudstack server create (options)
knife cloudstack zone list (options)
knife cloudstack diskofferings list (options)
knife cloudstack networks list (options)
knife cloudstack serviceoffering list (options)
13 / 16
14. Chef Server および knife-cloudstack-fog 導入手順書
server create サブコマンドのオプション(--help)
$ knife cloudstack server create --help
knife cloudstack server create (options)
--server-url URL Chef Server URL
--key KEY API Client Key
~略~
仮想マシンを作成する際には、以下のような引数を渡すことで、VM 作成と、Chef Server 管理下へ
の追加、および Cookbook に含まれる Recipe を実行してくれます。
$ knife cloudstack server create
-s (service offering ID) -t (template ID) -z (zone ID) -d (bootstrap script)
-i (SSH Private key of keypair) -k (CloudStack keypair name)
-N (displayname on Chef Server/CloudStack UI)
-r '[RECIPE1]', '[RECIPE2]',???
以下は、IDCF クラウド上で CentOS 6.1 64bit の仮想マシンを作り、getting-started と apache2 の
Recipe を実行します。また、Service Offering として『S2』を指定しています。
(CentOS 6.1 64bit で VM を作る場合)
$ cd ~/chef-repo
$ knife cloudstack server create -s 30 -t 1021 -z 1 -d centos6
-i ~/chef-repo/.chef/srv2clt.pem -k srv2clt -N ChefClient3
-r 'recipe[getting-started]','recipe[apache2]'
?cookbook が実行されていることの確認
SSH で作成した client にログインします。
Root のホームディレクトリに chef-getting-started.txt があることを確認し、内容も確認。
[Workstation]$ ssh –i ~/chef-repo/.chef/(秘密鍵) root@(作成した仮想マシンの IP)
[Chef Client]$ ls ~/
[Chef Client]$ cat chef-getting-started.txt
14 / 16
15. Chef Server および knife-cloudstack-fog 導入手順書
Chef Server の Web UI の「Nodes」タブに、作成した仮想マシン(Node)が表示されることを確認し
ます。
6. Template ID、Service Offering ID、 のインスタンス ID、
VM Zone
ID の調べ方
いずれも knife cloudstack のサブコマンドで調べることができます。
$ knife cloudstack template list
(テンプレート一覧)
$ knife cloudstack serviceoffering list
(サービスオファリング一覧)
$ knife cloudstack server list
(作成したサーバ一覧)
$ knife cloudstack zone list
(ゾーン一覧)
参考 LINK
knife-cloudstack-fog 公式
http://rubygems.org/gems/knife-cloudstack-fog
IDCF クラウド対応 knife-cloudstack-fog 作成者 anikundesu
https://github.com/anikundesu/
15 / 16
16. Chef Server および knife-cloudstack-fog 導入手順書
付録)公式の knife-cloudstack-fog をインストール
公式の knife-cloudstack-fog をインストールするには、現在インストールされている
knife-cloudstack-fog をアンインストールした後、gem インストールします。
$ gem uninstall knife-cloudstack-fog
Successfully uninstalled knife-cloudstack-fog-0.2.15
$ gem install knife-cloudstack-fog
Fetching: knife-cloudstack-fog-0.2.15.gem (100%)
Successfully installed knife-cloudstack-fog-0.2.15
1 gem installed
Installing ri documentation for knife-cloudstack-fog-0.2.15...
Installing RDoc documentation for knife-cloudstack-fog-0.2.15...
16 / 16