Advertisement

Aeolus Conductorによる複数環境へのデプロイ自動化

Cloud Solutions Architect at Google
Apr. 2, 2013
Advertisement

More Related Content

Slideshows for you(20)

Viewers also liked(20)

Advertisement

More from Etsuji Nakai(20)

Advertisement

Aeolus Conductorによる複数環境へのデプロイ自動化

  1. オープンクラウド・キャンパス Aeolus Conductorによる 複数環境へのデプロイ自動化 Ver1.0 2013/04/02 中井悦司 (Twitter @enakai00)
  2. Aeolus Conductor 自己紹介  中井悦司(なかいえつじ) – Twitter @enakai00  日々の仕事 – Senior Solution Architect and Cloud Evangelist at Red Hat K.K. 企業システムでオープンソースの活用を希望される 好評発売中! お客様を全力でご支援させていただきます。  昔とった杵柄 – 素粒子論の研究(超弦理論とか) – 予備校講師(物理担当) – インフラエンジニア(Unix/Linux専門) 2 Open Cloud Campus
  3. Aeolus Conductor Aeolus Conductorとは?  複数クラウドに対応したイメージ作成/アプリケーション環境構築の自動化ツール – クラウド管理の中でも「デプロイ機能」にフォーカスしたツール – Aeolus Conductorをアップストリームとする商用版が「Red Hat CloudForms 1.1」 3 「Aeolus(アイオロス)でRHELonEC2を利用する」 http://bit.ly/QzniL4 Open Cloud Campus
  4. 仮想マシン構築自動化の例
  5. Aeolus Conductor 「パーソナルクラウド」における自動化の実例 Github  図の①〜③を1つの設定ファイルを元に自動実行するスクリプト を作成して、「パーソナルクラウド」として活用 OS/アプリケーション アプリ設定情報 OS構成情報 パッケージ (Puppet Manifest) (KickStartファイル) Kickstart ③ アプリ導入/設定 YUM Git/Puppet リポジトリ ② OS/アプリ導入 設定ファイルの バージョン管理 VM ① VM作成 Apache VM構成情報 HTTP Server KVM (virt-installコマンドの パラメータ群) Red Hat Enterprise Linux 6 libvirt x86_64サーバ 詳細は「アプリケーション環境構築の自動化をまじめに考えてみる(1)〜(4)」を参照 5 http://bit.ly/SRfpwb http://bit.ly/O9xgAa http://bit.ly/Qij9Gx http://bit.ly/QB9POk Open Cloud Campus
  6. Aeolus Conductor 「パーソナルクラウド」自動化における考察  便利な点 – 設定ファイルの再利用性 • テキストファイルにすべての設定が記録されているので、設定変更が簡単で、少しづ つ設定の異なる類似環境を何度でも再構築できる。 • Puppetのマニフェストがバージョン管理されているので、バージョン番号を指定す るだけで、特定バージョンの設定が適用できる。 Github  不便な点 – 単一の物理サーバが前提 • 複数の物理サーバへのデプロイはできない。 v1.0 v1.1 – 複数VMの依存関係が扱えない • Puppetはサーバ間の依存関係を解決する機能がないので、「DBサーバとWebサーバ を連携させる」ような設定はできない。 • 現状では、必要な際は、手続き型のスクリプトで連携処理を行なっている。(ので、 Puppetの「宣言的記述」のメリットが半減してしまう。) ⇒ 本格的な自動化ツールでは、複数ノードへのデプロイと複数VMの依存関係の取り扱い   が必要。 6 Open Cloud Campus
  7. 複数環境へのデプロイ自動化ツール Aeolus Conductor
  8. Aeolus Conductor 複数クラウド/仮想化環境を適材適所で活用  共通の定義ファイルから複数環境に同一のアプリケーション実行環境を構築。 – システムテンプレート:JEOSの構成定義ファイル – アプリケーション・ブループリント:アプリケーション実行環境の構成定義ファイル システムテンプレート アプリケーション・ブループリント 本番環境 開発・テスト環境 パブリック 仮想化環境A 仮想化環境B クラウド 8 Open Cloud Campus
  9. Aeolus Conductor Aeolus Conductorによるアプリケーションデプロイの流れ  アプリケーションデプロイ時は、ConfigServerを介して構成情報を交換することで、複数 VMに依存する設定が可能です。 – Ruby Facterでの取得情報を交換可能。ただし、ワークフロー処理は限定的。  仮想ネットワークの構成は対象外。仮想マシンは既存のデフォルトネットワークに接続し ます。 必要なサイズ/個数の仮想マシンを起動して アプリケーションの導入・設定を実施 アプリケーション ブループリント 構成情報の交換 指定のクラウドに JEOSイメージを作成 ConfigServer システム マシンイメージ テンプレート (JEOS) 9 仮想マシン Open Cloud Campus
  10. Aeolus Conductor (参考)DeltacloudによるAPIの共通化  Deltacloud Libraryは、複数の仮想化基盤/クラウドを共通のREST API (Deltacloud API)で操作するためのライブラリ群 – Aeolus Conductorでは、複数環境への対応にDeltacloud Libraryを使用 10 Open Cloud Campus
  11. Aeolus Conductor (参考)Deltacloud Driverの提供状況 http://deltacloud.apache.org/drivers.html#drivers 11 Open Cloud Campus
  12. Aeolus Conductorの利用イメージ
  13. Aeolus Conductor システムテンプレートによるJEOSの作成 (1)  「システムテンプレート」では、JEOSの構成情報を定義します。 – OSの種類、インストール元のレポジトリ、追加導入するパッケージ、導入後のカスタマ イズコマンドなどを指定します。 システムテンプレートの例 <template> <name>CentOS63 Template</name> <os> <name>RHEL-6</name> <version>3</version> <arch>x86_64</arch> <install type='url'> <url>http://172.16.1.1/CentOS63</url> </install> <rootpw>p@ssw0rd</rootpw> </os> <repositories> <repository name="Aeolus"> <url>http://172.16.1.101/aeolus/</url> </repository> </repositories> <packages> <package name="aeolus-audrey-agent"/> </packages> <description>CentOS63 Image Factory Template</description> <commands> <command name="Update to latest packages">yum -y update</command> </commands> </template> 13 Open Cloud Campus
  14. Aeolus Conductor システムテンプレートによるJEOSの作成 (2)  Aeolus Conductorのメニュー画面から、対象クラウド用のJEOSを作成します。 – 対象のクラウドに対して「ビルド」を実行するとAeolusサーバ上のKVMで仮想マシンを 起動してイメージを作成後、指定のクラウドで利用可能な形式に変換します。 – その後「Push」を実行すると対象のクラウドにイメージの配信を行います。 14 Open Cloud Campus
  15. Aeolus Conductor アプリケーション・ブループリントによるデプロイ (1)  「アプリケーション・ブループリント」では、起動するインスタンスと起動後の アプリケーション導入/設定手順を定義します。 – 起動に使用するJEOSイメージ、インスタンスサイズ、デプロイ時にユーザが指定するパ ラメータなどを指定します。 – アプリケーション導入/設定 アプリケーション・ブループリントの例 手順はスクリプトをベタ書 <?xml version="1.0"?> きします。(実際には、こ <deployable version="1.0" name="RHEL6.3 motd hack"> のスクリプトから、Puppet <description/> <assemblies> などのツールとの連携を行 <assembly name="RHEL6-3-with-audrey-agent" hwp="small-x86_64"> います。) <image id="c0d6f20f-6e7a-4835-b41e-7b16a8cdbe35"/> <services> <service name="config_motd"> <executable> <contents><![CDATA[#!/bin/bash echo "$AUDREY_VAR_config_motd_message" >> /etc/motd]]> </contents> </executable> <parameters> <parameter name="message"> <value>Hello, World!</value> </parameter> </parameters> </service> </services> </assembly> </assemblies> </deployable> 15 Open Cloud Campus
  16. Aeolus Conductor アプリケーション・ブループリントによるデプロイ (2)  Aeolus Conductorのメニュー画面から、アプリケーション・ブループリントを指 定して、デプロイを実施します。 – ユーザは、デプロイ先のクラウドを選択することが可能です。 16 Open Cloud Campus
  17. Aeolus Conductor アプリケーション・ブループリントとPuppet/Githubの連携  アプリケーション・ブループリントとPuppet/Githubによる環境構築を連携する ことも可能です。 – 下図のスクリプトをアプリケーション・ブループリントから実行すると、Puppetによる アプリケーションの導入・設定が実施されます。 GithubからPuppetマニフェストを取得・適用するスクリプトの例 # Setting up glusterfs using Puppet yum -y install http://mirror.us.leaseweb.net/epel/6/i386/epel- release-6-7.noarch.rpm yum -y install git yum -y install puppet mkdir -p /tmp/gittmp cd /tmp/gittmp git clone https://github.com/enakai00/gluster_puppet.git cd gluster_puppet git checkout $AUDREY_VAR_glusterd_gittag export FACTER_manifest_dir="/tmp/gittmp/gluster_puppet" export FACTER_data_device="/dev/xvdj" puppet main.pp – 詳細は、「Aeolus(アイオロス)でRHELonEC2を利用する(その3)」を参照 • http://bit.ly/RMFZae 17 Open Cloud Campus
  18. Aeolus Conductor Aeolus Conductorの考察  便利な点 – 複数環境の透過的利用 • 現実的なユースケースは今後の検討課題ではあるが、JEOSの作成からアプリケー ションのデプロイまでを複数環境で実施できるツールはそれほど多くない。 – JEOS方式によるカスタマイズの容易性 • IaaSクラウドの多くはオリジナルイメージのスクラッチ作成やカスタマイズが面倒。 Aeolusであれば、システムテンプレートからイメージを自動生成可能。 • デプロイ時に動的にアプリケーションをインストールするので、アプリケーションの バージョンアップに合せてイメージを再作成するなどの手間がかからない。  不便な点 – クラウド固有の機能が使えない • セキュリティグループ、EBSのアタッチなどクラウド固有の機能に未対応。 – 複数VMデプロイ時のワークフロー処理が不十分 • アプリケーション・ブループリントでは、「VM2の構成が完了してから、VM1の構成 を開始する」程度の依存関係しか扱えず、複雑なワークフロー処理ができない。 ⇒ 現実的なユースケースに合わせた機能拡張が今後の課題。 18 Open Cloud Campus
  19. オープンクラウド・キャンパス クラウド自動化の未来を 一緒に考えて行きましょう! 中井悦司 Twitter @enakai00
Advertisement