IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

クラウド時代のオープンソース実践活用

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第82回 OpenStackとDockerの未来像(その3) (中井悦司) 2016年2月

はじめに

 前回は、OpenStackで起動した仮想マシンインスタンスに、Dockerでアプリケーションを配信する方法を紹介しました。今回は、この一連の操作をまとめて自動化する方法を紹介します。アプリケーションのDockerイメージは、インターネット上のDocker Hubに保存してありますので、OpenStackの環境には、Dockerが入った仮想マシンイメージさえあれば、仮想マシンインスタンスの作成からアプリケーションの起動までを何度でも繰り返すことが可能になります。Dockerによって、環境構築の自動化が、本当に手軽で簡単になったことが実感できるのではないでしょうか。

Ansibleによる自動化の仕組み

 ここでは、前回紹介した図1の環境をAnsibleで自動構築します。Ansibleは、操作対象のサーバーにSSH接続して各種コマンドを実行するという仕組みを持っており、典型的な操作を実施するためのモジュールが最初から用意されているという特徴があります。今回は、特に、OpenStackとDockerを操作するためのモジュールを用いて、環境構築の自動化を行ないます。

fig01

図1 Ansibleで自動構築する環境

 OpenStackを操作するモジュールは、OpenStackのクライアント機能が導入されたサーバーにSSH接続して、そこでOpenStackの操作を行ないます。通常は、Ansibleを実行するサーバー自身にOpenStackクライアントを導入して、ローカルでOpenStackの操作を行ないます。一方、Dockerについては、Dockerが稼働する仮想マシンインスタンスのゲストOSにSSH接続して、コンテナ起動操作を行ないます(図2)。

fig02

図2 Ansibleによる環境操作の仕組み

 この仕組みからも分かるように、図1の環境構築においては、大きく次の2つに処理が分かれます。

① OpenStackのAPIを操作する処理
② ゲストOS内でDockerを操作する処理

 Ansibleでは、「プレイブック」と呼ばれる、YAML形式のテキストファイルに処理手順を記載して実行していきますが、ここでは、①と②のそれぞれに対応するプレイブックを用意しています。一般に「クラウド」と呼ばれる環境では、環境を操作するためのAPIが提供されているわけですが、どのコンポーネントのAPIを操作するかによって、処理内容を分割・整理しておくとよいでしょう。これにより、一度作成したプレイブックの一部を取り出して、再利用がしやすくなります。

Programmable Infrastructureを実現するAnsible

 具体的なプレイブックの内容については、筆者のBlog記事を参照していただくことにして、ここでは処理の流れだけを簡単に示しておきます(*1)。前述の①②のそれぞれについて、対応するプレイブック(main01.yml, main02.yml)で以下の処理を行ないます。

① OpenStackのAPIを操作する処理(main01.yml)

  • テナント環境の準備(公開鍵の登録とセキュリティグループの作成)
  • 仮想マシンインスタンスの起動とフローティングIPの割り当て
  • MySQL用のCinderボリューム作成と接続

② ゲストOS内でDockerを操作する処理(main02.yml)

  • MySQL用仮想マシンインスタンスで、ボリュームのマウント
  • MySQLのDokcerイメージ配信とコンテナ起動
  • Etherpad-LiteのDockerイメージ配信とコンテナ起動

 これらのプレイブックが用意できれば、後は、次のようにansible-playbookコマンドでプレイブックを実行するだけです。

$ ansible-playbook -i bin/openstack.py main01.yml
$ ansible-playbook -i bin/openstack.py main02.yml

 実際のプレイブックの中身をみると、先に示した処理の流れが、まるで「プログラムコード」のように記載されていることが分かります。APIで操作できるクラウドを「Programmable Infrastructure(プログラム可能なインフラ)」と称することもありますが、Ansibleは、まさにクラウドインフラを操作するためのプログラミング言語と言えるでしょう。

次回予告

 先日、レッドハットより、「OpenShift Dedicated」の発表がなされました。これは、Amazon Web Services、もしくは、Google Cloud Platformの上にOpenShift Enterprise(OSE) v3.1の環境を構築・運用するマネージドサービスになります。次回は、OSE v3.1を用いた、コンテナアプリケーションの開発・運用の仕組みを紹介したいと思います。

参考資料

*1OpenStack&Dockerを操作するデモでAnsibleの本質を考えてみる」- プレイブックの解説に加えて、Ansibleのセットアップ手順を示した資料も掲載されています。

 

++ CTC教育サービスから一言 ++
このコラムでLinuxや周辺技術の技術概要や面白さが理解できたのではないかと思います。興味と面白さを仕事に変えるには、チューニングやトラブルシューティングの方法を実機を使用して多角的に学ぶことが有効であると考えます。CTC教育サービスでは、Linuxに関する実践力を鍛えられるコースを多数提供しています。興味がある方は以下のページもご覧ください。
 CTC教育サービス Linuxのページ
 http://www.school.ctc-g.co.jp/linux/
 

Linux研修トレーニングならCTC教育サービス


 

筆者書籍紹介

Software Design plusシリーズ
「独習Linux専科」サーバ構築/運用/管理
  ――あなたに伝えたい技と知恵と鉄則

本物の基礎を学ぶ!新定番のLinux独習書

中井悦司 著
B5変形判/384ページ
定価3,129円(本体2,980円)
ISBN 978-4-7741-5937-9
詳しくはこちら(出版社WEBサイト)
「独習Linux専科」サーバ構築/運用/管理

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes