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

19
Ver1.0 2013/04/02 中井悦司 (Twitter @enakai00) オープンクラウド・キャンパス Aeolus Conductorによる 複数環境へのデプロイ自動化

description

 

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

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

Ver1.0 2013/04/02中井悦司 (Twitter @enakai00)

オープンクラウド・キャンパス

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

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

Open Cloud Campus2

Aeolus Conductor

自己紹介

好評発売中!

中井悦司(なかいえつじ)– Twitter @enakai00

日々の仕事– Senior Solution Architect and

Cloud Evangelist at Red Hat K.K.企業システムでオープンソースの活用を希望されるお客様を全力でご支援させていただきます。

昔とった杵柄– 素粒子論の研究(超弦理論とか)– 予備校講師(物理担当)– インフラエンジニア(Unix/Linux専門)

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

Open Cloud Campus3

Aeolus Conductor

Aeolus Conductorとは?

複数クラウドに対応したイメージ作成/アプリケーション環境構築の自動化ツール– クラウド管理の中でも「デプロイ機能」にフォーカスしたツール– Aeolus Conductorをアップストリームとする商用版が「Red Hat CloudForms 1.1」

「Aeolus(アイオロス)でRHELonEC2を利用する」 http://bit.ly/QzniL4

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

仮想マシン構築自動化の例

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

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

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

Open Cloud Campus6

Aeolus Conductor

「パーソナルクラウド」自動化における考察

便利な点– 設定ファイルの再利用性

• テキストファイルにすべての設定が記録されているので、設定変更が簡単で、少しづつ設定の異なる類似環境を何度でも再構築できる。

• Puppetのマニフェストがバージョン管理されているので、バージョン番号を指定するだけで、特定バージョンの設定が適用できる。

不便な点– 単一の物理サーバが前提

• 複数の物理サーバへのデプロイはできない。– 複数VMの依存関係が扱えない

• Puppetはサーバ間の依存関係を解決する機能がないので、「DBサーバとWebサーバを連携させる」ような設定はできない。

• 現状では、必要な際は、手続き型のスクリプトで連携処理を行なっている。(ので、Puppetの「宣言的記述」のメリットが半減してしまう。)

⇒ 本格的な自動化ツールでは、複数ノードへのデプロイと複数VMの依存関係の取り扱い  が必要。

Github

v1.0 v1.1

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

複数環境へのデプロイ自動化ツールAeolus Conductor

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

Open Cloud Campus8

Aeolus Conductor

複数クラウド/仮想化環境を適材適所で活用

システムテンプレートアプリケーション・ブループリント

パブリッククラウド 仮想化環境A 仮想化環境B

本番環境 開発・テスト環境

共通の定義ファイルから複数環境に同一のアプリケーション実行環境を構築。– システムテンプレート:JEOSの構成定義ファイル– アプリケーション・ブループリント:アプリケーション実行環境の構成定義ファイル

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

Open Cloud Campus9

Aeolus Conductor

Aeolus Conductorによるアプリケーションデプロイの流れ アプリケーションデプロイ時は、ConfigServerを介して構成情報を交換することで、複数

VMに依存する設定が可能です。– Ruby Facterでの取得情報を交換可能。ただし、ワークフロー処理は限定的。

仮想ネットワークの構成は対象外。仮想マシンは既存のデフォルトネットワークに接続します。

システムテンプレート

マシンイメージ(JEOS)

アプリケーションブループリント

指定のクラウドにJEOSイメージを作成

必要なサイズ/個数の仮想マシンを起動してアプリケーションの導入・設定を実施

ConfigServer

構成情報の交換

仮想マシン

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

Open Cloud Campus10

Aeolus Conductor

(参考)DeltacloudによるAPIの共通化

Deltacloud Libraryは、複数の仮想化基盤/クラウドを共通のREST API (Deltacloud API)で操作するためのライブラリ群

– Aeolus Conductorでは、複数環境への対応にDeltacloud Libraryを使用

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

Open Cloud Campus11

Aeolus Conductor

(参考)Deltacloud Driverの提供状況

http://deltacloud.apache.org/drivers.html#drivers

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

Aeolus Conductorの利用イメージ

Page 13: 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>

システムテンプレートの例

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

Open Cloud Campus14

Aeolus Conductor

システムテンプレートによるJEOSの作成 (2)

Aeolus Conductorのメニュー画面から、対象クラウド用のJEOSを作成します。– 対象のクラウドに対して「ビルド」を実行するとAeolusサーバ上のKVMで仮想マシンを起動してイメージを作成後、指定のクラウドで利用可能な形式に変換します。

–その後「Push」を実行すると対象のクラウドにイメージの配信を行います。

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

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などのツールとの連携を行います。)

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

Open Cloud Campus16

Aeolus Conductor

アプリケーション・ブループリントによるデプロイ (2)

Aeolus Conductorのメニュー画面から、アプリケーション・ブループリントを指定して、デプロイを実施します。

–ユーザは、デプロイ先のクラウドを選択することが可能です。

Page 17: 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マニフェストを取得・適用するスクリプトの例

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

Open Cloud Campus18

Aeolus Conductor

Aeolus Conductorの考察

便利な点– 複数環境の透過的利用

• 現実的なユースケースは今後の検討課題ではあるが、JEOSの作成からアプリケーションのデプロイまでを複数環境で実施できるツールはそれほど多くない。

– JEOS方式によるカスタマイズの容易性• IaaSクラウドの多くはオリジナルイメージのスクラッチ作成やカスタマイズが面倒。

Aeolusであれば、システムテンプレートからイメージを自動生成可能。• デプロイ時に動的にアプリケーションをインストールするので、アプリケーションの

バージョンアップに合せてイメージを再作成するなどの手間がかからない。

不便な点– クラウド固有の機能が使えない

• セキュリティグループ、EBSのアタッチなどクラウド固有の機能に未対応。– 複数VMデプロイ時のワークフロー処理が不十分

• アプリケーション・ブループリントでは、「VM2の構成が完了してから、VM1の構成を開始する」程度の依存関係しか扱えず、複雑なワークフロー処理ができない。

⇒ 現実的なユースケースに合わせた機能拡張が今後の課題。

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

中井悦司Twitter @enakai00

オープンクラウド・キャンパス

クラウド自動化の未来を一緒に考えて行きましょう!