Personal Cloud Automation

3,096 views
3,003 views

Published on

Published in: Technology
0 Comments
8 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,096
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
52
Comments
0
Likes
8
Embeds 0
No embeds

No notes for slide

Personal Cloud Automation

  1. 1. オープンクラウド・キャンパスLinux KVMとKickStartとPuppetとGitHubで作るパーソナルクラウド Ver1.0 2012/12/16 中井悦司 (Twitter @enakai00)
  2. 2. クラウドが実現するソフト開発・運用の変革と自動化 自己紹介  中井悦司(なかいえつじ) – Twitter @enakai00  日々の仕事 – Senior Solution Architect and Cloud Evangelist at Red Hat K.K. 好評発売中 企業システムでオープンソースの活用を希望される お客様を全力でご支援させていただきます。  昔とった杵柄 – 素粒子論の研究(超弦理論とか) – 予備校講師(物理担当) – インフラエンジニア(Unix/Linux専門)2 Open Cloud Campus
  3. 3. クラウドが実現するソフト開発・運用の変革と自動化 最近やってること (1) 特にQuantum関係 http://www.slideshare.net/enakai/how-quantum-configures-virtual-networks-under-the-hood3 Open Cloud Campus
  4. 4. クラウドが実現するソフト開発・運用の変革と自動化 最近やってること (2) 自動化ツールの研究 http://www.slideshare.net/enakai/ss-152422294 Open Cloud Campus
  5. 5. クラウドが実現するソフト開発・運用の変革と自動化 Aeolus Conductor 「Aeolus(アイオロス)でRHELonEC2を利用する」 http://bit.ly/QzniL4  複数クラウドに対応したイメージ作成/アプリケーション環境構築の自動化ツール5 Open Cloud Campus
  6. 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. 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} --vnc7 Open Cloud Campus
  8. 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 %end8 Open Cloud Campus
  9. 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. 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.pp10 Open Cloud Campus
  11. 11. クラウドが実現するソフト開発・運用の変革と自動化 (参考)Githubのスクリーンショット リポジトリの公開URL 過去の変更履歴を 全て保存 特定の時点のコードを タグ名で指定11 Open Cloud Campus
  12. 12. クラウドが実現するソフト開発・運用の変革と自動化 「パーソナルクラウド」自動化における考察  便利な点 – 設定ファイルの再利用性 • テキストファイルにすべての設定が記録されているので、設定変更が簡単で、少しづ つ設定の異なる類似環境を何度でも再構築できる。 • Puppetのマニフェストがバージョン管理されているので、バージョン番号を指定す るだけで、特定バージョンの設定が適用できる。 Github  不便な点 – 単一の物理サーバが前提 • 複数の物理サーバへのデプロイはできない。 v1.0 v1.1 – 複数VMの依存関係が扱えない • Puppetはサーバ間の依存関係を解決する機能がないので、「DBサーバとWebサーバ を連携させる」ような設定はできない。 • 現状では、必要な際は、手続き型のスクリプトで連携処理を行なっている。(ので、 Puppetの「宣言的記述」のメリットが半減してしまう。) ⇒ 本格的な自動化ツールでは、複数ノードへのデプロイと複数VMの依存関係の取り扱い   が必要。12 Open Cloud Campus
  13. 13. オープンクラウド・キャンパスクラウドの自動化とソフトウェア開発の 未来を一緒に考えて行きましょう! 中井悦司 Twitter @enakai00

×