原文はこちら。
https://blogs.oracle.com/pshuff/entry/orchestration_2_0
このエントリでは、Computeインスタンスのインストールおよびプロビジョニングの自動化の方法を紹介します。様々な方法、様々なツールや方法論を利用することができますが、こうしたツールの全ての根幹は、クラウドもしくは貴社データセンターで稼働するシステムの構成方法を定義することです。構成データには、Computeリソース、ネットワークリソース、ユーザー定義、パッケージ、プロセス、サービスが含まれます。こうした定義言語を使って1個のサービスだけでなく、サービスの集合も定義することができます。例えば、WordPressブログを定義したい場合、WordPressブログ・ソフトウェアを含む単一のサーバ、ブログソフトウェアを稼働するためのWebコンテナ、そして状態やユーザー情報をブログサーバ用に保持するための、通常はMySQLデータベースを定義することができます。マルチサイトのブログエントリの場合、通常、アプリケーション・サーバーからデータベースを分割し、データベースファイルのフェールオーバと、大量のユーザーとウェブへのリクエストを処理するため、フロントエンドに複数のWebコンテナを用いて高可用性構成を作成することができます。
文章でこのシステムを記述しようとすれば、比較的複雑で混乱することでしょう。例えば…
Amazon CloudFormationは類似のテンプレートと構成ユーティリティを使います。必須の属性とオプションの属性が大きく異なります。CloudFormationに関する情報は以下のリンクからどうぞ。
Microsoft Azureは根本的に異なるアプローチをとり、Windows PowerShellやPowerShell Workflowを必要とするRunbooksを使って構成や構成のためのパラメータを定義します。これらのツールは、Azure固有のものであり、オンプレミスシステムの場合とは動作が異なります。Azure固有の方法であるため、今回は取り上げませんでした。
まとめると、様々な方法でクラウドのサービス定義を作成でき、オンプレミスとクラウドのための構成を実現するツールは一つとしてありません。ツールを構成してこれを実現することはできますが、通常は全てのクラウドベンダーで使えるわけではありません。各クラウドベンダーには固有の実装があり、何が動作し、何が動作しないのかを比較するためには、Googleで「cloud orchestration tools comparison」と検索すれば、この課題を解決するパブリックドメインのツールや商用ツールのレビューを得ることができるでしょう。これらのツールは全て比較的最近のもので、まだ成熟していません。一つとして市場を独占し、他製品よりも多く採用されるツールはありません。後のエントリで、Oracle Orchestration定義の詳細に踏み込み、単一サーバでのWordPressのようなシステムと、複数サーバでの高可用性クラスタのようなシステムの構築を比較します。これらと同じ原則は、IaaSベースだけでなく、PaaSベースであってもE-Business Suite、PeopleSoft、JD Edwardsの構築に当てはめることができます。
https://blogs.oracle.com/pshuff/entry/orchestration_2_0
このエントリでは、Computeインスタンスのインストールおよびプロビジョニングの自動化の方法を紹介します。様々な方法、様々なツールや方法論を利用することができますが、こうしたツールの全ての根幹は、クラウドもしくは貴社データセンターで稼働するシステムの構成方法を定義することです。構成データには、Computeリソース、ネットワークリソース、ユーザー定義、パッケージ、プロセス、サービスが含まれます。こうした定義言語を使って1個のサービスだけでなく、サービスの集合も定義することができます。例えば、WordPressブログを定義したい場合、WordPressブログ・ソフトウェアを含む単一のサーバ、ブログソフトウェアを稼働するためのWebコンテナ、そして状態やユーザー情報をブログサーバ用に保持するための、通常はMySQLデータベースを定義することができます。マルチサイトのブログエントリの場合、通常、アプリケーション・サーバーからデータベースを分割し、データベースファイルのフェールオーバと、大量のユーザーとウェブへのリクエストを処理するため、フロントエンドに複数のWebコンテナを用いて高可用性構成を作成することができます。
文章でこのシステムを記述しようとすれば、比較的複雑で混乱することでしょう。例えば…
- ディスクのメモリと20ギガバイトの8ギガバイトとシングルプロセッサのコンピュータ(8GBのRAMと20GBのディスク)上でWebコンテナを実行し、MySQLサーバを実行する、別のシングルプロセッサのコンピュータ(16GBのRAMと40GBのディスク)と接続しています。
- WebコンテナはPHPがインストールされており、HTTPおよびHTTPSでリクエストを受け付ける必要があります。
- Webコンテナは、WordPressのパッケージを実行し、データベース・インスタンスに接続して、ユーザー情報やWebページの情報を格納する必要があります。
- どちらのシステムでも、Oracle Linux 6.7を利用しており、Webサービスやセキュアシェルを使ったWebサービスへのリモート・ログインするための機能以外の全てのポートはロックダウンされています。
- また、Webコンテナやデータベース・インスタンスが割り当てられたプロセッサの80%以上を利用した場合の対策や、いずれかのサービスが停止、障害が発生した場合の対策を定義する必要があります…
Puppet
PuppetはPuppet Labsが作成したパブリックドメイン・パッケージで、LinuxやWindows上で利用できます。詳細情報は以下のリンクからどうぞ。- Learning Puppet 4: A Guide to Configuration Management and Automation
https://www.amazon.com/Learning-Puppet-Configuration-Management-Automation/dp/B01DEBCN2O - Puppet 4 Essentials - Second Edition
https://www.amazon.com/Puppet-Essentials-Second-Felix-Frank-ebook/dp/B0166Y6YIU - Learning Puppet
https://www.amazon.com/Learning-Puppet-Bill-Ward-ebook/dp/B01F4T7LBM - Mastering Puppet
https://www.amazon.com/Mastering-Puppet-Thomas-Uphill-ebook/dp/B00LVREG3I - Puppet Cookbook - Third Edition
https://www.amazon.com/Puppet-Cookbook-Third-Thomas-Uphill/dp/B00TXBLF8S - Puppet
https://puppet.com/ - Releases - puppetlabs/puppet
https://github.com/puppetlabs/puppet/releases - Puppet
http://www.youtube.com/user/PuppetLabsInc
resource_type{
‘resource_title’: ensure: presentorabsent,
attribute: one,
attribute: two,
attribute: n
}
Chef
Chefは、Chefと呼ばれる会社が2009年に最初のリリースを出した類似の構成ツールです。Chefより5年前にリリースされたPuppetと同様にシステム構成を表現できます。Chefに関する詳細情報は以下のリンクからどうぞ。- Learning Chef: A Guide to Configuration Management and Automation
https://www.amazon.com/Learning-Chef-Configuration-Management-Automation/dp/B00PCZMAV0 - Mastering Chef Provisioning
https://www.amazon.com/Mastering-Chef-Provisioning-Earl-Waud-ebook/dp/B01BNOB7Q2 - Chef Infrastructure Automation Cookbook - Second Edition
https://www.amazon.com/Chef-Infrastructure-Automation-Cookbook-Second/dp/B00YJ64GEW - Chef Essentials
https://www.amazon.com/Chef-Essentials-John-Ewart-ebook/dp/B00NXWI19O - Infrastructure as Code: Managing Servers in the Cloud
https://www.amazon.com/Infrastructure-Code-Managing-Servers-Cloud/dp/B01GUG9ZNU - Customizing Chef
https://www.amazon.com/Customizing-Chef-Jon-Cowie/dp/B00N38QCEY - Chef
http://www.chef.io/ - GitHub chef/chef
https://github.com/chef/chef
rbファイルはRubyプログラミング言語の構文をサポートしているため、属性はちょっと異なる形で定義されます。attributes
default.rb
files
default
file.txt
recipies
default.rb
templates
default
file.erb
metadata.rb
rbファイルには条件制御構造も有しており、これを使うとIf-Then-ElseやCase選択でインストール先で構成を変更することができます。例えば、WebコンテナをWindowsもしくはLinux上で構成する場合、これらのレシピを全て1箇所に集め、必要に応じてアップデートすることができますし、OSの構成を1箇所のディレクトリに、アプリケーションの構成は別のファイルやディレクトリに集約することができます。そして構成ファイル間の依存性を作成することもできます。default[‘Linux’][‘version’] = ‘6.7’
default[‘Linux’][package_name’] = ‘OEL_6_7’
default[‘Linux’][‘dir’] = ‘/home/oracle’
Oracle Orchestrations
Oracleは第3の構成管理ツールであるOrchestrationsを使っています。これは利用、定義の点で、ChefよりはPuppetに近いものです。両者とも基盤としてJSONを使うため、Oracle OrchestrationsとAmazon CloudFormationのテンプレートが非常に類似しているのは自然なことです。オーケストレーションのドキュメントによると、Orchestrationでは属性とOracle Compute Cloud ServiceのComputeリソース、ネットワークリソース、ストレージリソースのコレクションの相互の依存性を定義します。Oracle® Cloud Using Oracle Compute Cloud Service (IaaS)オーケストレーションを使って仮想Computeトポロジー全体のプロビジョニングやライフサイクル・オペレーションを自動化することができます。以下はオーケストレーションファイルの例です。
About Orchestrations
https://docs.oracle.com/cloud/latest/stcomputecs/STCSG/GUID-1896C799-49A6-42B8-9813-7DE5695267FE.htm#STCSG-GUID-1896C799-49A6-42B8-9813-7DE5695267FE
Oracle Orchestrationについて説明した書籍はありませんが、テクノロジーの理解の助けとなるリンクがあります。Oracle Orchestrationは2回メジャーアップデートしており、Ver.2では、個々のサーバではなく、クラウドのシステムの自動化のためにデザインされています。{
attribute: value,
attribute: [
{
attribute: subvalue,
attribute: subvalue
}
]
}
- Oracle® Cloud Using Oracle Compute Cloud Service (IaaS) About Orchestrations
- Oracle® Cloud Using Oracle Compute Cloud Service (IaaS) Building Your First Orchestration
- Creating Oracle Compute Cloud Service Oracle Linux Instances Using an Orchestration
http://www.oracle.com/webfolder/technetwork/tutorials/obe/cloud/compute-iaas/creating_instances_using_an_orchestration/creating_instances_using_an_orchestration.html#section2 - REST API for Oracle Compute Cloud Service (IaaS)
Orchestrations REST Endpoints
https://docs.oracle.com/cloud/latest/stcomputecs/STCSA/api-Orchestrations.html - Oracle® Cloud Using Oracle Compute Cloud Service (IaaS) Orchestration Templates
https://docs.oracle.com/cloud/latest/stcomputecs/STCSG/GUID-1896C799-49A6-42B8-9813-7DE5695267FE.htm#STCSG-GUID-1896C799-49A6-42B8-9813-7DE5695267FE
https://docs.oracle.com/cloud/latest/stcomputecs/STCSG/GUID-CC3D5C56-2C25-44B0-8787-9B68C5D2043F.htm#STCSG-GUID-CC3D5C56-2C25-44B0-8787-9B68C5D2043F
https://docs.oracle.com/cloud/latest/stcomputecs/STCSG/GUID-F6861C70-1A76-4F65-B58F-B3C42DB162F7.htm#STCSG-GUID-F6861C70-1A76-4F65-B58F-B3C42DB162F7
Amazon CloudFormationは類似のテンプレートと構成ユーティリティを使います。必須の属性とオプションの属性が大きく異なります。CloudFormationに関する情報は以下のリンクからどうぞ。
- AWS CloudFormation User Guide
https://www.amazon.com/CloudFormation-User-Guide-Amazon-Services-ebook/dp/B007S28IUW/ref=sr_1_1?s=books&ie=UTF8&qid=1469453265&sr=1-1&keywords=cloudformation - Develop, Deploy, and Manage for Scale with AWS Elastic Beanstalk and AWS CloudFormation
https://www.amazon.com/Develop-Deploy-Elastic-Beanstalk-CloudFormation-ebook/dp/B00O96HVW6/ref=sr_1_2?s=books&ie=UTF8&qid=1469453265&sr=1-2&keywords=cloudformation - AWS CloudFormation - Amazon Web Services
https://aws.amazon.com/cloudformation/ - Creating an Amazon EC2 Instance for AWS CodeDeploy (AWS CloudFormation Template)
http://docs.aws.amazon.com/codedeploy/latest/userguide/how-to-use-cloud-formation-template.html - AWS CloudFormation Masterclass - YouTube
https://www.youtube.com/watch?v=6R44BADNJA8 - Introduction to AWS CloudFormation - YouTube
https://www.youtube.com/watch?v=Omppm_YUG2g
Microsoft Azureは根本的に異なるアプローチをとり、Windows PowerShellやPowerShell Workflowを必要とするRunbooksを使って構成や構成のためのパラメータを定義します。これらのツールは、Azure固有のものであり、オンプレミスシステムの場合とは動作が異なります。Azure固有の方法であるため、今回は取り上げませんでした。
まとめると、様々な方法でクラウドのサービス定義を作成でき、オンプレミスとクラウドのための構成を実現するツールは一つとしてありません。ツールを構成してこれを実現することはできますが、通常は全てのクラウドベンダーで使えるわけではありません。各クラウドベンダーには固有の実装があり、何が動作し、何が動作しないのかを比較するためには、Googleで「cloud orchestration tools comparison」と検索すれば、この課題を解決するパブリックドメインのツールや商用ツールのレビューを得ることができるでしょう。これらのツールは全て比較的最近のもので、まだ成熟していません。一つとして市場を独占し、他製品よりも多く採用されるツールはありません。後のエントリで、Oracle Orchestration定義の詳細に踏み込み、単一サーバでのWordPressのようなシステムと、複数サーバでの高可用性クラスタのようなシステムの構築を比較します。これらと同じ原則は、IaaSベースだけでなく、PaaSベースであってもE-Business Suite、PeopleSoft、JD Edwardsの構築に当てはめることができます。