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