Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Personal Cloud Automation

3,343 views

Published on

Published in: Technology
  • Be the first to comment

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

×