今回は、OpenStackのオーケストレーションサービスである「Heat」を取り上げる、Heatは、リソースの配置を定義したテキストベースのテンプレートを用いてクラウドシステムの構築を自動化する。以下、Heatについて説明しよう。

提供する機能と応用例

Heatでは、ユーザーが構築したいクラウドシステムをテキストファイルのテンプレートに記述する。このテンプレートに従って、ネットワーク、仮想ルータ、インスタンス、フローティングIP、ボリューム、セキュリティグループ、ユーザーなどのさまざまなリソースの構築や運用を自動化できる。

テンプレートはYAML記述のHeat Orchestration Template (HOT)形式、または、JSON記述のCFN形式で記述できる。CFN形式はAWS CloudFormationと互換性があり、CloudFormationで使用するテンプレートを利用できる。Heatによって作成されるシステム環境は「スタック」と呼ばれる。

リソースの構築を行う際は、作成される順序を考慮する必要がある。例えば、プライベート用サブネットを作成する前はプライベート用ネットワークを作成しなければならない。このようなリソースの依存関係をテンプレートファイルに記述することによって、それぞれのリソースの配置順序を考慮した自動構築を実現できる。

また、Heatはシステムの作成に加えて、変更も簡単に実現できる。一度Heatによって作成されたシステムに変更の必要性が生じた場合は、テンプレートを修正して再度適用させると、現状のスタックとの差分を検出して、自動的にシステムの変更を実施する。さらに、Heatを使用して構築したシステムが不要になった場合は、スタックを削除するだけでシステム環境の削除が行われる。

また、Heatによるシステム構築自動化によって以下のような応用が考えられる。

  • システム構成パターンをリポジトリとして蓄積し、必要に応じてシステムの構築を自動化
  • 別環境へシステムを再現してトラブルシューティング
  • 標準テンプレートを書き換えることによるカスタマイズ
  • インフラ設計のノウハウを他の利用者と共有し横展開

[システムのテンプレート化により得られるメリット]

さらに、前回紹介したメータリングサービス「Ceilometer」と連携して、リソース消費の閾値を超えた場合に自動的に仮想インスタンスを追加して起動するオートスケール機能を実現できる。

オーケストレーション実施の手順

Heatによる自動システム構築の例として、2つの内部ネットワーク、仮想ルータ、インスタンスを作成する例を動画で紹介する。

通常手動で作成する場合、内部ネットワークの作成、仮想ルータの作成、仮想ルータとネットワークの接続などの作業を行った後にインスタンスの作成を行わなければならない。これらのリソースの依存関係を考慮したテンプレートを事前に用意しておく。

ユーザーはOpenStack Horizonのオーケストレーションメニューからスタックの起動を選択し、スタック名や各ネットワークで使用するアドレスを記入する。これらのデフォルト値をテンプレートファイルの中に記述することもできる。必要な情報を記入した後にスタックを起動させれば直ちに自動構築が開始される。

上記の動画のように、テンプレートと必要な情報を与えれば、短時間でシステム構築の自動化が実現できる。

以下の表に、Heatに関わる各サービスが提供する主な機能をまとめた。

サービス名称 サービスが提供する機能
heat-api heat-engineに送信されるREST APIリクエストを処理するサービス
heat-api-cfn heat-engineに送信されるAWS CloudFormation互換のAPIリクエストを処理するサービス
heat-engine テンプレートに従って構築の自動化を実施

今回はOpenStackコンポーネントの紹介として、オーケストレーションサービスのHeatを紹介した。次回は、ベアメタルプロビジョニングサービス「Ironic」を紹介する。

知念 紀昭
ネットワンシステムズ株式会社 市場開発本部 ソリューション・サービス企画室 第1チーム
レッドハットの認定資格「RED HAT CERTIFIED ENGINEER IN RED HAT OPENSTACK」を保持。
仮想化ハードウェア・ソフトウェアの評価・検証業務を経て、現在クラウドソリューションを担当している。