Mais conteúdo relacionado
Semelhante a クラウドオーケストレーション「OpenStack Heat」に迫る! (20)
Mais de Etsuji Nakai (20)
クラウドオーケストレーション「OpenStack Heat」に迫る!
- 2. クラウドオーケストレーション「OpenStack Heat」に迫る!
自己紹介
中井悦司(なかいえつじ)
– Twitter @enakai00
日々の仕事
– Senior Solution Architect and
「Linux独習書の新定番」
書きました!
Cloud Evangelist at Red Hat K.K.
企業システムでオープンソースの活用を希望される
お客様を全力でご支援させていただきます。
昔とった杵柄
– 素粒子論の研究(超弦理論とか)
– 予備校講師(物理担当)
– インフラエンジニア(Unix/Linux専門)
読者の声より ――
「今はインターネット上に情報が溢れているけど、質の高い入門書が少なく
なっているのは不幸なことだと思う。そんな中、この本はすごくいい」
「平易な言葉でありながら、決して足りなくはない。慎重に選ばれています。
脳みそに染みこんで来ます」
Open Cloud Campus
- 5. クラウドオーケストレーション「OpenStack Heat」に迫る!
デプロイ自動化の現状
クラウド/仮想化環境での自動化3大パターン
1. 仮想アプライアンス(ゴールデンイメージ)方式
• アプリケーション導入済みの環境をマシンイメージ化して利用。
• 巨大なテンプレートファイルの保守管理、インフラ間の可搬性が
課題。
2. JEOS(Just Enough Operating System)方式
仮想化環境でよく
利用される方法
• 最小限のOS環境をマシンイメージ化して利用。アプリケーション
の導入・設定は、別途、ツールで自動化。
3. 自動インストール方式
クラウドで主流に
なりつつある手法
• OSのインストールからアプリケーションの導入・設定まで、すべ
ての作業を自動化して適用。
Open Cloud Campus
- 6. クラウドオーケストレーション「OpenStack Heat」に迫る!
カスタマイズ・スクリプト(User Data)による自動化
マシンインスタンス起動時に「カスタマイズ・スクリプト(User Data)」を与え
ると任意のテキストをメタデータとしてゲストOSに受け渡すことができます。
Cloud-Initは、カスタマイズ・スクリプトを解釈して、自動化を実現します。
– 下図はシェルスクリプトを渡して、「/etc/motd」を設定しています。
– この他にもCloud-Init独自の構文で、処理内容を指示することができます。
http://cloudinit.readthedocs.org/en/latest/
Open Cloud Campus
- 7. クラウドオーケストレーション「OpenStack Heat」に迫る!
Github/Puppetと連携するカスタマイズ・スクリプトの例
Githubとは?
– Gitは、プログラムソースコードの分散バージョン管理システム。インターネット上に
コードリポジトリを作成して無料で利用できるサービス「Github」の登場により、利用
者が増加しました。
– 下図のカスタマイズ・スクリプトでは、GithubにアップロードしておいたPuppet間に不
フェスとをダウンロードして適用しています。
Githubからマニフェストを取得して適用するスクリプトの例
#!/bin/sh -x
yum -y install puppet git
GitRepository=https://github.com/enakai00/pgsql_puppet
ConfigTag=f19
RepoName=${GitRepository##*/}
RepoName=${RepoName%.git}
mkdir -p /tmp/gittmp
cd /tmp/gittmp
git clone $GitRepository
cd $RepoName
git checkout $ConfigTag
export FACTER_manifest_dir="/tmp/gittmp/$RepoName"
puppet apply main.pp
Open Cloud Campus
- 13. クラウドオーケストレーション「OpenStack Heat」に迫る!
デモンストレーション
# heat stack-create -f dengonban.template -P "KeyName=mykey" dengonban
+--------------------------------------+------------+--------------------+----------------------+
| id
| stack_name | stack_status
| creation_time
|
+--------------------------------------+------------+--------------------+----------------------+
| 642c1678-8966-461c-bbfe-c75c17b75e95 | dengonban | CREATE_IN_PROGRESS | 2014-02-06T07:01:16Z |
+--------------------------------------+------------+--------------------+----------------------+
# heat stack-list
+--------------------------------------+------------+-----------------+----------------------+
| id
| stack_name | stack_status
| creation_time
|
+--------------------------------------+------------+-----------------+----------------------+
| 642c1678-8966-461c-bbfe-c75c17b75e95 | dengonban | CREATE_COMPLETE | 2014-02-06T07:01:16Z |
+--------------------------------------+------------+-----------------+----------------------+
# nova list
+--------------------------------------+--------------------------------------------++------------------------------------------+
| ID
| Name
|| Networks
|
+--------------------------------------+--------------------------------------------++------------------------------------------+
| c7b48220-ea3c-4053-b699-d3bed8cde657 | dengonban-PgSQLDatabaseServer-wptgqlxdmbt6 || private01=192.168.101.3
|
| 5896b645-a398-4827-9d76-306f7ec9c418 | dengonban-WebServer-s3n5y4wshlq2
|| private01=192.168.101.4, 192.168.199.105 |
+--------------------------------------+--------------------------------------------++------------------------------------------+
Open Cloud Campus
- 14. クラウドオーケストレーション「OpenStack Heat」に迫る!
テンプレートの概要 (1/2)
{
"AWSTemplateFormatVersion" : "2010-09-09",
"Description" : "A Database instance running a local PostgreSQL server",
・・・
"Resources" : {
"PgSQLDatabaseServer": {
"Type": "AWS::EC2::Instance",
"Properties": {
"SubnetId"
: "013cd465-7e75-4edc-ae83-6476fcf9178b",
"ImageId"
: { "Ref" : "ImageName" },
"InstanceType"
: { "Ref" : "InstanceType" },
"KeyName"
: { "Ref" : "KeyName" },
"UserData"
: { "Fn::Base64" : { "Fn::Join" : ["", [
"#!/bin/bash -xn",
・・・
VM#1のカスタマイズスクリプト
"# All is well so signal successn",
"/opt/aws/bin/cfn-signal -e 0 -r "PostgreSQL Database setup complete" '",
{ "Ref" : "PgSQLWaitHandle" }, "'n"
]]}}
カスタマイズスクリプトの中から、
}
「WaitHandle」への完了通知コマンドを実行
},
"PgSQLWaitHandle" : {
"Type" : "AWS::CloudFormation::WaitConditionHandle"
},
"PgSQLWaitCondition" : {
"Type" : "AWS::CloudFormation::WaitCondition",
"DependsOn" : "PgSQLDatabaseServer", "Properties" : {
"Handle" : {"Ref" : "PgSQLWaitHandle"},
"Timeout" : "6000"
}
},
WaitHandleが通知を受けるまで
待機するダミーリソース
Open Cloud Campus
- 15. クラウドオーケストレーション「OpenStack Heat」に迫る!
テンプレートの概要 (1/2)
"WebServer": {
"Type": "AWS::EC2::Instance",
"DependsOn": "PgSQLWaitCondition",
WaitConditionが完了してから構築開始
"Properties": {
"SubnetId"
: "013cd465-7e75-4edc-ae83-6476fcf9178b",
VM#1のプライベートIPに置換される
"ImageId"
: { "Ref" : "ImageName" },
"InstanceType"
: { "Ref" : "InstanceType" },
"KeyName"
: { "Ref" : "KeyName" },
VM#2のカスタマイズスクリプト
"UserData"
: { "Fn::Base64" : { "Fn::Join" : ["", [
"#!/bin/bash -xn",
"export DB_IP=", { "Fn::GetAtt" : [ "PgSQLDatabaseServer", "PublicIp" ] }, "n",
・・・
"sed -i "s/ username:.*/ username: rails/" /root/rails/dengonban/config/database.ymln",
"sed -i "s/ password:.*/ password: pas4railsn host: $DB_IP/" /root/rails/dengonban/config/database.ymln",
・・・
]]}}
}
},
}
}
"WebServerIPAssoc" : {
"Type" : "AWS::EC2::EIPAssociation",
"Properties" : {
"InstanceId" : { "Ref" : "WebServer" },
"EIP" : "192.168.199.105"
}
}
Open Cloud Campus
- 17. クラウドオーケストレーション「OpenStack Heat」に迫る!
Heatの今後の展開
Heatは、構築済みスタックを後から構成変更することもできます。
– テンプレートを修正して、Heatエンジンに再投入すると差分を検出して、追加の構築/
削除処理を実施します。
これを利用するとオートスケールを実現することができます。
– VMの負荷に応じてテンプレートにVMを追加/削除して、HeatからVMを追加構築/削除
します。
– 開発コミュニティでは、Ceilometerと連携する方向での実装が検討されています。
Baremetal Deployment(Ironic)を利用して、Heatからコンピュートノードを
追加構築するような試みもあります。
– 参考:Triple O / Tuskar
– https://wiki.openstack.org/wiki/TripleO/Tuskar
Open Cloud Campus
- 19. クラウドオーケストレーション「OpenStack Heat」に迫る!
参考資料
本日のデモ環境の構築手順
– RDO(Havana)でHeatを試す
– http://d.hatena.ne.jp/enakai00/20140205/1391604332
HeatとCloud-Initの連携の詳細を紹介
– OpenStack HeatがCloud-Init / cfntoolsと連携する様子を覗きこむ
– http://d.hatena.ne.jp/enakai00/20131226/1388021566
Heatテンプレートは、AWS CloudFormation互換なので、CloudFormationの知識も有用
– CloudFormation 詳細 -ほぼ週刊AWSマイスターシリーズ第6回– http://www.slideshare.net/kentamagawa/cloudformation-aws5
PuppetとGitHubの連携は、日経Linux連載記事(2013年9月号〜2014年2月号)で解説
Open Cloud Campus