仮想マシンざっくり解説と実践vagrant | staticpress × s3 × vagrant 勉強会

67
仮想マシンざっくり 解説と実践Vagrant 2013.10.13 StaticPress × S3 × Vagrant 勉強会 #公開版 @sawanoboly(HiganWorks LLC, Opsrock) Sunday, October 13, 13

Upload: yukihiko-sawanobori

Post on 07-Nov-2014

4.296 views

Category:

Technology


0 download

DESCRIPTION

StaticPress × S3 × Vagrant 勉強会の発表資料です

TRANSCRIPT

Page 1: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

仮想マシンざっくり解説と実践Vagrant

2013.10.13StaticPress × S3 × Vagrant 勉強会

#公開版@sawanoboly(HiganWorks LLC, Opsrock)

Sunday, October 13, 13

Page 2: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

HiganWorks, OpsRockについて

2

• http://opsrock.in 共同開発・運営

• AWS OpsWorksとChef、インフラのテストを取り扱うソリューションを提供

• アプリケーションのためのプラットフォーム構築/運用自動化をテーマに活動

Sunday, October 13, 13

Page 3: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

私とWordPressのインフラ• VPSで自分のWordPressブログ

(2007-2011ごろ)

• Parallels Pleskベースサービスの開発

• 簡単インストールのプラットフォーム

• PHP-Ninja

• Joyent ベースのサービス

• 自動構築周辺技術を担当

3Sunday, October 13, 13

Page 4: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

内容• Vagrant概要

• 仮想環境・仮想マシンをざっくり説明

• Vagrantと仮想環境プロバイダ

• Vagrantのライフサイクル

• VagrantのプロビジョニングとVMの再利用

• Vagrant x StaticPressからの色々

4Sunday, October 13, 13

Page 5: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

Vagrant

Sunday, October 13, 13

Page 6: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

Vagrant概要• べーぐらんと

• 仮想環境、仮想マシンプロバイダのフロントエンド

• プロビジョニング機能でサーバの初期構築

• プラグインで拡張

• スナップショット

• 仮想環境プロバイダの追加

• 私はOpscode Chefのテストに利用

6

VirtualBox?Sunday, October 13, 13

Page 7: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

Vagrant概要• べーぐらんと

• 仮想環境、仮想マシンプロバイダのフロントエンド

• プロビジョニング機能でサーバの初期構築

• プラグインで拡張

• スナップショット

• 仮想環境プロバイダの追加

• 私はOpscode Chefのテストに利用

6

VirtualBox?Sunday, October 13, 13

Page 8: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

仮想環境仮想マシンをざっくり説明

Sunday, October 13, 13

Page 9: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

アプリケーション、OS、コンピュータ

8Sunday, October 13, 13

Page 10: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

アプリケーションはOS上で動く

9

WordPressなどWordPressなどWordPressなどhttpd

(apache, nginx)php runtime MySQL DB

OSOSOS

Sunday, October 13, 13

Page 11: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

OSより下のレイヤ

10

OSOSOSOS

BIOS/UEFI(この層は以降ややこしいので省略)

BIOS/UEFI(この層は以降ややこしいので省略)

BIOS/UEFI(この層は以降ややこしいので省略)

BIOS/UEFI(この層は以降ややこしいので省略)

CPU メモリ(RAM)

Disk その他もろもろ

Sunday, October 13, 13

Page 12: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

OSより下のレイヤ

10

OSOSOSOS

BIOS/UEFI(この層は以降ややこしいので省略)

BIOS/UEFI(この層は以降ややこしいので省略)

BIOS/UEFI(この層は以降ややこしいので省略)

BIOS/UEFI(この層は以降ややこしいので省略)

CPU メモリ(RAM)

Disk その他もろもろ

Sunday, October 13, 13

Page 13: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

OSより下のレイヤ

10

OSOSOSOS

BIOS/UEFI(この層は以降ややこしいので省略)

BIOS/UEFI(この層は以降ややこしいので省略)

BIOS/UEFI(この層は以降ややこしいので省略)

BIOS/UEFI(この層は以降ややこしいので省略)

CPU メモリ(RAM)

Disk その他もろもろ

仮想環境/マシンが取り扱う領域はこのへんです

Sunday, October 13, 13

Page 14: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

アプリケーションとOS

11Sunday, October 13, 13

Page 15: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

アプリケーションとOS

11

1.ちょっと計算お願い

Sunday, October 13, 13

Page 16: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

アプリケーションとOS

11

1.ちょっと計算お願い

2.CPUにやってもらうわ

Sunday, October 13, 13

Page 17: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

アプリケーションとOS

11

1.ちょっと計算お願い

2.CPUにやってもらうわ 3.

計算しますわ

Sunday, October 13, 13

Page 18: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

アプリケーションとOS

11

1.ちょっと計算お願い

2.CPUにやってもらうわ 3.

計算しますわ

4.できました

Sunday, October 13, 13

Page 19: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

アプリケーションとOS

11

1.ちょっと計算お願い

2.CPUにやってもらうわ

5.ほなPHPにかえすわ

3.計算しますわ

4.できました

Sunday, October 13, 13

Page 20: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

アプリケーションとOS

11

1.ちょっと計算お願い

2.CPUにやってもらうわ

5.ほなPHPにかえすわ

6.サンキュー

3.計算しますわ

4.できました

Sunday, October 13, 13

Page 21: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

アプリケーションとOS

11

1.ちょっと計算お願い

2.CPUにやってもらうわ

5.ほなPHPにかえすわ

6.サンキュー

3.計算しますわ

4.できました

コイツを仮想化

Sunday, October 13, 13

Page 22: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

CPUなど、ハードウェアを仮想化する

12Sunday, October 13, 13

Page 23: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

CPUなど、ハードウェアを仮想化する

• ある鳥が鴨のように見え、鴨のように泳ぎ、鴨のように鳴くならば、それはたぶん鴨である- Wikipedia: ダック・テストより

12Sunday, October 13, 13

Page 24: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

CPUなど、ハードウェアを仮想化する

• ある鳥が鴨のように見え、鴨のように泳ぎ、鴨のように鳴くならば、それはたぶん鴨である- Wikipedia: ダック・テストより

• OSから見てCPUとして動いてくれれば、結局なんでもよい

12Sunday, October 13, 13

Page 25: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

CPUなど、ハードウェアを仮想化する

• ある鳥が鴨のように見え、鴨のように泳ぎ、鴨のように鳴くならば、それはたぶん鴨である- Wikipedia: ダック・テストより

• OSから見てCPUとして動いてくれれば、結局なんでもよい

• OSが動けばアプリも動く

12Sunday, October 13, 13

Page 26: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

仮想環境で動くOS

13

VirtualBoxなど仮想環境プロバイダ

Sunday, October 13, 13

Page 27: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

仮想環境で動くOS

13

VirtualBoxなど仮想環境プロバイダ

1.計算したいんだけどCPUはどこだろ?

Sunday, October 13, 13

Page 28: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

仮想環境で動くOS

13

VirtualBoxなど仮想環境プロバイダ

1.計算したいんだけどCPUはどこだろ?

仮想CPU

Sunday, October 13, 13

Page 29: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

仮想環境で動くOS

13

VirtualBoxなど仮想環境プロバイダ

1.計算したいんだけどCPUはどこだろ?

仮想CPU

2.OSさん、俺俺、俺だよ

Sunday, October 13, 13

Page 30: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

仮想環境で動くOS

13

VirtualBoxなど仮想環境プロバイダ

1.計算したいんだけどCPUはどこだろ?

仮想CPU

2.OSさん、俺俺、俺だよ

3.あ、もしかしてCPU?

Sunday, October 13, 13

Page 31: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

仮想環境で動くOS

13

VirtualBoxなど仮想環境プロバイダ

1.計算したいんだけどCPUはどこだろ?

仮想CPU

2.OSさん、俺俺、俺だよ

3.あ、もしかしてCPU?

4.そうそう、それそれ!CPUだよ!

Sunday, October 13, 13

Page 32: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

仮想環境=OSに対する組織的な偽装

14

仮想マシン上のOS仮想マシン上のOS仮想マシン上のOS仮想マシン上のOS

仮想環境プロバイダ仮想環境プロバイダ仮想環境プロバイダ仮想環境プロバイダ

親OS親OS親OS親OS

仮想CPU

仮想メモリ

仮想Disk

仮想その他

?

Sunday, October 13, 13

Page 33: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

懐かしいこんなのも仮想マシン

15

※画像は合成です

Sunday, October 13, 13

Page 34: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

仮想環境基礎の補足• 全部仮想なので基本的にパフォーマンスは落

ちます

• といっても仮想化前提で色々と改善されています

• CPUなどは仮想化サポート機能付き

• 近頃はOSは自分が仮想環境にいるか判別してそれなりに最適化して動きます

• その他、サーバーサイドでは仮想化必須のため、もっと様々な技術があります

16Sunday, October 13, 13

Page 35: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

Vagrantと仮想環境プロバイダ

17Sunday, October 13, 13

Page 36: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

• 仮想環境、仮想マシンプロバイダのフロントエンド(再掲)

Vagrantと仮想環境プロバイダ

17Sunday, October 13, 13

Page 37: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

• 仮想環境、仮想マシンプロバイダのフロントエンド(再掲)

• APIをもっており、仮想のサーバを起動できるものなら... (WPとブラウザのような関係)

Vagrantと仮想環境プロバイダ

17Sunday, October 13, 13

Page 38: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

• 仮想環境、仮想マシンプロバイダのフロントエンド(再掲)

• APIをもっており、仮想のサーバを起動できるものなら... (WPとブラウザのような関係)

Vagrantと仮想環境プロバイダ

17Sunday, October 13, 13

Page 39: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

• 仮想環境、仮想マシンプロバイダのフロントエンド(再掲)

• APIをもっており、仮想のサーバを起動できるものなら... (WPとブラウザのような関係)

Vagrantと仮想環境プロバイダ

17Sunday, October 13, 13

Page 40: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

• 仮想環境、仮想マシンプロバイダのフロントエンド(再掲)

• APIをもっており、仮想のサーバを起動できるものなら... (WPとブラウザのような関係)

Vagrantと仮想環境プロバイダ

17Sunday, October 13, 13

Page 41: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

Vagrantはプロバイダを選択可能

18Sunday, October 13, 13

Page 42: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

Vagrantはプロバイダを選択可能

• 抽象化しているのでpluginを書けば何でもOK

18Sunday, October 13, 13

Page 43: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

Vagrantはプロバイダを選択可能

• 抽象化しているのでpluginを書けば何でもOK

• 基本的なライフサイクル(起動・プロビジョン・停止)は共通、複数の環境で開発用・テスト用のVMを管理することができる

18Sunday, October 13, 13

Page 44: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

Vagrantはプロバイダを選択可能

• 抽象化しているのでpluginを書けば何でもOK

• 基本的なライフサイクル(起動・プロビジョン・停止)は共通、複数の環境で開発用・テスト用のVMを管理することができる

• 特定プロバイダの持つ便利機能もそれなりに対応

18Sunday, October 13, 13

Page 45: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

Vagrantはプロバイダを選択可能

• 抽象化しているのでpluginを書けば何でもOK

• 基本的なライフサイクル(起動・プロビジョン・停止)は共通、複数の環境で開発用・テスト用のVMを管理することができる

• 特定プロバイダの持つ便利機能もそれなりに対応

• VirtualBox, Vmwareなどローカル環境=> ファイル共有、スナップショット!

18Sunday, October 13, 13

Page 46: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

Vagrantはプロバイダを選択可能

• 抽象化しているのでpluginを書けば何でもOK

• 基本的なライフサイクル(起動・プロビジョン・停止)は共通、複数の環境で開発用・テスト用のVMを管理することができる

• 特定プロバイダの持つ便利機能もそれなりに対応

• VirtualBox, Vmwareなどローカル環境=> ファイル共有、スナップショット!

• AWSなどクラウド=> リージョン指定、タグ管理など※EC2とはrsyncで共有フォルダ風機能対応も

18Sunday, October 13, 13

Page 47: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

Vagrantの基本ライフサイクル

19

コマンド 説明 / 状態

up 仮想マシン起動

provision 任意の方法でサーバ構築

suspend/resume 一時停止/再開

reload 再起動

halt 停止

destroy 仮想マシン破棄

Sunday, October 13, 13

Page 48: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

VagrantのプロビジョニングとVMの再利用

※ここからしばらくVirtualBox使用のローカル環境前提で話します※VM = VirtualMachine = 仮想マシン

Sunday, October 13, 13

Page 49: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

ご注意:Vagrantのインストールについて• 公式サイトのパッケージを使いましょう

• プロダクトはRubyGemですが、依存やらの解消のためそうなってます

• ダメ: gem install vagrant

• Windows, MacOS,Linux系(Redhat,Debian) などで動作OK

21Sunday, October 13, 13

Page 50: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

サーバの構築方法は選択可能• shell

• Ansible

• Chef(Solo/Client)

• Puppet(Apply/Agent)

• これらは`provision`実行時のことなので、普通のVMとして使い続けてももちろんOK

22Sunday, October 13, 13

Page 51: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

お勧めのプロビジョニングは?• 最初はShell

• 手っ取り早い

• 昔は`vagrant up`の度実行されるのがデフォルトで危なかった

• いまは明示的にプロビジョニングするか指定できる

• Box(VMイメージ)の再利用や共有程度ならShellでOK

• “構築手順”自体の再利用性・冪等性を求めるならShellでなく、Ansible, Chef, Puppetを学ぼう

23Sunday, October 13, 13

Page 52: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

VMを開発者で共有する• 仮想Disk=ただのファイルなので、使い回せば

同じテーマの開発者同士で設定済みのサーバを共有

• Provisionにまとめておけば、Vagrantfileの共有・更新だけでOK

• Provision, Destroyの繰り返しが簡単、VMの作りこみもしやすい

• さて、VM上でプログラムの開発をする場合は?

24Sunday, October 13, 13

Page 53: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

SandBox(saharaプラグイン)で何度でもやり直す

• VM内の開発、WordPressプラグインやテーマから、StaticPress用の記事も含みます

• SandBoxモードを有効にすると、任意の時点でVMのスナップショットを取得&そのスナップショットに戻すことが可能

• WordPressのアップデートや、開発中のプラグイン等の挙動を簡単に試し、以前の状態に戻すことができます

25Sunday, October 13, 13

Page 54: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

そもそもスナップショットをよく知らない方向けに

26Sunday, October 13, 13

Page 55: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

そもそもスナップショットをよく知らない方向けに

• セーブして、やられたらリセットしてロードできるっちゅうことです

26Sunday, October 13, 13

Page 56: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

そもそもスナップショットをよく知らない方向けに

• セーブして、やられたらリセットしてロードできるっちゅうことです

26Sunday, October 13, 13

Page 57: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

Vagrant x StaticPressからの色々

Vagrant上のWordPressからStaticPress経由でできそうなこと

※ StaticPress-S3は紹介済みなのでその他

Sunday, October 13, 13

Page 58: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

まずはGitリポジトリ• ロールバック・フォワードやバックアップ、

履歴管理のため、Gitへ

• VM上でもよし

• 共有フォルダ機能で親OS側に置いてもよし

• Gitにすればなんでもありへ

28Sunday, October 13, 13

Page 59: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

1.普通のレンサバへ• FTPなりで更新、git hookでアップ自動化も

• そもそもPHP実行しないのでそんなに重くならないかも

• 価格固定

• プレビュー,ロールバックが手元で確認OK

29Sunday, October 13, 13

Page 60: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

2.DropBoxへ• Public公開機能を

• Dropboxにそのまま出力で同期いらず

• なにかしらリバースプロキシが必要

• 転送量制限

30

Cloud Front

Sunday, October 13, 13

Page 61: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

3.herokuへ• Rubyでちょっと書けば静的ファイルの配信

可能

• 維持費無料

31Sunday, October 13, 13

Page 62: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

4.AWS OpsWorksへ(1/3)• 実はただの静的ファイル配信インスタンスに

対応

• 不必要なほど色々可能

32Sunday, October 13, 13

Page 63: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

• インスタンスはELB標準対応

• AutoScaleでインスタンス増減

4.AWS OpsWorksへ(2/3)

33Sunday, October 13, 13

Page 64: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

• 勝手にCloudWatch開始• yes,expensive

4.AWS OpsWorksへ(3/3)

34

Cloud Watch

Sunday, October 13, 13

Page 65: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

色々考えてみましたがS3で十分

Sunday, October 13, 13

Page 66: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

最後に:Vagrantリファレンス

36

こういうのもでてますウォークスルーに丁度良い内容

http://docs.vagrantup.com/v2/

Sunday, October 13, 13

Page 67: 仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会

Sunday, October 13, 13