• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
hbstudy37 doc
 

hbstudy37 doc

on

  • 2,556 views

http://connpass.com/event/927/

http://connpass.com/event/927/

Statistics

Views

Total Views
2,556
Views on SlideShare
2,492
Embed Views
64

Actions

Likes
5
Downloads
66
Comments
0

4 Embeds 64

http://snip-snap.posterous.com 34
http://snipsnaptmae.wordpress.com 26
https://twitter.com 3
https://si0.twimg.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    hbstudy37 doc hbstudy37 doc Document Transcript

    • hbstudy#37 x IDCF クラウドハンズオンChef Server および knife-cloudstack-fog 導入手順書 2012 年 9 月 1 日 初版 @tafujish @anikundesu
    • Chef Server および knife-cloudstack-fog 導入手順書目次1. この文書について .................................................................. 32. IDCF クラウド上に仮想マシン作成.................................................... 4 1) CloudPortal から Chef Server 用の仮想マシンを作成 ............................... 4 2) SSH 接続するためのネットワーク設定 ............................................. 43. Chef Server の構築 ................................................................ 5 1) Chef Server 用 VM(CentOS 6.1)に SSH ログイン .................................... 5 2) Chef Server を導入 ............................................................. 54. Chef Workstation(knife-cloudstack-fog 実行環境)の構築 .............................. 7 1) Chef Workstation 操作用ユーザーの作成 .......................................... 7 2) Ruby コンパイル用パッケージ導入 ................................................ 7 3) Chef Workstation 環境の前提ソフトウェア導入 .................................... 7 4) knife-cloudstack-fog の各種設定 ................................................ 85. knife-cloudstack-fog から仮想マシン作成........................................... 11 1) knife-cloudstack-fog を使った VM 構築自動化 .................................... 116. Template ID、Service Offering ID、VM のインスタンス ID、Zone ID の調べ方 ........... 15付録)公式の knife-cloudstack-fog をインストール ...................................... 16 2 / 16
    • Chef Server および knife-cloudstack-fog 導入手順書1. この文書についてこの文書は、 フロンティアのクラウドサービス セルフタイプ IDC (以下、IDCF クラウド)において、Chef Server を構築し、knife-cloudstack-fog による VM 作成から Chef Server 管理下に登録するまでの手順を説明したものです。検証は行っておりますが、動作を保証するものではありません。また、本手順書に従って操作をしたことによって不利益、損害等が発生した場合でも、一切保証は致しません。 3 / 16
    • Chef Server および knife-cloudstack-fog 導入手順書2. IDCF クラウド上に仮想マシン作成 ※IDCF クラウドの操作方法については、エントリーガイド(pp.21-27)を参照してください1) CloudPortal から Chef Server 用の仮想マシンを作成 https://noahcloud.jp/ へアクセスし、配布したユーザ名/パスワードにてログインします。 以下の設定で仮想マシンを作成します。 テンプレート [LATEST] CentOS 6.1 64-bit VM タイプ M4 ( Hourly ) 2CPU, 4GB RAM ディスク選択 必要ありません 仮想マシン名 任意 グループ名 任意 SSH Keys SSH 鍵生成 ※生成後、秘密鍵をローカルにコピーしてください2) SSH 接続するためのネットワーク設定 CloudPortal で TCP22 番を開放するようポートフォーワーディングルールとファイアウォールを設定します。 ※ここでの設定は、仮想マシン作成後(ステータスが Runnning)になった後に実施してください 「リソース」>「ネットワーク」>「ポートフォーワーディング」にて、TCP22 番を転送します。 「リソース」>「ネットワーク」>「ファイアウォール」にて、TCP22 番を開けます。 4 / 16
    • 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 statuschef-server (pid ####) を実行中...# service chef-server-webui statuschef-server-webui が停止していますが PID ファイルが残っています実行中、という表示なら問題なし。検証時は『chef-server-webui が停止していますが PID ファイルが残っています』というエラーが初回は必ず出てしまいます。この時は以下のコマンドを実行し、プロセス再起動を行います。# service chef-server-webui restartここで、CloudPortal の画面から「リソース」>「ネットワーク」>「ポートフォーワーディング」と「ファイアウォール」にて、TCP/4040 を公開します。 5 / 16
    • Chef Server および knife-cloudstack-fog 導入手順書次に、Chef-Server の Web 画面にアクセスできるか確認します。URL およびログイン情報は以下の通りです。 URL http://(4040 番ポートを開放したグローバル IP):4040/ User 名 admin パスワード(初期設定) chef321goログイン直後、強制的にパスワード変更を求められるので、任意のパスワードに変更します。 6 / 16
    • Chef Server および knife-cloudstack-fog 導入手順書4. Chef Workstation(knife-cloudstack-fog 実行環境)の構築1) Chef Workstation 操作用ユーザーの作成Chef Workstation で操作を行うための一般ユーザーを作成し、パスワード設定と、SSH ログインのための公開鍵を登録します。# useradd hoge# passwd hoge (念のためパスワードを設定)# mkdir /home/hoge/.ssh# cp /root/.ssh/authorized_keys /home/hoge/.ssh/# chown -R hoge:hoge /home/hoge/.ssh2) Ruby コンパイル用パッケージ導入次に Ruby をコンパイルするために必要なパッケージをインストールします。また、git も利用するのでインストールします。# yum install gcc make openssl-devel readline-devel libxslt-devel git3) Chef Workstation 環境の前提ソフトウェア導入SSH で先ほど作成したユーザーでログインします。・RVM の導入CentOS6 の OS 標準の Ruby は 1.8.7 ですが、この後使う knife-cloudstack-fog では Ruby 1.9.3 を利用する必要があります。そのため、Chef Workstation ユーザー専用の Ruby 環境を、RVM を用いて構築します。下記コマンドを実行すると、RVM のインストール、および Ruby 1.9.3-p194 がソースコードからコンパイルされ、インストールされます。# su - hoge$ curl -L https://get.rvm.io | bash -s stable --ruby※ruby 1.9.3 のコンパイルが行われるため、完了まで 10 分程度かかります。 7 / 16
    • Chef Server および knife-cloudstack-fog 導入手順書インストール後、.bash_profile に rvm 用設定が追記されたことを確認します。$ cat ~/.bash_profile(以下の行があることを確認)[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"確認後、.bash_profile をロードします。その後、rvm コマンド、および ruby –v で Ruby 1.9.3 が利用されていることを確認します。$ source ~/.bash_profile$ rvm listrvm rubies=* ruby-1.9.3-p194 [ x86_64 ]$ ruby -vruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]4) knife-cloudstack-fog の各種設定ruby-gem で knife-cloudstack-fog をインストールします。ただし、公開されているknife-cloudstack-fog では、SSH 鍵認証に関連した機能の不足があるため、機能を追加したバージョンを導入します。(knife-cloudstack-fog のソース入手と gem ファイルのビルド)$ cd ~$ wget https://github.com/anikundesu/knife-cloudstack-fog/zipball/master -Oknife-cloudstack-fog.zip$ unzip -q knife-cloudstack-fog.zip$ cd anikundesu-knife-cloudstack-fog-(コミット番号)/$ gem build knife-cloudstack-fog.gemspec(gem で Chef と knife-cloudstack-fog のインストール)$ gem install chef --no-ri --no-rdoc$ gem install fog --no-ri --no-rdoc$ gem install --local knife-cloudstack-fog-0.2.15.gem 8 / 16
    • 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 -iWARNING: No knife configuration file foundWhere should I put the config file? [/home/hoge/.chef/knife.rb]/home/hoge/chef-repo/.chef/knife.rbPlease 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 clients private key: [/etc/chef/webui.pem]/home/hoge/chef-repo/.chef/webui.pemPlease 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
    • Chef Server および knife-cloudstack-fog 導入手順書Please enter the path to a chef repository (or leave blank): /home/hoge/chef-repoCreating 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 listID Name Network Type Security Groups?1 jp-east-t1v Advanced No 10 / 16
    • Chef Server および knife-cloudstack-fog 導入手順書5. knife-cloudstack-fog から仮想マシン作成1) knife-cloudstack-fog を使った VM 構築自動化・SSH キーペアの準備これから knife-cloudstack-fog にて新規作成する VM に SSH ログインするためのキーペアを準備します。(1)~(3)のいずれかの方法で、キーペアを用意します。(1) 仮想マシン作成時に作成した SSH 鍵を利用する場合 ローカルに保存した秘密鍵を、仮想マシンへ SCP ファイル転送やテキストコピーで作成します。(2) CloudStack にて生成させる場合$ knife cloudstack keypair create -k (Key の名前) -o (生成する秘密鍵ファイル名)$ mv (秘密鍵) ~/chef-repo/.chef/$ chmod 400 ~/chef-repo/.chef/(秘密鍵)(3)ローカルで生成した SSH キーを登録する場合$ ssh-keygen –b 2048(パスフレーズは無しで作成すること)$ knife cloudstack keypair create -k (Key の名前) -p "(公開鍵を 1 行で) "・キーペアが登録されていることを確認以下のコマンドで、keypair が CloudStack に登録されていることを確認します。$ knife cloudstack keypair listName Fingerprint Private Key(Key の名前) 37:7f:d8:8d:ee:13:06:42:12:48:47:ff:eb:e0:05:15 11 / 16
    • 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/cookbooksCookbook のアップロードをするために、~/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
    • Chef Server および knife-cloudstack-fog 導入手順書・VM の作成knife-cloudstack-fog は knife コマンドに”cloudstack”から始まるサブコマンドを渡すことで実行できます。利用可能なサブコマンド一覧、および各コマンドに渡す引数は以下のように調べることができます。 利用可能サブコマンド一覧$ knife cloudstackknife cloudstackFATAL: Cannot find sub command for: cloudstackAvailable 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
    • Chef Server および knife-cloudstack-fog 導入手順書 server create サブコマンドのオプション(--help)$ knife cloudstack server create --helpknife 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
    • 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
    • Chef Server および knife-cloudstack-fog 導入手順書付録)公式の knife-cloudstack-fog をインストール公式の knife-cloudstack-fog をインストールするには、現在インストールされているknife-cloudstack-fog をアンインストールした後、gem インストールします。$ gem uninstall knife-cloudstack-fogSuccessfully uninstalled knife-cloudstack-fog-0.2.15$ gem install knife-cloudstack-fogFetching: knife-cloudstack-fog-0.2.15.gem (100%)Successfully installed knife-cloudstack-fog-0.2.151 gem installedInstalling ri documentation for knife-cloudstack-fog-0.2.15...Installing RDoc documentation for knife-cloudstack-fog-0.2.15... 16 / 16