勉強会:設定管理について

20
勉強会:設定管理について 2014/3/13 佐藤 1

Upload: wataru-sato

Post on 04-Jul-2015

283 views

Category:

Technology


4 download

DESCRIPTION

社内勉強会資料

TRANSCRIPT

Page 1: 勉強会:設定管理について

勉強会:設定管理について

2014/3/13

佐藤 航1

Page 2: 勉強会:設定管理について

アジェンダ

• はじめに• モチベーション• 設定管理とは?• 設定管理ツールが必要とされる背景• 何が嬉しいのか?• 誰が嬉しいのか?• 代表的な設定管理ツール比較• デモ• まとめ• 補足

2

Page 3: 勉強会:設定管理について

はじめに

• 設定管理のトレンドを紹介することが目的

• 代表的なツールの特徴を紹介

• 技術的な詳細には立ち入らない

3

Page 4: 勉強会:設定管理について

モチベーション

• Webサイト開発環境構築• サンプルコード実行環境構築

誰が何度やっても同じ環境を再現できること

OSOShttpdhttpd MySQLMySQL

PHPPHPWebAppWebApp

EclipseEclipse

CVSCVSMySQL-workbench

MySQL-workbench

OSOShttpdhttpd MySQLMySQL

PHPPHP

WebAppWebAppSymfonySymfony

4

Page 5: 勉強会:設定管理について

Configuration:設定管理とは?

BootstrappingOSのインストール

BootstrappingOSのインストール

Configurationミドルウェアの構築

Configurationミドルウェアの構築

Orchestrationアプリケーションの配置

Orchestrationアプリケーションの配置

http://mizzy.org/blog/2013/10/29/1/5

Page 6: 勉強会:設定管理について

Configuration:設定管理とは?

• ミドルウェアのインストール– DB(MySQL、 PostgreSQL…)、実行環境( PHP、 Ruby…)、Webサーバ、など

• 設定– OSの設定• サービス起動設定、アクセス権設定、、、

–ミドルウェアの設定• DB認証設定、 PHP設定、Webサーバ設定、、、

6

Page 7: 勉強会:設定管理について

設定管理がツール化した背景

• 仮想化技術の普及 (VM, IaaS, PaaS…)– マシンがソフトウェア化

• 開発ツール– ビルドツール( ant, Maven, Jenkinsなど)– 単体テストツール( JUnit, PHPUnitなど)

• バージョン管理システム (Git,SVN,CVSなど )– 直接アプリケーションを配置

• パッケージ管理システム (yum, apt-get,npm, gemなど )– ネットワーク越しのインストール– 複雑化な依存関係を解決

7

Page 8: 勉強会:設定管理について

設定管理がツール化した背景

• 従来– ハードウェア設置– OSインストール&設定– ミドルウェアインストール&設定

– アプリケーション配置– 利用開始

• IaaS/PaaS– ハードウェアは見えない

– OSイメージ取得– ミドルウェアインストール&設定

– アプリケーション配置– 利用開始

ツール化ツール化

設定手順書リハーサル、ダブルチェッ

ク徹夜、切戻し、作業報告書

設定手順書リハーサル、ダブルチェッ

ク徹夜、切戻し、作業報告書 8

Page 9: 勉強会:設定管理について

何が嬉しいのか?

• Configurationのコード化– 誰が何度実行しても結果が同じ– 構築する環境数と手間が比例しない– 本番一発勝負を避ける事ができる

Infrastructure as Code

9

Page 10: 勉強会:設定管理について

誰が嬉しいのか?

• PaaS事業者– 利用者が求める環境を人手を介さずに作成可能

• アプリケーション開発者– 開発、試験環境を全く同じ構成で作成可能– 開発メンバが途中で増えてもすぐに展開可能

• インフラエンジニア– 本番、ステージング、開発環境を全く同じ構成で作成可能

10

Page 11: 勉強会:設定管理について

代表的な設定管理ツール比較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: 勉強会:設定管理について

代表的な設定管理ツール比較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: 勉強会:設定管理について

代表的な設定管理ツール比較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: 勉強会:設定管理について

代表的な設定管理ツール比較Chefと Docker比較

Chef Docker

強み

• GUI環境を構築可能• C/Sモデルにより多数環境構築可能

• Windowsを Configuration可能

• 小さなフットプリント• 差分管理により高速に環境構築

• 構成がシンプル

弱み

• 構成が複雑• 設定ファイルの記法• プラグイン等の組み合わせ

• 開発途上(プロダクションでの利用非推奨)

• GUI環境構築に制限あり

14

Page 15: 勉強会:設定管理について

デモ

15

Page 16: 勉強会:設定管理について

まとめ

• 全部入りだが複雑な Chef

• 制限はあるがシンプルな Docker(開発途上)

• 技術的な変化が大きい分野なので、常に最新情報のチェックが欠かせない

16

Page 17: 勉強会:設定管理について

17

Page 18: 勉強会:設定管理について

補足

• VirtualBox–仮想マシン環境を提供するソフトウェアの一種–類似機能をもつものとして VMWare、 KVM、

Xenなどがある

18

Page 19: 勉強会:設定管理について

補足

• Vagrant–仮想環境のフロントエンドツール• VMをコマンドラインで制御するためのツール• VMの取得、生成、破棄、起動、停止、、、

–複数の仮想環境を抽象化• 同じインターフェイスで EC2と VirtualBoxを制御、みたいな

19

Page 20: 勉強会:設定管理について

補足

• Container–カーネルは共有しているが、インスタンスは独立

–仮想 OSが動作している

• Guest OS–カーネルから独立、当然インスタンスも独立–仮想 OSが動作している

20