• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Vagrant
 

Vagrant

on

  • 2,592 views

 

Statistics

Views

Total Views
2,592
Views on SlideShare
1,598
Embed Views
994

Actions

Likes
8
Downloads
13
Comments
0

3 Embeds 994

http://ipros-creators.tumblr.com 969
http://assets.txmblr.com 23
http://app.imcreator.com 2

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Vagrant Vagrant Presentation Transcript

    • 株式会社イプロス 外山 寛 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 ご静聴ありがとう ございました。