Upload
etsuji-nakai
View
2.662
Download
0
Embed Size (px)
DESCRIPTION
Citation preview
Ver1.0 2012/12/16中井悦司 (Twitter @enakai00)
オープンクラウド・キャンパス
Linux KVMとKickStartとPuppetとGitHubで作るパーソナルクラウド
Open Cloud Campus2
クラウドが実現するソフト開発・運用の変革と自動化
自己紹介
中井悦司(なかいえつじ)– Twitter @enakai00
日々の仕事– Senior Solution Architect and
Cloud Evangelist at Red Hat K.K.企業システムでオープンソースの活用を希望されるお客様を全力でご支援させていただきます。
昔とった杵柄– 素粒子論の研究(超弦理論とか)– 予備校講師(物理担当)– インフラエンジニア(Unix/Linux専門)
好評発売中
Open Cloud Campus3
クラウドが実現するソフト開発・運用の変革と自動化
最近やってること (1)
http://www.slideshare.net/enakai/how-quantum-configures-virtual-networks-under-the-hood
特にQuantum関係
Open Cloud Campus4
クラウドが実現するソフト開発・運用の変革と自動化
最近やってること (2)
自動化ツールの研究
http://www.slideshare.net/enakai/ss-15242229
Open Cloud Campus5
クラウドが実現するソフト開発・運用の変革と自動化
Aeolus Conductor
複数クラウドに対応したイメージ作成/アプリケーション環境構築の自動化ツール
「Aeolus(アイオロス)でRHELonEC2を利用する」 http://bit.ly/QzniL4
Open Cloud Campus6
クラウドが実現するソフト開発・運用の変革と自動化
「パーソナルクラウド」における自動化の実例
図の①〜③を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 Campus7
クラウドが実現するソフト開発・運用の変革と自動化
主な利用ツール (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
Open Cloud Campus8
クラウドが実現するソフト開発・運用の変革と自動化
主な利用ツール (2)
KickStart– RHELのインストーラ(Anaconda)
の一機能。GUIインストーラで入力する項目を事前に書き込んだテキストファイル(KickStartファイル)を利用して、RHELのインストールを全自動で行う。
– インストール後に指定のスクリプト(Postスクリプト)を実行することができる。
– ここでは、RHELを自動インストールした後に、Git/Puppetによるアプリケーション導入・設定をキックしている。
url --url=${url}lang ja_JP.UTF-8keyboard jp106network --onboot yes --device eth0 --bootproto static --ip ${ip} --netmask ${netmask} --gateway ${gateway} --nameserver ${nameserver} --hostname ${hostname}rootpw passw0rdtimezone --isUtc Asia/Tokyobootloader --location=mbrzerombrclearpart --initlabel --drives=vdapart /boot --fstype=ext4 --size=500part swap --size=1024part / --fstype=ext4 --grow --size=200reboot%packages@base@core@japanese-support%end%post --log=/root/anaconda-post.logset -xecho "${ip} ${hostname}" >> /etc/hosts%end
KickStartファイルの例
Open Cloud Campus9
クラウドが実現するソフト開発・運用の変革と自動化
主な利用ツール (3)
Puppet– OS/アプリケーションの構成管理
ツール。「あるべき状態」を宣言的に記述した「マニフェスト」に従って、アプリケーションの導入、設定ファイルの書き換えなどを自動実行する。
– 管理対象サーバが多数ある場合は、専用の「Puppetサーバ」からマニフェストの配布を行うクライアント・サーバモデルで使用する。
– ここでは、Puppetサーバは使わずに、Githubからマニフェストをダウンロードして、直接に適用する形で利用している。
class pgsql { service { 'postgresql': name => 'postgresql', ensure => running, enable => true, subscribe => Package['postgresql-server'], }
package { 'postgresql-server': name => 'postgresql-server', ensure => installed, }
file { '/var/lib/pgsql/data/postgresql.conf': owner => 'postgres', group => 'postgres', mode => '0600', source => "$FACTER_manifest_dir/dist/postgresql.conf", notify => Service['postgresql'], 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'], }・・・
Puppetマニフェストの例
Open Cloud Campus10
クラウドが実現するソフト開発・運用の変革と自動化
主な利用ツール (4)
Git– プログラムソースコードの分散バージョン管理システム。元々はLinux Kernelの開発用に
作成された。インターネット上にコードリポジトリを作成して無料で利用できるサービス「Github」の登場により、利用者が増加した。
– ここでは、Puppetの設定ファイル(マニフェスト)をGithubにおいて、KickstartのPostスクリプトから、指定バージョンのマニフェストのダウンロードと適用を実行している。
Githubからマニフェストを取得して適用するスクリプトの例
mkdir -p /tmp/gittmpcd /tmp/gittmpgit clone $GitRepositorycd $RepoNamegit checkout $ConfigTagexport FACTER_manifest_dir="/tmp/gittmp/$RepoName"puppet main.pp
Open Cloud Campus11
クラウドが実現するソフト開発・運用の変革と自動化
(参考)Githubのスクリーンショット
リポジトリの公開URL
特定の時点のコードをタグ名で指定
過去の変更履歴を全て保存
Open Cloud Campus12
クラウドが実現するソフト開発・運用の変革と自動化
「パーソナルクラウド」自動化における考察
便利な点– 設定ファイルの再利用性
• テキストファイルにすべての設定が記録されているので、設定変更が簡単で、少しづつ設定の異なる類似環境を何度でも再構築できる。
• Puppetのマニフェストがバージョン管理されているので、バージョン番号を指定するだけで、特定バージョンの設定が適用できる。
不便な点–単一の物理サーバが前提
• 複数の物理サーバへのデプロイはできない。– 複数VMの依存関係が扱えない
• Puppetはサーバ間の依存関係を解決する機能がないので、「DBサーバとWebサーバを連携させる」ような設定はできない。
• 現状では、必要な際は、手続き型のスクリプトで連携処理を行なっている。(ので、Puppetの「宣言的記述」のメリットが半減してしまう。)
⇒ 本格的な自動化ツールでは、複数ノードへのデプロイと複数VMの依存関係の取り扱い が必要。
Github
v1.0 v1.1
中井悦司Twitter @enakai00
オープンクラウド・キャンパス
クラウドの自動化とソフトウェア開発の未来を一緒に考えて行きましょう!