連載 [第3回] :
  OpenStack Summit Sydneyレポート

Heat最新動向 ドラッグ&ドロップ形式のテンプレート作成機能に注目

2017年12月4日(月)
篠原 一徳

今回のOpenStack Summit Sydney レポートでは、OpenStackのオーケストレーションサービスであるHeat※1の最新動向について紹介します。

※1 https://docs.openstack.org/heat/latest/

会場近くに係留されていた帆船

Heatとは

HeatはOpenStack上でInfrastructure as codeを実現するオーケストレーションサービスです。ユーザーはHOT(Heat Orchestration Template)と呼ばれるYAML形式のテンプレートに作成したいリソース(例えばインスタンス)を記述しHeatにリクエストを送ることで記載されたリソース全てを一括で作成・更新・削除することが可能です。

Heatのアーキテクチャ

さらにCeilometer※2と連携することで負荷状況等に応じてインスタンスの増減を自動で行うオートスケーリングや、Shell Script、Ansible、Puppetなどのプロビジョニングツールと連携しOSやミドルウェアの設定を行えるSoftware Config等、単にリソースをプロビジョニングするだけではなくOpenStackテナント上のリソースのライフサイクルを管理できるサービスです。

※2 https://docs.openstack.org/ceilometer/latest/

HOTにはリソース間の依存関係も記述できるので、実際のリソースの構築順序の制御も表現することが可能です。例えば「先にネットワークを作成した後、当該ネットワークに接続するインスタンスを作成する」といったことが簡単にできます。

1つのテンプレートに記載され実際に作成されたリソース群はスタックという単位でHeatに管理され、各リソースの更新や一部削除、リソース群全体の削除などはこのスタックという単位で行われます。

HOTの例

HOTにはたくさんの機能があります。詳細は公式のテンプレートガイド※3及びサンプルテンプレートのレポジトリ※4を確認するのがおすすめです。

※3 https://docs.openstack.org/heat/pike/template_guide/index.html
※4 https://github.com/openstack/heat-templates

Pikeでの新機能と今後のロードマップ

HeatのProject Updateセッションでの主なアップデートを紹介します。

まずPikeリリースで追加されたリソースタイプのうち主なものを紹介します。

  • OS::Neutron::Trunk
    NeutronのTrunk Port※5をサポートするものです。VLAN tagを使って1つのvNICに複数のNeutron networkを接続できます。
  • OS::Zun::Container
    Zun※6 で実行されるコンテナの管理を行うことが可能です。vCPU数、メモリ、イメージ、コンテナ内で実行するコマンドなどを指定してコンテナを作成できます。
  • OS::Mistral::ExternalResource
    個人的に注目しているのがこのリソースタイプです。これまでユーザーが独自のリソース(例: OpenStack以外のサービス)をHeatを使って管理するためにはプラグインを自分で書く必要がありました。このExternal ResourceではMistral※7のWorkflowを使って作成、更新、削除等のアクションを定義することでHeatのテンプレート上で簡単に独自リソースを作ることができます。

※5 https://wiki.openstack.org/wiki/Neutron/TrunkPort
※6 https://wiki.openstack.org/wiki/Zun
※7 https://docs.openstack.org/mistral/latest

また以下3つのFunctionが追加されました。

  • List_concat_unique
    引数としてリストを複数取り、要素の重複を排除した上で結合できます。
  • Contains
    第一引数の値が第二引数のリストに含まれているかをTrue/Falseで判定します。
  • Make_url
    他のリソースからscheme、host、pathを受けそれらを結合しURLを生成します。

次期QueensリリースではRolling Upgradeが公式にサポートされる予定です。これによりダウンタイムを最小限にしてHeatのアップグレードができるようになることが期待されます。またHeatのGUI機能がHorizonのレポジトリから独立しプラグイン化されHeat Dashboardという名前でリリースされる予定です。

Heat Dashboardについて

2017年10月にHeatの公式サブプロジェクトとしてHeat Dashboardが追加されました。これはHeatのGUI機能をHorizonのプラグインとして提供するものです。これまでもHeatの機能はHorizonから利用可能でしたが、これをHorizon本体から切り離した上でプラグイン化し新たな機能を追加する意欲的なプロジェクトです。本プロジェクトが順調に進む前提ではありますが、Queensリリース以降のOpenStack環境でHeatをGUIから利用したい場合はHeat Dashboardのインストールも必要となります。

Heat Dashboardで注目すべき機能はドラッグ&ドロップ形式のテンプレート作成機能です。

Heat Dashboard

これまでHOTの作成はテキストエディタ等を使ってマニュアルで行うのが一般的でしたが、たくさんのリソースを含み、各リソース間の依存関係が複雑な大型のテンプレートの作成をミスなく行うことは非常に困難でした。このテンプレート作成機能を利用すればユーザーはドラッグ&ドロップという直感的な操作でテンプレート作成作業を行うことができます。

使い方は簡単で、作成したいリソースを示すアイコンをドラッグ&ドロップでキャンバスに配置します。配置したアイコンをクリックするとプロパティの設定を行うモーダルウィンドウが表示されます。またインスタンスのフレーバー等のプロパティについてはプルダウンメニューから選択可能にしており人為的なミスを最小限に出来るよう工夫がされています。

リソース間の依存関係についてはアイコンとアイコンの間をコネクタで繋ぐことで表現します。こちらはHOTのFunctionで言うところの「get_resource」に相当します。

更に作成中のテンプレートについてはキャンバス情報の保存及び、保存データの読み込みを行うことが可能です。

著者自身がHeat Dashboardの開発に携わっており、Sydneyサミットで行ったセッションの中でデモを行いましたので是非ご覧ください。※8

Heat DashboardはQueensでのリリースを目指し現在鋭意開発中のステータスですが、公式レポジトリは既に存在しDevStack等の環境で利用することが可能です。以下の様にDevStackのlocal.confファイルにHeat Dashboardを有効にする1行を追加の上、stack.shを実行するだけです。バグ報告や機能追加についてはLaunchpadから行えます。皆様からのフィードバックをお待ちしています。※9

DevStackでHeat Dashboardを有効にする

※8 https://www.youtube.com/watch?v=2O_Ou7K1bRk
※9 https://launchpad.net/heat-dashboard

おわりに

今回はOpenStackのオーケストレーションサービス「Heat」の最新動向について紹介しました。Heat Dashboardについてはグラフィカルなインターフェースから簡単にHOTが作成出来るようになり、これまでHeatに馴染みがなかったユーザーも気軽にHeatを使えるようになるのではと期待しています。この記事の読者のみなさまもぜひ使ってみてください!

NTTコミュニケーションズ株式会社

クラウドサービス部にてEnterprise Cloud2.0の開発チームに所属。主にOpenStack Heatを使ったオーケストレーションサービスの開発に従事。2017年からOpenStackコミュニティにコントリビュータとして参加、現在は上述の「Heat Dashboard」のコアデベロッパーとして活動中。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています