Upload
hiroshi-toyama
View
2.649
Download
3
Embed Size (px)
Citation preview
株式会社イプロス外山 寛
VAGRANT
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】
Vagrant
2
自己紹介• 外山 寛
–株式会社イプロス–チーフエンジニア
• Github– @toyama0919– https://github.com/toyama0919/
• Twitter– @god_tongue_19
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】
Vagrant
3
vagrant provison1
vagrant package2
3
Vagrant 1.34
まとめ5
vagrant plugin
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】
Vagrant
4
VAGRANTの最大の長所は?
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】
Vagrant
5
インフラのコード化!
(Infrastructure As Code)
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】
Vagrant
6
インフラのコード化?
Vagrantfileはテキストファイル!テキストファイルであるということは履歴を管理できるということ。
Virtual BOXや VM Wareはイメージバイナリファイルだと履歴が管理できない。便利ではあるが変更内容を共有できない。本番では動いているが自分の環境では動かないとかはよくある話。
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】
Vagrant
7
本質的でない作業に時間を使わない。
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】
Vagrant
8
プロビジョン(provision)
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】
Vagrant
9
プロビジョン (provision)とは?
仮想マシンを起動した際に実行される一連の処理。サブコマンドの provision ,up ,reloadを実行した時に発動する。※ 1
※1 vagrant 1.3で仕様変更!
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】
Vagrant
10
プロビジョン (provision)の利点
ミドルウェアのインストールやサービスの起動、停止などを自動化できる。構築する仮想マシンが VirtualBoxでもEC2でも同じスクリプト、 Cookbookが使える。何回実行しても同じ結果になる。
→冪等性 (べきとうせい )
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】
Vagrant
11
プロビジョン (provision)
Chefや Chef-SoloVagrantfileの中で cookbookのパスや適用したいレシピを指定する。
ShellShellは外部ファイルではなくインラインで記述
※することも可能。 後述
Puppet
CFEngine
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】
Vagrant
12
# Vagrantfileにコマンドを直接記述config.vm.provision :shell, :inline => "echo foo > /vagrant/test”
# 実行する外部 Shellを指定config.vm.provision :shell, :path => "script/setup.sh"
Shellによるプロビジョン
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】
Vagrant
13
# 以下のいずれかでプロビジョンされる。vagrant {up,reload,provision}
# shellのみでプロビジョンvagrant up --provision-with shell
Shellによるプロビジョン2
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】
Vagrant
14
chefとは?
サーバ OSでのインストール・設定・各サービスの状態管理等、諸々のシステム構築や運用作業を自動化できるRuby製。オープンソースとして公開されている。ミドルウェアの状態を「 Cookbook」として管理する。
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】
Vagrant
15
# chef-soloを仮想マシン上で実行config.vm.provision :chef_solo do |chef| chef.cookbooks_path = [ "cookbooks", "site-cookbooks" ] chef.run_list = [ "recipe[mysql55]", "recipe[java]" ]end
# これでもよい。chef.add_recipe("java")chef.add_recipe(”mysql55")
chefによるプロビジョン
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】
Vagrant
16
Vagrant 本番環境Chef
理想形はこんな感じ
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】
Vagrant
17
POVIDER(プロバイダー )
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】
Vagrant
18
プロバイダー (provider)とは?
仮想マシンを作るエンジンの部分。仮想マシンの種別、と覚えれば良い。例を挙げると以下のとおり
VirtualBoxAWSVMware FusionKVM
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】
Vagrant
19
プラグイン
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】
Vagrant
20
プラグイン
Vagrantのコマンドを拡張できる。providerや vagrant内部もプラグインで出来ている。現在の vagrantのバージョンは 1.2系だが古いバージョンとプラグインの互換性がないこともあるので注意。特に 1.0と 1.1以上では大きく仕様が変更されており、 Vagrantfileの記述方法自体も変わっている。
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】
Vagrant
21
どんなプラグインがある?
aws
sahara
veewee
berkshelf
vagrant-vbguest
vagrant-omnibus
Etc…
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】
Vagrant
22
vagrant-aws plugin
Vagrantで aws上に EC2インスタンスを作成できる。VPCに対応している。最近 ElasticIPに対応した。リージョン、アベイラビリティゾーン、セキュリティグループ、タグ、インスタンスタイプなど細かな指定が可能。
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】
Vagrant
23
vagrant-aws plugin
Internal AWS
EC2
vagrant up
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】
Vagrant
24
vagrant upだけで
EC2インスタンスを生成!
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】
Vagrant
25
config.vm.provider :aws do |aws, override| aws.access_key_id = "YOUR KEY" aws.secret_access_key = "YOUR SECRET KEY" aws.keypair_name = "KEYPAIR NAME” aws.instance_type = "t1.micro” aws.region = "ap-northeast-1” aws.security_groups = [ 'quick-start-1' ] aws.ami = "ami-XXXXXXXXX” override.ssh.username = ”ec2-user" override.ssh.private_key_path = "PATH" end
vagrant-aws plugin の設定例
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】
Vagrant
26
# プラグインをインストール$ vagrant plugin install vagrant-aws
# EC2インスタンスを起動$ vagrant up –provider=aws
# EC2インスタンスを Terminate 1※$ vagrant destroy
※1 stop instanceはない様子。。。
vagrant-aws plugin の設定例
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】
Vagrant
27
Amazon Linuxの注意点
Amazon Linuxをローカル環境に構築することは基本できない。Chefの Cookbookが Amazon Linuxに対応していないことがたまにあり、自分の環境と同じプロビジョニングをするために amazon用の対応が必要な場合がある。Shell Scriptは基本同じものが使える。
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】
Vagrant
28
sahara plugin
仮想マシンを簡単にロールバックできるプラグイン。Vagrantのプラグインといえばこれ、というぐらい有名。残念ながら VirtualBoxのみ対応。
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】
Vagrant
29
# sandboxモードに入る$ vagrant sandbox on
# 何か作業$ ~
# 巻き戻す$ vagrant sandbox rollback
# 確定する。 (rollbackしたらここに戻る )$ vagrant sandbox commit
sahara plugin
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】
Vagrant
30
sahara plugin
sandbox off コミットしていなければもとに戻せる。残念ながら VirtualBoxのみ対応。
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】
Vagrant
31
自分の BOXを他人に公開したい。
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】
Vagrant
32
PACKAGE(パッケージ )
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】
Vagrant
33
パッケージング (package)
自分で修正した仮想マシンを共有できる。拡張子が .boxで保存する。Vagrantfileで BOXのロケーションを指定できる。作成する BOXは vagrantで使用されるのが前提なので、 vagrantユーザーがいなければいけない。
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】
Vagrant
34
# 作業ディレクトリに Vagrantfile# package.boxが作成される$ vagrant package
# 作った BOXを自分のマシンに追加$ vagrant box add my_box package.box
# BOXを s3にアップロードして共有$ s3cmd put package.box s3://BUCKET[/PREFIX]
packageの使い方
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】
Vagrant
35
イプロスでの使用例Internal S3
BASEBOX
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】
Vagrant
36
config.vm.box = ”my_box"
# 作成した BOXを s3にアップロードしておき、# その URLを指定する。 (httpでなくても可 )config.vm.box_url = "http://hoge.s3.amazonaws.com/develop/dev.box"
Vagrantfileの設定例
vagraut upだけでダウンロードが開始され、仮想マシンがローカルに展開される
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】
Vagrant
37
パッケージングの使い道としては
自分で作ったボックスを S3にアップロードし、各自が vagrant経由でローカルにマシンを展開する。ローカルに BOXが存在すれば 2度目以降はマシンをダウンロードしない。最低限の部分は BOX化する、で良いがミドルウェアやアプリをインストールしていく部分は provisioningで管理していくことが望ましい。
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】
Vagrant
38
パッケージングの注意点
BOXの場所はインターネットにつながる場所なら可能なので、認証情報をBOXに入れてしまう場合は注意が必要。 (リポジトリのパスワードとか )
開発で使う場合は S3に BOXを置くケースが多いと思うので、 Bucket Policyなどで縛るとよい。
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】
Vagrant
39
開発が活発なので仕様が大きく変わる。
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】
Vagrant
40
Vagrant1.3がリリース、変更点は
vagrant upで初回のみプロビジョニングが実行される。2 —回目以降は明示的に provisionとしないとプロビジョニングされない。vagrant reloadも同様。Mac OS Xの guestが対応したらしい。後はファイルの構成とか細かい話。
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】
Vagrant
41
まとめ
USEVAGRANT
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】
Vagrant
42
ご静聴ありがとうございました。