勉強会:設定管理について
DESCRIPTION
社内勉強会資料TRANSCRIPT
勉強会:設定管理について
2014/3/13
佐藤 航1
アジェンダ
• はじめに• モチベーション• 設定管理とは?• 設定管理ツールが必要とされる背景• 何が嬉しいのか?• 誰が嬉しいのか?• 代表的な設定管理ツール比較• デモ• まとめ• 補足
2
はじめに
• 設定管理のトレンドを紹介することが目的
• 代表的なツールの特徴を紹介
• 技術的な詳細には立ち入らない
3
モチベーション
• Webサイト開発環境構築• サンプルコード実行環境構築
誰が何度やっても同じ環境を再現できること
OSOShttpdhttpd MySQLMySQL
PHPPHPWebAppWebApp
EclipseEclipse
CVSCVSMySQL-workbench
MySQL-workbench
OSOShttpdhttpd MySQLMySQL
PHPPHP
WebAppWebAppSymfonySymfony
4
Configuration:設定管理とは?
BootstrappingOSのインストール
BootstrappingOSのインストール
Configurationミドルウェアの構築
Configurationミドルウェアの構築
Orchestrationアプリケーションの配置
Orchestrationアプリケーションの配置
http://mizzy.org/blog/2013/10/29/1/5
Configuration:設定管理とは?
• ミドルウェアのインストール– DB(MySQL、 PostgreSQL…)、実行環境( PHP、 Ruby…)、Webサーバ、など
• 設定– OSの設定• サービス起動設定、アクセス権設定、、、
–ミドルウェアの設定• DB認証設定、 PHP設定、Webサーバ設定、、、
6
設定管理がツール化した背景
• 仮想化技術の普及 (VM, IaaS, PaaS…)– マシンがソフトウェア化
• 開発ツール– ビルドツール( ant, Maven, Jenkinsなど)– 単体テストツール( JUnit, PHPUnitなど)
• バージョン管理システム (Git,SVN,CVSなど )– 直接アプリケーションを配置
• パッケージ管理システム (yum, apt-get,npm, gemなど )– ネットワーク越しのインストール– 複雑化な依存関係を解決
7
設定管理がツール化した背景
• 従来– ハードウェア設置– OSインストール&設定– ミドルウェアインストール&設定
– アプリケーション配置– 利用開始
• IaaS/PaaS– ハードウェアは見えない
– OSイメージ取得– ミドルウェアインストール&設定
– アプリケーション配置– 利用開始
ツール化ツール化
設定手順書リハーサル、ダブルチェッ
ク徹夜、切戻し、作業報告書
設定手順書リハーサル、ダブルチェッ
ク徹夜、切戻し、作業報告書 8
何が嬉しいのか?
• Configurationのコード化– 誰が何度実行しても結果が同じ– 構築する環境数と手間が比例しない– 本番一発勝負を避ける事ができる
Infrastructure as Code
9
誰が嬉しいのか?
• PaaS事業者– 利用者が求める環境を人手を介さずに作成可能
• アプリケーション開発者– 開発、試験環境を全く同じ構成で作成可能– 開発メンバが途中で増えてもすぐに展開可能
• インフラエンジニア– 本番、ステージング、開発環境を全く同じ構成で作成可能
10
代表的な設定管理ツール比較Puppet Chef Docker
開発元 Puppet Labs Opscode Docker Inc.初リリース 2005年 2009年 2013年言語 Ruby Ruby(c)、 Erlang(s) Go
DSL Ruby Ruby 独自アーキテクチャ
SAまたは C/S SAまたは C/S C/S( daemon+client)
課金モデル オープンソース:無償サポート付き:有償
オープンソース:無償機能追加版:有償クラウド版:有償
オープンソース:無償有償版?
できること たぶん Chefと一緒詳しくは調べていない
Guest OSのConfiguration
Container生殺与奪Configurationもできる
エコシステム モジュールレシピ再利用可能
レシピを継承、組合せて新たなレシピ作成可能
ベースとなるコンテナイメージ再利用可能
11
代表的な設定管理ツール比較Chef(スタンドアロンモデル)
TerminalTerminal VagrantVagrant VirtualBoxVirtualBoxGuest OSGuest OS
Host OS(作業マシン)
Chef-solo
Chef-solo MiddleMiddle
AppApp
Guest OSGuest OS
Chef-solo
Chef-solo MiddleMiddle
AppApp
TerminalTerminal VagrantVagrant EC2的ななにかEC2的ななにかInstanceInstance
AWS的ななにか
Chef-solo
Chef-solo MiddleMiddle
AppApp
InstanceInstance
Chef-solo
Chef-solo MiddleMiddle
AppApp
作業マシン
• Chefは Guest OSのConfigurationを担当
Chef Serverについては話がややこしくなるので別の機会に12
代表的な設定管理ツール比較Docker
TerminalTerminal dockerdocker ContainerContainer
Host OS(作業マシン)
MiddleMiddleAppApp
ContainerContainerMiddleMiddle
AppApp
TerminalTerminal dockerdocker ContainerContainer
AWS EC2 Instance的ななにか
MiddleMiddleAppApp
ContainerContainerMiddleMiddle
AppApp
作業マシン
• Docker=VirtualBox+Chef+Vagrant的な立ち位置(乱暴に言えば)
• 仮想環境上に仮想環境を構築している
13
代表的な設定管理ツール比較Chefと Docker比較
Chef Docker
強み
• GUI環境を構築可能• C/Sモデルにより多数環境構築可能
• Windowsを Configuration可能
• 小さなフットプリント• 差分管理により高速に環境構築
• 構成がシンプル
弱み
• 構成が複雑• 設定ファイルの記法• プラグイン等の組み合わせ
• 開発途上(プロダクションでの利用非推奨)
• GUI環境構築に制限あり
14
デモ
15
まとめ
• 全部入りだが複雑な Chef
• 制限はあるがシンプルな Docker(開発途上)
• 技術的な変化が大きい分野なので、常に最新情報のチェックが欠かせない
16
17
補足
• VirtualBox–仮想マシン環境を提供するソフトウェアの一種–類似機能をもつものとして VMWare、 KVM、
Xenなどがある
18
補足
• Vagrant–仮想環境のフロントエンドツール• VMをコマンドラインで制御するためのツール• VMの取得、生成、破棄、起動、停止、、、
–複数の仮想環境を抽象化• 同じインターフェイスで EC2と VirtualBoxを制御、みたいな
19
補足
• Container–カーネルは共有しているが、インスタンスは独立
–仮想 OSが動作している
• Guest OS–カーネルから独立、当然インスタンスも独立–仮想 OSが動作している
20