aeolus conductorによる複数環境へのデプロイ自動化
DESCRIPTION
TRANSCRIPT
Ver1.0 2013/04/02中井悦司 (Twitter @enakai00)
オープンクラウド・キャンパス
Aeolus Conductorによる複数環境へのデプロイ自動化
Open Cloud Campus2
Aeolus Conductor
自己紹介
好評発売中!
中井悦司(なかいえつじ)– Twitter @enakai00
日々の仕事– Senior Solution Architect and
Cloud Evangelist at Red Hat K.K.企業システムでオープンソースの活用を希望されるお客様を全力でご支援させていただきます。
昔とった杵柄– 素粒子論の研究(超弦理論とか)– 予備校講師(物理担当)– インフラエンジニア(Unix/Linux専門)
Open Cloud Campus3
Aeolus Conductor
Aeolus Conductorとは?
複数クラウドに対応したイメージ作成/アプリケーション環境構築の自動化ツール– クラウド管理の中でも「デプロイ機能」にフォーカスしたツール– Aeolus Conductorをアップストリームとする商用版が「Red Hat CloudForms 1.1」
「Aeolus(アイオロス)でRHELonEC2を利用する」 http://bit.ly/QzniL4
仮想マシン構築自動化の例
Open Cloud Campus5
Aeolus Conductor
「パーソナルクラウド」における自動化の実例
図の①〜③を1つの設定ファイルを元に自動実行するスクリプトを作成して、「パーソナルクラウド」として活用
Red Hat Enterprise Linux 6x86_64サーバ
ApacheHTTP Server KVM
Github
VM
YUMリポジトリ
設定ファイルのバージョン管理
OS/アプリケーションパッケージ
libvirt
Kickstart
Git/Puppet
① VM作成
② OS/アプリ導入
③ アプリ導入/設定
VM構成情報(virt-installコマンドのパラメータ群)
OS構成情報(KickStartファイル)
アプリ設定情報(Puppet Manifest)
詳細は「アプリケーション環境構築の自動化をまじめに考えてみる(1)〜(4)」を参照http://bit.ly/SRfpwb http://bit.ly/O9xgAa http://bit.ly/Qij9Gx http://bit.ly/QB9POk
Open Cloud Campus6
Aeolus Conductor
「パーソナルクラウド」自動化における考察
便利な点– 設定ファイルの再利用性
• テキストファイルにすべての設定が記録されているので、設定変更が簡単で、少しづつ設定の異なる類似環境を何度でも再構築できる。
• Puppetのマニフェストがバージョン管理されているので、バージョン番号を指定するだけで、特定バージョンの設定が適用できる。
不便な点– 単一の物理サーバが前提
• 複数の物理サーバへのデプロイはできない。– 複数VMの依存関係が扱えない
• Puppetはサーバ間の依存関係を解決する機能がないので、「DBサーバとWebサーバを連携させる」ような設定はできない。
• 現状では、必要な際は、手続き型のスクリプトで連携処理を行なっている。(ので、Puppetの「宣言的記述」のメリットが半減してしまう。)
⇒ 本格的な自動化ツールでは、複数ノードへのデプロイと複数VMの依存関係の取り扱い が必要。
Github
v1.0 v1.1
複数環境へのデプロイ自動化ツールAeolus Conductor
Open Cloud Campus8
Aeolus Conductor
複数クラウド/仮想化環境を適材適所で活用
システムテンプレートアプリケーション・ブループリント
パブリッククラウド 仮想化環境A 仮想化環境B
本番環境 開発・テスト環境
共通の定義ファイルから複数環境に同一のアプリケーション実行環境を構築。– システムテンプレート:JEOSの構成定義ファイル– アプリケーション・ブループリント:アプリケーション実行環境の構成定義ファイル
Open Cloud Campus9
Aeolus Conductor
Aeolus Conductorによるアプリケーションデプロイの流れ アプリケーションデプロイ時は、ConfigServerを介して構成情報を交換することで、複数
VMに依存する設定が可能です。– Ruby Facterでの取得情報を交換可能。ただし、ワークフロー処理は限定的。
仮想ネットワークの構成は対象外。仮想マシンは既存のデフォルトネットワークに接続します。
システムテンプレート
マシンイメージ(JEOS)
アプリケーションブループリント
指定のクラウドにJEOSイメージを作成
必要なサイズ/個数の仮想マシンを起動してアプリケーションの導入・設定を実施
ConfigServer
構成情報の交換
仮想マシン
Open Cloud Campus10
Aeolus Conductor
(参考)DeltacloudによるAPIの共通化
Deltacloud Libraryは、複数の仮想化基盤/クラウドを共通のREST API (Deltacloud API)で操作するためのライブラリ群
– Aeolus Conductorでは、複数環境への対応にDeltacloud Libraryを使用
Open Cloud Campus11
Aeolus Conductor
(参考)Deltacloud Driverの提供状況
http://deltacloud.apache.org/drivers.html#drivers
Aeolus Conductorの利用イメージ
Open Cloud Campus13
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>
システムテンプレートの例
Open Cloud Campus14
Aeolus Conductor
システムテンプレートによるJEOSの作成 (2)
Aeolus Conductorのメニュー画面から、対象クラウド用のJEOSを作成します。– 対象のクラウドに対して「ビルド」を実行するとAeolusサーバ上のKVMで仮想マシンを起動してイメージを作成後、指定のクラウドで利用可能な形式に変換します。
–その後「Push」を実行すると対象のクラウドにイメージの配信を行います。
Open Cloud Campus15
Aeolus Conductor
アプリケーション・ブループリントによるデプロイ (1)
「アプリケーション・ブループリント」では、起動するインスタンスと起動後のアプリケーション導入/設定手順を定義します。
–起動に使用するJEOSイメージ、インスタンスサイズ、デプロイ時にユーザが指定するパラメータなどを指定します。
<?xml version="1.0"?><deployable version="1.0" name="RHEL6.3 motd hack"> <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>
アプリケーション・ブループリントの例– アプリケーション導入/設定手順はスクリプトをベタ書きします。(実際には、このスクリプトから、Puppetなどのツールとの連携を行います。)
Open Cloud Campus16
Aeolus Conductor
アプリケーション・ブループリントによるデプロイ (2)
Aeolus Conductorのメニュー画面から、アプリケーション・ブループリントを指定して、デプロイを実施します。
–ユーザは、デプロイ先のクラウドを選択することが可能です。
Open Cloud Campus17
Aeolus Conductor
アプリケーション・ブループリントとPuppet/Githubの連携
アプリケーション・ブループリントとPuppet/Githubによる環境構築を連携することも可能です。
–下図のスクリプトをアプリケーション・ブループリントから実行すると、Puppetによるアプリケーションの導入・設定が実施されます。
– 詳細は、「Aeolus(アイオロス)でRHELonEC2を利用する(その3)」を参照• http://bit.ly/RMFZae
# Setting up glusterfs using Puppetyum -y install http://mirror.us.leaseweb.net/epel/6/i386/epel-release-6-7.noarch.rpmyum -y install gityum -y install puppetmkdir -p /tmp/gittmpcd /tmp/gittmpgit clone https://github.com/enakai00/gluster_puppet.gitcd gluster_puppetgit checkout $AUDREY_VAR_glusterd_gittagexport FACTER_manifest_dir="/tmp/gittmp/gluster_puppet"export FACTER_data_device="/dev/xvdj"puppet main.pp
GithubからPuppetマニフェストを取得・適用するスクリプトの例
Open Cloud Campus18
Aeolus Conductor
Aeolus Conductorの考察
便利な点– 複数環境の透過的利用
• 現実的なユースケースは今後の検討課題ではあるが、JEOSの作成からアプリケーションのデプロイまでを複数環境で実施できるツールはそれほど多くない。
– JEOS方式によるカスタマイズの容易性• IaaSクラウドの多くはオリジナルイメージのスクラッチ作成やカスタマイズが面倒。
Aeolusであれば、システムテンプレートからイメージを自動生成可能。• デプロイ時に動的にアプリケーションをインストールするので、アプリケーションの
バージョンアップに合せてイメージを再作成するなどの手間がかからない。
不便な点– クラウド固有の機能が使えない
• セキュリティグループ、EBSのアタッチなどクラウド固有の機能に未対応。– 複数VMデプロイ時のワークフロー処理が不十分
• アプリケーション・ブループリントでは、「VM2の構成が完了してから、VM1の構成を開始する」程度の依存関係しか扱えず、複雑なワークフロー処理ができない。
⇒ 現実的なユースケースに合わせた機能拡張が今後の課題。
中井悦司Twitter @enakai00
オープンクラウド・キャンパス
クラウド自動化の未来を一緒に考えて行きましょう!