Weitere ähnliche Inhalte
Ähnlich wie Personal Cloud Automation (20)
Mehr von Etsuji Nakai (20)
Kürzlich hochgeladen (11)
Personal Cloud Automation
- 2. クラウドが実現するソフト開発・運用の変革と自動化
自己紹介
中井悦司(なかいえつじ)
– Twitter @enakai00
日々の仕事
– Senior Solution Architect and
Cloud Evangelist at Red Hat K.K. 好評発売中
企業システムでオープンソースの活用を希望される
お客様を全力でご支援させていただきます。
昔とった杵柄
– 素粒子論の研究(超弦理論とか)
– 予備校講師(物理担当)
– インフラエンジニア(Unix/Linux専門)
2 Open Cloud Campus
- 3. クラウドが実現するソフト開発・運用の変革と自動化
最近やってること (1)
特にQuantum関係
http://www.slideshare.net/enakai/how-quantum-configures-virtual-networks-under-the-hood
3 Open Cloud Campus
- 5. クラウドが実現するソフト開発・運用の変革と自動化
Aeolus Conductor 「Aeolus(アイオロス)でRHELonEC2を利用する」
http://bit.ly/QzniL4
複数クラウドに対応したイメージ作成/アプリケーション環境構築の自動化ツール
5 Open Cloud Campus
- 6. クラウドが実現するソフト開発・運用の変革と自動化
「パーソナルクラウド」における自動化の実例
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)」を参照
6 http://bit.ly/SRfpwb http://bit.ly/O9xgAa http://bit.ly/Qij9Gx http://bit.ly/QB9POk Open Cloud Campus
- 7. クラウドが実現するソフト開発・運用の変革と自動化
主な利用ツール (1)
libvirt
– Linux KVM, Xen, LXC などの仮想化環境をプログラムから操作するための標準ライブラ
リ(C言語、Pythonなどから利用可能)。
– VM、仮想ディスクイメージ、仮想ネットワークの作成・操作が可能。
– ここでは、libvirtを利用したコマンドvirt-installを使って、VMの自動作成を行なってい
る。
virt-installのコマンドオプションの例
# virt-install
--name ${vmname}
--vcpus ${vcpus}
--ram ${ram}
--disk path=${diskpath},size=${disksize},sparse=false
--network ${network}
--os-variant ${os-variant}
--location ${url}
--vnc
7 Open Cloud Campus
- 8. クラウドが実現するソフト開発・運用の変革と自動化
主な利用ツール (2)
KickStart KickStartファイルの例
– RHELのインストーラ(Anaconda) url --url=${url}
の一機能。GUIインストーラで入力す lang ja_JP.UTF-8
る項目を事前に書き込んだテキスト keyboard jp106
network --onboot yes --device eth0 --bootproto
ファイル(KickStartファイル)を利 static --ip ${ip} --netmask ${netmask}
用して、RHELのインストールを全自 --gateway ${gateway} --nameserver ${nameserver}
動で行う。 --hostname ${hostname}
rootpw passw0rd
– インストール後に指定のスクリプト timezone --isUtc Asia/Tokyo
bootloader --location=mbr
(Postスクリプト)を実行すること
zerombr
ができる。 clearpart --initlabel --drives=vda
– ここでは、RHELを自動インストール part /boot --fstype=ext4 --size=500
part swap --size=1024
した後に、Git/Puppetによるアプリ part / --fstype=ext4 --grow --size=200
ケーション導入・設定をキックしてい reboot
%packages
る。
@base
@core
@japanese-support
%end
%post --log=/root/anaconda-post.log
set -x
echo "${ip} ${hostname}" >> /etc/hosts
%end
8 Open Cloud Campus
- 9. クラウドが実現するソフト開発・運用の変革と自動化
主な利用ツール (3)
Puppetマニフェストの例
Puppet
class pgsql {
– OS/アプリケーションの構成管理 service { 'postgresql':
ツール。「あるべき状態」を宣言的 name
ensure
=> 'postgresql',
=> running,
に記述した「マニフェスト」に従っ enable => true,
subscribe => Package['postgresql-server'],
て、アプリケーションの導入、設定 }
ファイルの書き換えなどを自動実行 package { 'postgresql-server':
する。 name => 'postgresql-server',
ensure => installed,
– 管理対象サーバが多数ある場合は、 }
専用の「Puppetサーバ」からマニ file { '/var/lib/pgsql/data/postgresql.conf':
フェストの配布を行うクライアン owner => 'postgres',
group => 'postgres',
ト・サーバモデルで使用する。 mode => '0600',
source => "$FACTER_manifest_dir/dist/postgresql.conf",
– ここでは、Puppetサーバは使わず notify => Service['postgresql'],
に、Githubからマニフェストをダ }
require => Exec['initdb'],
ウンロードして、直接に適用する形
exec { 'initdb':
で利用している。 path => '/sbin',
command => 'service postgresql initdb',
logoutput => true,
creates => '/var/lib/pgsql/data/PG_VERSION',
before => Service['postgresql'],
require => Package['postgresql-server'],
notify => Exec['init_pw'],
}
・・・
9 Open Cloud Campus
- 10. クラウドが実現するソフト開発・運用の変革と自動化
主な利用ツール (4)
Git
– プログラムソースコードの分散バージョン管理システム。元々はLinux Kernelの開発用に
作成された。インターネット上にコードリポジトリを作成して無料で利用できるサービ
ス「Github」の登場により、利用者が増加した。
– ここでは、Puppetの設定ファイル(マニフェスト)をGithubにおいて、Kickstartの
Postスクリプトから、指定バージョンのマニフェストのダウンロードと適用を実行して
いる。
Githubからマニフェストを取得して適用するスクリプトの例
mkdir -p /tmp/gittmp
cd /tmp/gittmp
git clone $GitRepository
cd $RepoName
git checkout $ConfigTag
export FACTER_manifest_dir="/tmp/gittmp/$RepoName"
puppet main.pp
10 Open Cloud Campus
- 12. クラウドが実現するソフト開発・運用の変革と自動化
「パーソナルクラウド」自動化における考察
便利な点
– 設定ファイルの再利用性
• テキストファイルにすべての設定が記録されているので、設定変更が簡単で、少しづ
つ設定の異なる類似環境を何度でも再構築できる。
• Puppetのマニフェストがバージョン管理されているので、バージョン番号を指定す
るだけで、特定バージョンの設定が適用できる。 Github
不便な点
– 単一の物理サーバが前提
• 複数の物理サーバへのデプロイはできない。 v1.0 v1.1
– 複数VMの依存関係が扱えない
• Puppetはサーバ間の依存関係を解決する機能がないので、「DBサーバとWebサーバ
を連携させる」ような設定はできない。
• 現状では、必要な際は、手続き型のスクリプトで連携処理を行なっている。(ので、
Puppetの「宣言的記述」のメリットが半減してしまう。)
⇒ 本格的な自動化ツールでは、複数ノードへのデプロイと複数VMの依存関係の取り扱い
が必要。
12 Open Cloud Campus