Cloudlive, Inc. Creationline, Inc. 1
Cloudlive, Inc.Creationline, Inc.
1
更新履歴
• 以下の日付でドキュメントを更新、確認しています。
2
バージョン
1.00 2015/2/28 ・初版リリース
目次
• Chef の概要• Chef とは?
• Chef のメリット
• 利用可能な OS /ディストリビューション
• Chef のアーキテクチャー
• Chef の基本的な用語
• Chef の利用形態
• Enterprise Chef Server について
• Open Source Chef Server について
• Microsoft Azure と Chef• Azure での Chef 利用
• Knife Azure コマンド例
3
目次
• シナリオ例• シナリオ#1 Azure 管理ポータルからの操作
• シナリオ#2 Chef Workstation からの操作
• Appendix• Appendix#1 Microsoft Azure アカウントの作成
• Appendix#2 サブスクリプションファイルの取得
• Appendix#3 Enterprise Chef へのユーザー登録
• Appendix#4 Chef スターターキットの取得
• Appendix#5 client.rb (設定ファイル)の作成
• Appendix#6 Chef Workstation 構築手順
4
5
Chef のメリット
• 拡張性
• 効率的
• 世代管理
7
利用可能な OS / ディストリビューション
• Windows Server 2003 R2(i686, x86_64)• Windows Server 2008 R2(x86_64)*• Windows Server 2008(i686, x86_64)• Windows Server 2012 R2(x86_64)*• Windows Server 2012(x86_64)*
• Debian 6, 7(i386, x86_64)• RHEL 5, 6(i686, x86_64)• CentOS 5, 6, 7 (i686, x86_64)*• Free BSD 9(adm64, i386)• OS X 10.6, 10.7, 10.8, 10.9 (x86_64)• SUSE Enterprise Linux 11.2(i386, x86_64)*• Solaris 5.9(sparc)• Solaris 5.10, 5.11(i386, sparc)• openSUSE 12.1(i686, x86_64)• Ubuntu 12.04 *, 12.10, 13.03, 13.10, 14.04 *(i386, x86_64)
※青色で表示されている OS は、Microsoft Azure でサポート
8
Chef アーキテクチャー図(Chef Server / Client)
9
ServerChef Server各 Node の構成情報を集中管理
Chef WorkstationKnife プラグインがインストールされている
Client
Client
Node
NodeChef により管理されるサーバー
Chef の基本的な用語 #1
• Server
• Client
10
Chef の基本的な用語 #2
• Knife
プラグイン
http://docs.opscode.com/plugin_knife.html
• Recipe
• Cookbook
11
Chef の利用形態
• Chef Server / Client
• Chef Solo
Enterprise Chef Server(有償) について
• ホステッド版 Chef
• オンプレミス版 Chef
【詳細問合せ先】
13
Open Source Chef Server について
• オープンソース版の Chef Server
• バージョン 10 以降は導入がとても簡単になっているかつては必要なミドルウェア群を別途導入する必要があった
• Enterprise Chef Server との違い
14
15
Azure での Chef 利用イメージ
16
Server
Chef Workstation
仮想マシン
Windows サーバー
Windows サーバー
Windows サーバー
Linux サーバー
Linux サーバー
Linux サーバー
仮想マシン
仮想マシンの作成、削除、停止、再起動
Azure 管理ポータル
・仮想マシンの作成、削除・Chef Client のインストール
Knife の実行
Recipe の更新
Node
各 Node の構成情報を集中管理
Recipe の配布・各 Node の構成変更・アプリケーションのインストール
Azure での Chef 利用 #1
• Azure 管理ポータル画面から Chef の利用が可能
• Knife Azure により、Microsoft Azure と Chef との連携が可能
17
Azure での Chef 利用 #2
• PowerShell DSC と Chef との連携
• Windows 用 Cookbook の整備
Supermarket
https://supermarket.getchef.com/cookbooks?utf8=%E2%9C%93&q=azure
18
Knife Azure コマンド例
19
Azure 仮想マシン削除
knife azure server delete SERVER [SERVER]
Azure 仮想マシン一覧表示
knife azure server list
Azure 仮想マシン詳細表示
knife azure server show SERVER [SERVER]
Azure 仮想マシン作成
knife azure server create
20
21
ServerHosted Chef Server
Chef WorkstationAzure 上に Linux サーバー(Ubuntu)を作成
NodeAzure 上に Windows およびLinux サーバーを作成
【Chef Server】Chef 社が提供している Hosted Chef Server を利用する
【Chef Workstation 】Microsoft Azure 上に作成した仮想マシン(Linux サーバー)を利用する
【Node】Microsoft Azure 上に仮想マシンを作成する
環境準備
22
手順 内容
準備
1. Microsoft Azure アカウントの作成 Microsoft Azure サブスクリプションの契約を行い、利用可能な状態にする。Appendix#1 を参照
2. Azure サブスクリプションファイルの取得
Microsoft Azure に API アクセスするための証明書であるサブスクリプションファイルをダウンロードする。Appendix#2 を参照
3. Enterprise Chef へのユーザー登録 Hosted Chef Server を利用するため、ホステッド版 Enterprise Chef へのユーザー登録を行う。Appendix#3 を参照
4. Chef スターターキットの取得 Chef Server にアクセスするのに必要な秘密鍵や設定ファイルをまとめたChef スターターキットを取得する。Appendix#4 を参照
5. client.rb (設定ファイル)の作成 Azure ポータル画面から Chef を利用する場合に使用する設定ファイルを作成する。Appendix#5 を参照
6. Chef Workstation 構築 Chef 操作用の環境(Workstation)を構築し、Windows Server インスタンス作成に使用する Cookbook を Chef Server に登録する。Appendix#6 を参照
シナリオ例 #1 Azure 管理ポータルからの操作
23
【ゴール】構築した Web サーバーに、ローカル PC からアクセスすると、Web ペー
ジが表示される。
【目的】Azure 管理ポータルから、Windows サーバーを作成し、Chef を利用して
Web サーバー(IIS)を構築する。
シナリオ例 #1 Azure 管理ポータルからの操作
【仮想マシンの新規作成を行う】
1. 画面左下の「新規」をクリックする
24
シナリオ例 #1 Azure 管理ポータルからの操作
【イメージの選択#1】
1. 「ギャラリーから」を選択する
25
シナリオ例 #1 Azure 管理ポータルからの操作
【イメージの選択#2】
1. 「Windows Server 2012 R2
Datacenter」を選択する
2. をクリックする
26
シナリオ例 #1 Azure 管理ポータルからの操作
【仮想マシンの構成#1】
1. 「仮想マシンの構成」の必要項目
を入力する
2. をクリックする
27
シナリオ例 #1 Azure 管理ポータルからの操作
【仮想マシンの構成#2】
1. 「地域/アフィニティグループ/
仮想ネットワーク」で”日本
(東)”を選択する
2. エンドポイントに “HTTP” を追
加する
3. をクリックする
28
シナリオ例 #1 Azure 管理ポータルからの操作
29
【構成拡張機能で Chef を選択する】
1. 「CLIENT.RB」 をローカルまたはストレージから指定する Appendix#5 で作成した client.rb を指定する
2. 「検証キー(.PEM)をローカルまたはストレージから指定する。 Appendix#4 で準備した Chef スターター
キットの chef-repo¥.chef フォルダにあるazst-validator.pem を指定する
3. 実行の一覧(Run List)に IIS 設定用レシピを記入する。 記述内容:recipe['iis']
4. をクリックする
シナリオ例 #1 Azure 管理ポータルからの操作
30
【ローカル PC から Web ページを確認】
Azure 管理ポータルのダッシュボードで作成したサーバーの URL を確認し、ローカル PC のブラウザでアクセスする
シナリオ例 #2 Chef Workstation からの操作
31
【ゴール】構築した Web サーバーに、ローカル PC からアクセスすると、 Web ペー
ジが表示される。
【目的】Chef Workstation から Chef を使って、Azure 上に Linux サーバーを作
成し、Web サーバー(apache2)を構築する。
シナリオ例 #2 Chef Workstation からの操作
1. Chef Workstation にログインする
2. Azure で利用できるマシンイメージを表示
3. 次の設定で Azure 上の仮想マシンを起動する-DNS名: azselfstudy11
-場所: 日本(東)
-マシンイメージ: Ubuntu Server 12.04 LTS (amd64)
-マシンサイズ: 小
-SSHログインユーザー: azureuser
-SSHログインパスワード: Azure@@123456
-エンドポイント: 80:80
32
$ knife azure image list
シナリオ例 #2 Chef Workstation からの操作
knife azure server create コマンドを実行
33
$ knife azure server create --azure-dns-name 'azselfstudy11' --azure-service-location 'Japan East' --azure-source-image b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu-12_04_2-LTS-amd64-server-20121218-en-us-30GB --azure-vm-size Small --ssh-user 'azureuser' --ssh-password 'Azure@@123456' --tcp-endpoints 80:80 --run-list "recipe[chef-client], recipe[cron], recipe[apt], recipe[apache2], recipe[apache-site-enable]"
シナリオ例 #2 Chef Workstation からの操作
34
Azure 管理ポータルで作成されたサーバーを確認
Azure 管理ポータルで仮想マシンが作成されていることが確認できる
シナリオ例 #2 Chef Workstation からの操作
35
ローカル PC から Web ページを確認
Azure 管理ポータルのダッシュボードで作成したサーバーの URL を確認し、ローカル PC のブラウザでアクセスする
36
Appendix#1 Microsoft Azure アカウントの作成
必要なもの・Microsoft アカウント※Microsoft アカウント作成はこちらのページを参照
http://www.microsoft.com/ja-jp/msaccount/signup/default.aspx
・確認コードを音声か SMS で受け取るための携帯電話・身元確認のためのクレジットカード(無料評価版の場合は課金されない)
Azureアカウントの作成手順http://msdn.microsoft.com/ja-jp/windowsazure/ee943806.aspx
・アカウント作成後、管理ポータルにサインインできれば作成完了
・Azure 管理ポータルの URL
https://manage.windowsazure.com/
37
Appendix#2 サブスクリプション ファイルの取得
Microsoft Azure に API アクセスするための証明書であるサブスクリプションファイルをダウンロードする
https://manage.windowsazure.com/publishsettings/
38
Appendix#3 Enterprise Chef へのユーザー登録 #1
ホステッド版 Enterprise Chef へユーザー登録Chef のトップページ https://www.getchef.com/ の右上の「GET CHEF」をクリックする
39
Appendix#3 Enterprise Chef へのユーザー登録#2
「GET HOSTED CHEF」をクリックする
40
Appendix#3 Enterprise Chef へのユーザー登録 #3
必要事項を入力し、 “I agree to the Terms of Service, Master License and Services Agreement.” にチェックを入れ、「Get Started」をクリックする
41
Appendix#3 Enterprise Chef へのユーザー登録 #4
Organization の登録を行う。「Create New Organization」をクリックする。
42
Appendix#3 Enterprise Chef へのユーザー登録 #5
Organization 名を入力し、「Create Organization」をクリックする
43
Appendix#3 Enterprise Chef へのユーザー登録 #6
次の画面が表示されればユーザー登録は完了する
44
Appendix#4 Chef スターターキットの取得 #1
Chef Server にアクセスするのに必要な秘密鍵や設定ファイル(knife.rb)をまとめた Chef スターターキットをダウンロードする
「Download Starter Kit」をクリックする
45
Appendix#4 Chef スターターキットの取得 # 2
「Proceed」をクリックすると chef-starter.zip ファイルがダウンロードされる
46
シナリオ例#1 で利用するため、ダウンロードした chef-starter.zip ファイルをローカル PC で解凍しておく解凍すると、chef-repo フォルダが配置される
Appendix#5 client.rb (設定ファイル)の作成
シナリオ例#1 で使用する client.rb ファイルを作成する
Appendix#4 で準備した chef-repo フォルダ内にある、.chef フォルダ内のknife.rb ファイルから、以下の項目を client.rb ファイルにコピーする
• chef_server_url
• validation_client_name
(例) chef_server_url https://api.opscode.com/organizations/azst
validation_client_name "azst-validator"
47
Appendix#6 Chef Workstation 構築手順#1
1. Chef Workstation 用端末で以下の作業を実行する本項では OS に Ubuntu を使用。ユーザー名は、azureuser としている
2. 開発環境等の準備
3. Chef Client を Omnibus installer でインストール
4. スターターキットの配置Appendix#4 で取得した Chef スターターキット(chef-starter.zip)をChef Workstation の /home/azureuser/ に配置する。配置後、スターターキット(chef-starter.zip)を解凍する
48
$ sudo apt-get update$ sudo apt-get install tree$ sudo apt-get install unzip$ sudo apt-get install build-essential
$ curl -L http://www.opscode.com/chef/install.sh | sudo bash
$ unzip chef-starter.zip
Appendix#6 Chef Workstation 構築手順#1
5. Chef-repo ディレクトリの設定Chef-repo を Git で管理するようにする。
6. Knife Azure のインストール
7. Knife Azure の設定Appendix#2 で取得したサブスクリプション ファイルを Chef Workstation の /home/ユーザー/chef-repo/.chef にコピーし、サブスクリプションファイルのパスを knife.rb に記載する
49
$ sudo /opt/chef/embedded/bin/gem install knife-azure --no-rdoc --no-ri
$ sudo apt-get install git$ cd /home/azureuser/chef-repo/$ git init$ git add *$ git commit -m '1st コミット'
knife[:azure publish_settings_file] = ‘/home/azureuser/chef-repo/.chef/credentials.publishsettings'
Appendix#6 Chef Workstation 構築手順#2
8. Cookbook の準備8.1. Chef 社で公開している Cookbook を Chef Workstation 内にインストール
8.2. Chef Workstation 内の Cookbook を Enterprise Chef に登録
8.3. Apache を設定する Cookbook の作成
50
$ knife cookbook site install chef-client$ knife cookbook site install cron$ knife cookbook site install apt$ knife cookbook site install iis$ knife cookbook site install apache2
$ knife cookbook upload -a
$ knife cookbook create apache-site-enable
Appendix#6 Chef Workstation 構築手順#3
8.4. apache-site-enable/recipes/default.rb に以下を追記
8.5. Enterprise Chef に Cookbook ”apache-site-enable” を登録
51
$ vi /home/ユーザー/chef-repo/cookbooks/apache-site-enable /recipes/default.rb
execute "a2ensite" docommand "a2ensite default"action :run
end
service "apache2" dosupports :restart => true, :reload => trueaction :enable
end
$ knife cookbook upload apache-site-enable
52