Your SlideShare is downloading. ×
クラウドオーケストレーション「OpenStack Heat」に迫る!
クラウドオーケストレーション「OpenStack Heat」に迫る!
クラウドオーケストレーション「OpenStack Heat」に迫る!
クラウドオーケストレーション「OpenStack Heat」に迫る!
クラウドオーケストレーション「OpenStack Heat」に迫る!
クラウドオーケストレーション「OpenStack Heat」に迫る!
クラウドオーケストレーション「OpenStack Heat」に迫る!
クラウドオーケストレーション「OpenStack Heat」に迫る!
クラウドオーケストレーション「OpenStack Heat」に迫る!
クラウドオーケストレーション「OpenStack Heat」に迫る!
クラウドオーケストレーション「OpenStack Heat」に迫る!
クラウドオーケストレーション「OpenStack Heat」に迫る!
クラウドオーケストレーション「OpenStack Heat」に迫る!
クラウドオーケストレーション「OpenStack Heat」に迫る!
クラウドオーケストレーション「OpenStack Heat」に迫る!
クラウドオーケストレーション「OpenStack Heat」に迫る!
クラウドオーケストレーション「OpenStack Heat」に迫る!
クラウドオーケストレーション「OpenStack Heat」に迫る!
クラウドオーケストレーション「OpenStack Heat」に迫る!
クラウドオーケストレーション「OpenStack Heat」に迫る!
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

クラウドオーケストレーション「OpenStack Heat」に迫る!

7,959

Published on

Published in: Technology, Business
0 Comments
21 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
7,959
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
181
Comments
0
Likes
21
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. オープンクラウド・キャンパス クラウドオーケストレーション 「OpenStack Heat」に迫る! ver1.1 中井悦司 Twitter @enakai00
  • 2. クラウドオーケストレーション「OpenStack Heat」に迫る! 自己紹介  中井悦司(なかいえつじ) – Twitter @enakai00  日々の仕事 – Senior Solution Architect and 「Linux独習書の新定番」 書きました! Cloud Evangelist at Red Hat K.K. 企業システムでオープンソースの活用を希望される お客様を全力でご支援させていただきます。  昔とった杵柄 – 素粒子論の研究(超弦理論とか) – 予備校講師(物理担当) – インフラエンジニア(Unix/Linux専門) 読者の声より ―― 「今はインターネット上に情報が溢れているけど、質の高い入門書が少なく   なっているのは不幸なことだと思う。そんな中、この本はすごくいい」 「平易な言葉でありながら、決して足りなくはない。慎重に選ばれています。  脳みそに染みこんで来ます」 Open Cloud Campus
  • 3. クラウドオーケストレーション「OpenStack Heat」に迫る! 日経LinuxでOpenStackの連載を書いてます! Open Cloud Campus
  • 4. OpenStackの自動化機能
  • 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
  • 8. クラウドオーケストレーション「OpenStack Heat」に迫る! カスタマイズ・スクリプトとGithub/Puppetの連携  カスタマイズ・スクリプトからGithub/Puppetを連携させて、仮想マシンインス タンスを自動構築することができます。 YUM リポジトリ ソフトウェア パッケージ pgsql VM アプリ設定情報 (Puppetマニフェスト) GitHub https://github.com/enakai00/pgsql_puppet カスタマイズ・スクリプト Open Cloud Campus
  • 9. クラウドオーケストレーション「OpenStack Heat」に迫る! カスタマイズ・スクリプトの限界 カスタマイズ・スクリプトだけでは 複数VMの連携処理ができない・・・ Open Cloud Campus
  • 10. クラウドオーケストレーション「OpenStack Heat」に迫る! 複数VMによる連携処理の例 DBの構築完了をどうやって 検知する・・・  VM#1を起動して、PostgreSQLサーバーを構築する。  PostgreSQLの構成が完了して、DBに接続可能になるのを待つ。  VM#2を起動して、 Railsアプリケーションをデプロイする。  Railsアプリケーションから、PostgreSQLのDBに接続する。 DBサーバのプライベートIPを どうやって知る・・・ やりたいこと Webアプリケーションには フローティングIPで接続 フローティングIP DBサーバには プライベートIPで接続 プライベートIP プライベートIP VM#2 VM#1 Open Cloud Campus
  • 11. そこでHeatなわけですよ!
  • 12. クラウドオーケストレーション「OpenStack Heat」に迫る! Heatのアーキテクチャー スタックを 自動構築 Heatエンジン Heatテンプレート HeatのAPIから テンプレート投入 ・リソース[VM#1]  カスタマイズスクリプトでDB構築  カスタマイズスクリプトから構築完了をHeatエンジンに通知 ・リソース[WaitHandle]  VM#1からの構築完了通知を受けとる ・リソース[WaitCondition]  WaitHandleが通知を受けとるまで待機 ・リソース[VM#2]  カスタマイズスクリプトでRailsアプリ構築  VM#1のプライベートIPをカスタマイズスクリプトに埋め込む このかたまりを1つの 「スタック」として テンプレートに記述 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
  • 16. クラウドオーケストレーション「OpenStack Heat」に迫る! Heatのアーキテクチャー(詳細版) テンプレート 仮想マシンインスタンス起動 Cinder REST APIを提供 Neutron Nova カスタマイズ スクリプト カスタマイズ スクリプト Heat API Heat Engine 仮想マシン インスタンス 仮想マシン インスタンス cfntools cfntools シグナル送信 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
  • 18. クラウドオーケストレーション「OpenStack Heat」に迫る! (参考)Tuskarのアーキテクチャー コンピュートノード コントローラーノード 物理サーバー ・・・ オーバークラウド アンダークラウド REST APIを提供 Tuskar API Tuskar Manager コントローラーノードや コンピュートノードを構築 Heat Nova Ironic 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
  • 20. オープンクラウド・キャンパス これからもクラウドと自動化の 未来を一緒に考えましょう! 中井悦司 Twitter @enakai00

×