vagrant - 最近流行ってるらしいけど何者?
DESCRIPTION
社内の勉強会で Vagrant について発表した資料です。TRANSCRIPT
![Page 1: Vagrant - 最近流行ってるらしいけど何者?](https://reader034.vdocuments.mx/reader034/viewer/2022052412/5589ea8ed8b42abd378b476b/html5/thumbnails/1.jpg)
Vagrant 最近流行ってるらしいけど何者?
![Page 2: Vagrant - 最近流行ってるらしいけど何者?](https://reader034.vdocuments.mx/reader034/viewer/2022052412/5589ea8ed8b42abd378b476b/html5/thumbnails/2.jpg)
Vagrantってどういうもの?
● サーバ仮想化ソフトのフロントエンドツール– 最初は VirtualBox を使いやすくするツールだった– 最近はいろんな仮想化基盤、クラウドサービスを
操作するフロントエンドツールに進化しつつある
● Rubyで書かれたOSS– ソースは GitHub に公開されている– 機能を強化するプラグインもRubyで開発できる
![Page 3: Vagrant - 最近流行ってるらしいけど何者?](https://reader034.vdocuments.mx/reader034/viewer/2022052412/5589ea8ed8b42abd378b476b/html5/thumbnails/3.jpg)
Vagrantってどうやって使うの?
● インストーラをダウンロードしてセットアップ– Mac OS X, Windows, Linux 用のインストーラ
● http://www.vagrantup.com/downloads.html– 別途 Oracle VirtualBox はインストール必要
● Vagrantfile を書く– vagrant init でひな形を作成 & 編集– 編集方法はマニュアルを参考に
● http://docs.vagrantup.com/v2/
![Page 4: Vagrant - 最近流行ってるらしいけど何者?](https://reader034.vdocuments.mx/reader034/viewer/2022052412/5589ea8ed8b42abd378b476b/html5/thumbnails/4.jpg)
Vagrantってどうやって使うの?
● おもむろに vagrant up で起動
● 一仕事終えたら vagrant halt で停止
● 設定変更したら vagrant reload で再起動
● 飽きたら vagrant destroy で抹消!!
![Page 5: Vagrant - 最近流行ってるらしいけど何者?](https://reader034.vdocuments.mx/reader034/viewer/2022052412/5589ea8ed8b42abd378b476b/html5/thumbnails/5.jpg)
Vagrantってどんな環境で使えるの?
● 基本:VirtualBox と組合せて使う
● 応用:クラウドと組合せて使う
● 応用:Dockerと組合せて使う
![Page 6: Vagrant - 最近流行ってるらしいけど何者?](https://reader034.vdocuments.mx/reader034/viewer/2022052412/5589ea8ed8b42abd378b476b/html5/thumbnails/6.jpg)
Vagrant+VirtualBoxInternet
自分のPC
Windows / Mac OS X / Linux
Oracle VirtualBoxVagrant
VirtualBox VM VirtualBox VM
Vagrantfile
1.VM設定を書く
3.vagrant up
Boxファイル
2.ベースイメージをDL
VM起動
CentOS CentOS
![Page 7: Vagrant - 最近流行ってるらしいけど何者?](https://reader034.vdocuments.mx/reader034/viewer/2022052412/5589ea8ed8b42abd378b476b/html5/thumbnails/7.jpg)
Vagrant+VirtualBoxInternet
自分のPC
Windows / Mac OS X / Linux
Oracle VirtualBoxVagrant
VirtualBox VM VirtualBox VM
Chef Cookbook
2.vagrant provision (vagrant upでもok)
ソフトウェアの導入、設定
CentOS CentOS
Ansible Playbook
Puppet Manifest
Shell Script
1.サーバ構築設定を書く
PostgreSQL
Zabbix Server
PostgreSQL
Zabbix Agent
![Page 8: Vagrant - 最近流行ってるらしいけど何者?](https://reader034.vdocuments.mx/reader034/viewer/2022052412/5589ea8ed8b42abd378b476b/html5/thumbnails/8.jpg)
Vagrantってどんな環境で使えるの?
● 基本:VirtualBox と組合せて使う
● 応用:クラウドと組合せて使う
● 応用:Dockerと組合せて使う
![Page 9: Vagrant - 最近流行ってるらしいけど何者?](https://reader034.vdocuments.mx/reader034/viewer/2022052412/5589ea8ed8b42abd378b476b/html5/thumbnails/9.jpg)
Vagrant+AWS
Internet
自分のPC
Windows / Mac OS X / Linux
Vagrant
EC2 Instance EC2 Instance
Vagrantfile
1.VM設定を書く
CentOS CentOS
AMI2.vagrant up --provider=aws
インスタンス起動
![Page 10: Vagrant - 最近流行ってるらしいけど何者?](https://reader034.vdocuments.mx/reader034/viewer/2022052412/5589ea8ed8b42abd378b476b/html5/thumbnails/10.jpg)
Vagrant+AWS
Internet
自分のPC
Windows / Mac OS X / Linux
Vagrant
EC2 Instance EC2 Instance
CentOS CentOS
AMI
Chef Cookbook
Ansible Playbook
Puppet Manifest
Shell Script
1.サーバ構築設定を書く
2.vagrant provision (vagrant upでもok)
ソフトウェアの導入、設定
PostgreSQL
Zabbix Server
PostgreSQL
Zabbix Agent
![Page 11: Vagrant - 最近流行ってるらしいけど何者?](https://reader034.vdocuments.mx/reader034/viewer/2022052412/5589ea8ed8b42abd378b476b/html5/thumbnails/11.jpg)
Vagrantってどんな環境で使えるの?
● 基本:VirtualBox と組合せて使う
● 応用:クラウドと組合せて使う
● 応用:Dockerと組合せて使う
![Page 12: Vagrant - 最近流行ってるらしいけど何者?](https://reader034.vdocuments.mx/reader034/viewer/2022052412/5589ea8ed8b42abd378b476b/html5/thumbnails/12.jpg)
Vagrant+DockerInternet自分のPC
Windows / Mac OS X / Linux
Oracle VirtualBox (Linuxなら不要)Vagrant
Docker Container
Vagrantfile
1.VM設定を書く DockerImage
ベースイメージのDL
VM起動
CentOS CentOS
boot2docker VM(Linuxなら不要)boot2docker VM(Linuxなら不要)
Docker Containerコンテナ起動
2.vagrant up --provider=docker
![Page 13: Vagrant - 最近流行ってるらしいけど何者?](https://reader034.vdocuments.mx/reader034/viewer/2022052412/5589ea8ed8b42abd378b476b/html5/thumbnails/13.jpg)
Vagrant+DockerInternet自分のPC
Windows / Mac OS X / Linux
Oracle VirtualBox (Linuxなら不要)Vagrant
Docker Container
CentOS CentOS
boot2docker VM(Linuxなら不要)boot2docker VM(Linuxなら不要)
Docker Container
Chef Cookbook
Ansible Playbook
Puppet Manifest
Shell Script
1.サーバ構築設定を書く2.vagrant provision (vagrant upでもok)
ソフトウェアの導入、設定
PostgreSQL
Zabbix Server
PostgreSQL
Zabbix Agent
![Page 14: Vagrant - 最近流行ってるらしいけど何者?](https://reader034.vdocuments.mx/reader034/viewer/2022052412/5589ea8ed8b42abd378b476b/html5/thumbnails/14.jpg)
Vagrantってどんな環境で使えるの?
● Provider が存在すれば Vagrant が使える
● 対応している Provider – VMWare Fusion, AWS, Azure, CloudStack,
OpenStack, vSphere etc...– Available Vagrant Plugins
● https://github.com/mitchellh/vagrant/wiki/Available-Vagrant-Plugins
![Page 15: Vagrant - 最近流行ってるらしいけど何者?](https://reader034.vdocuments.mx/reader034/viewer/2022052412/5589ea8ed8b42abd378b476b/html5/thumbnails/15.jpg)
Vagrantって誰得?何がうれしい?
● 仮想サーバの状態をいつでも再現できる– Vagrantfile でサーバ起動状態の定義を外部化– 誰でも同じ設定のサーバを用意できる– git でバージョン管理して他の開発者と共有できる– AWS の CloudFormation, OpsWorks あたりと
世界観は近い
![Page 16: Vagrant - 最近流行ってるらしいけど何者?](https://reader034.vdocuments.mx/reader034/viewer/2022052412/5589ea8ed8b42abd378b476b/html5/thumbnails/16.jpg)
Vagrantって誰得?何がうれしい?
● 環境を変えてもオペレーションは同じ– vagrant up : サーバの起動– vagrant halt : サーバの停止– vagrant reload : サーバの再起動– vagrant destroy : サーバの抹消
● 覚えることが少なくてすむ– 環境の違いによって思考を阻害されずにすむ
![Page 17: Vagrant - 最近流行ってるらしいけど何者?](https://reader034.vdocuments.mx/reader034/viewer/2022052412/5589ea8ed8b42abd378b476b/html5/thumbnails/17.jpg)
Vagrantって誰得?何がうれしい?
● 作業端末(ホストOS)と実行環境(ゲストOS)のファイルシステムが共有できる– Virtual Box の GUI で設定してもいいけど面倒– NFS, rsync でも共有できる
![Page 18: Vagrant - 最近流行ってるらしいけど何者?](https://reader034.vdocuments.mx/reader034/viewer/2022052412/5589ea8ed8b42abd378b476b/html5/thumbnails/18.jpg)
Vagrantって誰得?何がうれしい?自分のPC
Windows
Oracle VirtualBox
VirtualBox VM
CentOSC:/Users/naka24/Test Vagrantfile AAAA.php
好きなエディタでコード編集
Apache httpd
/vagrant Vagrantfile AAAA.php
ファイル同期
好きなブラウザで動作確認http://localhost:10080/AAAA.php
VM内で実行
![Page 19: Vagrant - 最近流行ってるらしいけど何者?](https://reader034.vdocuments.mx/reader034/viewer/2022052412/5589ea8ed8b42abd378b476b/html5/thumbnails/19.jpg)
Vagrantって誰得?何がうれしい?
● 起動したゲストOSへのSSH接続が簡単– 接続先のIPアドレスとか公開鍵認証とか考えずに
vagrant ssh で OK– Docker のコンテナへも SSH で一発接続!– Amazon EC2 インスタンスへも SSH で一発接続!
![Page 20: Vagrant - 最近流行ってるらしいけど何者?](https://reader034.vdocuments.mx/reader034/viewer/2022052412/5589ea8ed8b42abd378b476b/html5/thumbnails/20.jpg)
Vagrantって誰得?何がうれしい?
● ネットワークも Vagrantfile で思いのまま– Forwarded Port
● ホストのポートをゲスト上のポートへフォワード– Private Network
● ホストとゲストだけのプライベートなネットワークを構築● 自由に静的なIPアドレスをゲストに付与できる
– Public Network● ゲストをホストと同じネットワークに接続● 他のホストマシンからゲストにアクセスできる
– 設定できる範囲は Provider の実装に依存
![Page 21: Vagrant - 最近流行ってるらしいけど何者?](https://reader034.vdocuments.mx/reader034/viewer/2022052412/5589ea8ed8b42abd378b476b/html5/thumbnails/21.jpg)
Vagrantって誰得?何がうれしい?
● ゲストOSのプロビジョニングもシームレス– Shell, Chef, Puppet, Ansible, Docker …– 開発現場ではサーバを作る&壊すの繰り返し
● Vagrant がないと軽く死ねる– VirtualBox なら Sahara で何度もやり直せる
● 変更した結果が気に入れば commit● 変更した結果が気に入らなければ rollback
![Page 22: Vagrant - 最近流行ってるらしいけど何者?](https://reader034.vdocuments.mx/reader034/viewer/2022052412/5589ea8ed8b42abd378b476b/html5/thumbnails/22.jpg)
Vagrantって誰得?何がうれしい?
● ゲストOSのベースイメージ(Box)を入手– インターネットに公開されているものを利用
● Vagrantbox.es : 中身がブラックボックスなので注意– http://www.vagrantbox.es/
● Bento : Packerのテンプレート付きで安心– https://github.com/opscode/bento/tree/master/packer
– 自分で作成したものを利用● Packer で Box を新規作成● vagrant package で起動済サーバから Box を生成
![Page 23: Vagrant - 最近流行ってるらしいけど何者?](https://reader034.vdocuments.mx/reader034/viewer/2022052412/5589ea8ed8b42abd378b476b/html5/thumbnails/23.jpg)
Vagrantって誰得?何がうれしい?
● Vagrant Cloud, Vagrant Shareで自分の 実行環境をインターネット経由でシェア– バージョン 1.5 新機能– 詳しくは↓を参照
● http://nekopunch.hatenablog.com/entry/2014/03/11/223250
● http://firegoby.jp/archives/5451
● 何ができるようになるだろう?– スマホアプリの動作テストとか
![Page 24: Vagrant - 最近流行ってるらしいけど何者?](https://reader034.vdocuments.mx/reader034/viewer/2022052412/5589ea8ed8b42abd378b476b/html5/thumbnails/24.jpg)
まとめ
● Vagrant とは– 仮想サーバを楽に取り扱うフロントエンドツール– Vagrantがないとできないこと、は多分ない– Vagrantがないと面倒なこと、を楽にする
● Dockerとの共通点– 実は新しい技術ではない– 既存の技術を使いやすくしたもの