SlideShare a Scribd company logo
1 of 42
株式会社イプロス
外山 寛
VAGRANT
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
Vagrant
1
自己紹介
• 外山 寛
– 株式会社イプロス
– チーフエンジニア
• Github
– @toyama0919
– https://github.com/toyama0919/
• Twitter
– @god_tongue_19
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
Vagrant
2
vagrant provison1
vagrant package2
3
Vagrant 1.34
まとめ5
vagrant plugin
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
Vagrant
3
VAGRANTの最大
の長所は?
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
Vagrant
4
インフラの
コード化!
(Infrastructure As Code)
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
Vagrant
5
インフラのコード化?
Vagrantfileはテキストファイル!
テキストファイルであるということは履歴を管理
できるということ。
Virtual BOXやVM Wareはイメージ
バイナリファイルだと履歴が管理できない。
便利ではあるが変更内容を共有できない。
本番では動いているが自分の環境では動かないと
かはよくある話。
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
Vagrant
6
本質的でない作業に
時間を使わない。
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
Vagrant
7
プロビジョン
(provision)
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
Vagrant
8
プロビジョン(provision)とは?
仮想マシンを起動した際に実行される
一連の処理。
サブコマンドのprovision ,up ,reloadを
実行した時に発動する。※1
※1 vagrant 1.3で仕様変更!
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
Vagrant
9
プロビジョン(provision)の利点
ミドルウェアのインストールやサービ
スの起動、停止などを自動化できる。
構築する仮想マシンがVirtualBoxでも
EC2でも同じスクリプト、Cookbookが
使える。
何回実行しても同じ結果になる。
→冪等性(べきとうせい)
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
Vagrant
10
プロビジョン(provision)
ChefやChef-Solo
Vagrantfileの中でcookbookのパスや適用したいレ
シピを指定する。
Shell
Shellは外部ファイルではなくインラインで記述す
ることも可能。※後述
Puppet
CFEngine
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
Vagrant
11
# 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
12
# 以下のいずれかでプロビジョンされる。
vagrant {up,reload,provision}
# shellのみでプロビジョン
vagrant up --provision-with shell
Shellによるプロビジョン2
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
Vagrant
13
chefとは?
サーバOSでのインストール・設定・各
サービスの状態管理等、諸々のシステ
ム構築や運用作業を自動化できる
Ruby製。
オープンソースとして公開されている
。
ミドルウェアの状態を「Cookbook」と
して管理する。
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
Vagrant
14
# 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
15
Vagrant 本番環境Chef
理想形はこんな感じ
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
Vagrant
16
POVIDER
(プロバイダー)
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
Vagrant
17
プロバイダー(provider)とは?
仮想マシンを作るエンジンの部分。
仮想マシンの種別、と覚えれば良い。
例を挙げると以下のとおり
VirtualBox
AWS
VMware Fusion
KVM
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
Vagrant
18
プラグイン
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
Vagrant
19
プラグイン
Vagrantのコマンドを拡張できる。
providerやvagrant内部もプラグインで
出来ている。
現在のvagrantのバージョンは1.2系だ
が古いバージョンとプラグインの互換
性がないこともあるので注意。
特に1.0と1.1以上では大きく仕様が変
更されており、Vagrantfileの記述方法
自体も変わっている。
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
Vagrant
20
どんなプラグインがある?
aws
sahara
veewee
berkshelf
vagrant-vbguest
vagrant-omnibus
Etc…
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
Vagrant
21
vagrant-aws plugin
Vagrantでaws上にEC2インスタンスを
作成できる。
VPCに対応している。
最近ElasticIPに対応した。
リージョン、アベイラビリティゾーン
、セキュリティグループ、タグ、イン
スタンスタイプなど細かな指定が可能
。
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
Vagrant
22
vagrant-aws plugin
Internal AWS
EC2
vagrant up
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
Vagrant
23
vagrant up
だけで
EC2インスタンス
を生成!
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
Vagrant
24
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
25
# プラグインをインストール
$ 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
26
Amazon Linuxの注意点
Amazon Linuxをローカル環境に構築す
ることは基本できない。
ChefのCookbookがAmazon Linuxに対
応していないことがたまにあり、自分
の環境と同じプロビジョニングをする
ためにamazon用の対応が必要な場合が
ある。
Shell Scriptは基本同じものが使える。
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
Vagrant
27
sahara plugin
仮想マシンを簡単にロールバックでき
るプラグイン。
Vagrantのプラグインといえばこれ、と
いうぐらい有名。
残念ながらVirtualBoxのみ対応。
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
Vagrant
28
# sandboxモードに入る
$ vagrant sandbox on
# 何か作業
$ ~
# 巻き戻す
$ vagrant sandbox rollback
# 確定する。(rollbackしたらここに戻る)
$ vagrant sandbox commit
sahara plugin
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
Vagrant
29
sahara plugin
sandbox off コミットしていなければも
とに戻せる。
残念ながらVirtualBoxのみ対応。
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
Vagrant
30
自分のBOXを
他人に公開したい。
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
Vagrant
31
PACKAGE
(パッケージ)
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
Vagrant
32
パッケージング(package)
自分で修正した仮想マシンを共有でき
る。
拡張子が.boxで保存する。
VagrantfileでBOXのロケーションを指
定できる。
作成するBOXはvagrantで使用されるの
が前提なので、vagrantユーザーがいな
ければいけない。
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
Vagrant
33
# 作業ディレクトリに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
34
イプロスでの使用例
Internal S3
BASE
BOX
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
Vagrant
35
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
36
パッケージングの使い道としては
自分で作ったボックスをS3にアップロ
ードし、各自がvagrant経由でローカル
にマシンを展開する。
ローカルにBOXが存在すれば2度目以
降はマシンをダウンロードしない。
最低限の部分はBOX化する、で良いが
ミドルウェアやアプリをインストール
していく部分はprovisioningで管理して
いくことが望ましい。
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
Vagrant
37
パッケージングの注意点
BOXの場所はインターネットにつなが
る場所なら可能なので、認証情報を
BOXに入れてしまう場合は注意が必要
。(リポジトリのパスワードとか)
開発で使う場合はS3にBOXを置くケー
スが多いと思うので、Bucket Policyな
どで縛るとよい。
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
Vagrant
38
開発が活発なので
仕様が大きく変わる。
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
Vagrant
39
Vagrant1.3がリリース、変更点は
vagrant upで初回のみプロビジョニン
グが実行される。
2回目以降は明示的に—provisionとしな
いとプロビジョニングされない。
vagrant reloadも同様。
Mac OS Xのguestが対応したらしい。
後はファイルの構成とか細かい話。
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
Vagrant
40
まとめ
USE
VAGRANT
COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
Vagrant
41
ご静聴ありがとう
ございました。

More Related Content

Viewers also liked

リーダブルコード 1.0'
リーダブルコード 1.0'リーダブルコード 1.0'
リーダブルコード 1.0'Yamamura Takashi
 
Fluentd勉強会 (導入編 TreasureData活用)
Fluentd勉強会 (導入編 TreasureData活用)Fluentd勉強会 (導入編 TreasureData活用)
Fluentd勉強会 (導入編 TreasureData活用)takeuchi-tk
 
戦国時代を生きた「黒田官兵衛」とWeb時代を生きる「エンジニア」
戦国時代を生きた「黒田官兵衛」とWeb時代を生きる「エンジニア」戦国時代を生きた「黒田官兵衛」とWeb時代を生きる「エンジニア」
戦国時代を生きた「黒田官兵衛」とWeb時代を生きる「エンジニア」Junya Yamaguchi
 
インフラエンジニアLv1がWordPressまわりに色々してみた話
インフラエンジニアLv1がWordPressまわりに色々してみた話インフラエンジニアLv1がWordPressまわりに色々してみた話
インフラエンジニアLv1がWordPressまわりに色々してみた話Daisuke Kikuchi
 
Hubotを使ってbotをつくろう!
Hubotを使ってbotをつくろう!Hubotを使ってbotをつくろう!
Hubotを使ってbotをつくろう!Daisuke Kikuchi
 
CSS Nite LP38に行ってきた
CSS Nite LP38に行ってきたCSS Nite LP38に行ってきた
CSS Nite LP38に行ってきたYasuyuki Fujikawa
 
初心者Vimmerによるvim+rails開発
初心者Vimmerによるvim+rails開発初心者Vimmerによるvim+rails開発
初心者Vimmerによるvim+rails開発Daisuke Kikuchi
 
Vagrant勉強会アップロード用
Vagrant勉強会アップロード用Vagrant勉強会アップロード用
Vagrant勉強会アップロード用takeuchi-tk
 
Fluentd+elasticsearch+kibana(fluentd編)
Fluentd+elasticsearch+kibana(fluentd編)Fluentd+elasticsearch+kibana(fluentd編)
Fluentd+elasticsearch+kibana(fluentd編)Daisuke Kikuchi
 
Fluentdで本番環境を再現
Fluentdで本番環境を再現Fluentdで本番環境を再現
Fluentdで本番環境を再現Hiroshi Toyama
 
Markdownでドキュメント作成
Markdownでドキュメント作成Markdownでドキュメント作成
Markdownでドキュメント作成Yasuyuki Fujikawa
 
Presto As A Service - Treasure DataでのPresto運用事例
Presto As A Service - Treasure DataでのPresto運用事例Presto As A Service - Treasure DataでのPresto運用事例
Presto As A Service - Treasure DataでのPresto運用事例Taro L. Saito
 
Scala勉強会 初心者向けハンズオン前編
Scala勉強会 初心者向けハンズオン前編Scala勉強会 初心者向けハンズオン前編
Scala勉強会 初心者向けハンズオン前編takeuchi-tk
 
Re:dash Use Cases at iPROS
Re:dash Use Cases at iPROSRe:dash Use Cases at iPROS
Re:dash Use Cases at iPROSJumpei Yokota
 
爆速クエリエンジン”Presto”を使いたくなる話
爆速クエリエンジン”Presto”を使いたくなる話爆速クエリエンジン”Presto”を使いたくなる話
爆速クエリエンジン”Presto”を使いたくなる話Kentaro Yoshida
 

Viewers also liked (19)

リーダブルコード 1.0'
リーダブルコード 1.0'リーダブルコード 1.0'
リーダブルコード 1.0'
 
Fluentd勉強会 (導入編 TreasureData活用)
Fluentd勉強会 (導入編 TreasureData活用)Fluentd勉強会 (導入編 TreasureData活用)
Fluentd勉強会 (導入編 TreasureData活用)
 
Fluentd introduction at ipros
Fluentd introduction at iprosFluentd introduction at ipros
Fluentd introduction at ipros
 
戦国時代を生きた「黒田官兵衛」とWeb時代を生きる「エンジニア」
戦国時代を生きた「黒田官兵衛」とWeb時代を生きる「エンジニア」戦国時代を生きた「黒田官兵衛」とWeb時代を生きる「エンジニア」
戦国時代を生きた「黒田官兵衛」とWeb時代を生きる「エンジニア」
 
インフラエンジニアLv1がWordPressまわりに色々してみた話
インフラエンジニアLv1がWordPressまわりに色々してみた話インフラエンジニアLv1がWordPressまわりに色々してみた話
インフラエンジニアLv1がWordPressまわりに色々してみた話
 
Hubotを使ってbotをつくろう!
Hubotを使ってbotをつくろう!Hubotを使ってbotをつくろう!
Hubotを使ってbotをつくろう!
 
CSS Nite LP38に行ってきた
CSS Nite LP38に行ってきたCSS Nite LP38に行ってきた
CSS Nite LP38に行ってきた
 
MBaaS - Parse
MBaaS - ParseMBaaS - Parse
MBaaS - Parse
 
初心者Vimmerによるvim+rails開発
初心者Vimmerによるvim+rails開発初心者Vimmerによるvim+rails開発
初心者Vimmerによるvim+rails開発
 
Vagrant勉強会アップロード用
Vagrant勉強会アップロード用Vagrant勉強会アップロード用
Vagrant勉強会アップロード用
 
Fluentd+elasticsearch+kibana(fluentd編)
Fluentd+elasticsearch+kibana(fluentd編)Fluentd+elasticsearch+kibana(fluentd編)
Fluentd+elasticsearch+kibana(fluentd編)
 
Fluentdで本番環境を再現
Fluentdで本番環境を再現Fluentdで本番環境を再現
Fluentdで本番環境を再現
 
Enjoy the Ansible
Enjoy the AnsibleEnjoy the Ansible
Enjoy the Ansible
 
Markdownでドキュメント作成
Markdownでドキュメント作成Markdownでドキュメント作成
Markdownでドキュメント作成
 
Presto As A Service - Treasure DataでのPresto運用事例
Presto As A Service - Treasure DataでのPresto運用事例Presto As A Service - Treasure DataでのPresto運用事例
Presto As A Service - Treasure DataでのPresto運用事例
 
Scala勉強会 初心者向けハンズオン前編
Scala勉強会 初心者向けハンズオン前編Scala勉強会 初心者向けハンズオン前編
Scala勉強会 初心者向けハンズオン前編
 
Re:dash Use Cases at iPROS
Re:dash Use Cases at iPROSRe:dash Use Cases at iPROS
Re:dash Use Cases at iPROS
 
爆速クエリエンジン”Presto”を使いたくなる話
爆速クエリエンジン”Presto”を使いたくなる話爆速クエリエンジン”Presto”を使いたくなる話
爆速クエリエンジン”Presto”を使いたくなる話
 
re:dash is awesome
re:dash is awesomere:dash is awesome
re:dash is awesome
 

Similar to Vagrant

俺の俺による俺のための App Service Environment
俺の俺による俺のための App Service Environment俺の俺による俺のための App Service Environment
俺の俺による俺のための App Service EnvironmentSunao Tomita
 
[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js
[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js
[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.jsAmazon Web Services Japan
 
[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight
[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight
[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonightAmazon Web Services Japan
 
AWSのインフラはプログラミングコードで構築!AWS Cloud Development Kit 入門
AWSのインフラはプログラミングコードで構築!AWS Cloud Development Kit 入門AWSのインフラはプログラミングコードで構築!AWS Cloud Development Kit 入門
AWSのインフラはプログラミングコードで構築!AWS Cloud Development Kit 入門Amazon Web Services Japan
 
サーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話しサーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話しAkira Nagata
 
20150226_JAWS_UG札幌
20150226_JAWS_UG札幌20150226_JAWS_UG札幌
20150226_JAWS_UG札幌美佳 松井
 
"Up" with vagrant and docker
"Up" with vagrant and docker"Up" with vagrant and docker
"Up" with vagrant and dockerHiroshi Miura
 
Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1
Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1
Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1Yasuaki Matsuda
 
AutoScale×ゲーム ~運用効率化への取り組み~
AutoScale×ゲーム ~運用効率化への取り組み~AutoScale×ゲーム ~運用効率化への取り組み~
AutoScale×ゲーム ~運用効率化への取り組み~Ryo Fujiwara
 
SORACOM Harvest + AWS Lambdaでウィンドウ処理をやってみた
SORACOM Harvest + AWS Lambdaでウィンドウ処理をやってみたSORACOM Harvest + AWS Lambdaでウィンドウ処理をやってみた
SORACOM Harvest + AWS Lambdaでウィンドウ処理をやってみたHaruka Yamashita
 
Sakura no-yuube-20140327
Sakura no-yuube-20140327Sakura no-yuube-20140327
Sakura no-yuube-20140327Kunihiro TANAKA
 
Cloud9で試すAWS IoT Greengrass V2
Cloud9で試すAWS IoT Greengrass V2Cloud9で試すAWS IoT Greengrass V2
Cloud9で試すAWS IoT Greengrass V2Jun Ichikawa
 
「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)
「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)
「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)さくらインターネット株式会社
 
[AWSマイスターシリーズ]Amazon Simple Workflow Service (SWF)
[AWSマイスターシリーズ]Amazon Simple Workflow Service (SWF)[AWSマイスターシリーズ]Amazon Simple Workflow Service (SWF)
[AWSマイスターシリーズ]Amazon Simple Workflow Service (SWF)Amazon Web Services Japan
 
[網元] WordPress 高速化チューニング AMI
[網元] WordPress 高速化チューニング AMI [網元] WordPress 高速化チューニング AMI
[網元] WordPress 高速化チューニング AMI Hiromichi Koga
 
A2 SORACOM API使いこなしレシピ集 | SORACOM Technology Camp 2020
A2 SORACOM API使いこなしレシピ集 | SORACOM Technology Camp 2020A2 SORACOM API使いこなしレシピ集 | SORACOM Technology Camp 2020
A2 SORACOM API使いこなしレシピ集 | SORACOM Technology Camp 2020SORACOM,INC
 
20151030 オープンデータとセキュリティon aws
20151030 オープンデータとセキュリティon aws20151030 オープンデータとセキュリティon aws
20151030 オープンデータとセキュリティon awstakaoka susumu
 

Similar to Vagrant (20)

俺の俺による俺のための App Service Environment
俺の俺による俺のための App Service Environment俺の俺による俺のための App Service Environment
俺の俺による俺のための App Service Environment
 
[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js
[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js
[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js
 
ドリコムのインフラCI
ドリコムのインフラCIドリコムのインフラCI
ドリコムのインフラCI
 
[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight
[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight
[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight
 
Aws cli
Aws cliAws cli
Aws cli
 
AWSのインフラはプログラミングコードで構築!AWS Cloud Development Kit 入門
AWSのインフラはプログラミングコードで構築!AWS Cloud Development Kit 入門AWSのインフラはプログラミングコードで構築!AWS Cloud Development Kit 入門
AWSのインフラはプログラミングコードで構築!AWS Cloud Development Kit 入門
 
サーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話しサーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話し
 
20150226_JAWS_UG札幌
20150226_JAWS_UG札幌20150226_JAWS_UG札幌
20150226_JAWS_UG札幌
 
"Up" with vagrant and docker
"Up" with vagrant and docker"Up" with vagrant and docker
"Up" with vagrant and docker
 
Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1
Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1
Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1
 
AutoScale×ゲーム ~運用効率化への取り組み~
AutoScale×ゲーム ~運用効率化への取り組み~AutoScale×ゲーム ~運用効率化への取り組み~
AutoScale×ゲーム ~運用効率化への取り組み~
 
SORACOM Harvest + AWS Lambdaでウィンドウ処理をやってみた
SORACOM Harvest + AWS Lambdaでウィンドウ処理をやってみたSORACOM Harvest + AWS Lambdaでウィンドウ処理をやってみた
SORACOM Harvest + AWS Lambdaでウィンドウ処理をやってみた
 
Sakura no-yuube-20140327
Sakura no-yuube-20140327Sakura no-yuube-20140327
Sakura no-yuube-20140327
 
Cloud9で試すAWS IoT Greengrass V2
Cloud9で試すAWS IoT Greengrass V2Cloud9で試すAWS IoT Greengrass V2
Cloud9で試すAWS IoT Greengrass V2
 
「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)
「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)
「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)
 
[AWSマイスターシリーズ]Amazon Simple Workflow Service (SWF)
[AWSマイスターシリーズ]Amazon Simple Workflow Service (SWF)[AWSマイスターシリーズ]Amazon Simple Workflow Service (SWF)
[AWSマイスターシリーズ]Amazon Simple Workflow Service (SWF)
 
[網元] WordPress 高速化チューニング AMI
[網元] WordPress 高速化チューニング AMI [網元] WordPress 高速化チューニング AMI
[網元] WordPress 高速化チューニング AMI
 
A2 SORACOM API使いこなしレシピ集 | SORACOM Technology Camp 2020
A2 SORACOM API使いこなしレシピ集 | SORACOM Technology Camp 2020A2 SORACOM API使いこなしレシピ集 | SORACOM Technology Camp 2020
A2 SORACOM API使いこなしレシピ集 | SORACOM Technology Camp 2020
 
Paa s and oss
Paa s and ossPaa s and oss
Paa s and oss
 
20151030 オープンデータとセキュリティon aws
20151030 オープンデータとセキュリティon aws20151030 オープンデータとセキュリティon aws
20151030 オープンデータとセキュリティon aws
 

Vagrant

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