狠狠撸

狠狠撸Share a Scribd company logo
仮想マシンを使った 
開発環境の簡単共有方法 
@hitaka0214 
2014/09/08 
1
何? 
社内勉強会で使った資料 
2
突然ですが 
こんな経験ありませんか? 
3
自分のPCでのみプログラムが動かない! 
なんで? 
?パッケージ不足 
?バージョン違い 
?設定ファイルの記述ミス 
?「手順に書いてないけど, 
  実はchmodしないと動かないんだわ」 
 など 
4
(#^ω^)?????? 
5
テスト環境がないから本番環境触る? 
なんで? 
?サーバを借りるの高いじゃん! 
?検証環境セットアップする時間がないよ 
?「手順書ないから環境再現できないんだわ」 
6
(#^ω^)?????? 
7
できたらいいなぁ 
? PCローカルで動く開発環境 
? 誰もで間違いなく出来る環境構築 
? メンバー間で開発コードの共有 
? 脱☆手作業!!!        ____ 
     /      \ 
   /  _ノ  ヽ?_  \ 
  /  o?⌒   ⌒?o  \  刺身の上にタンポポのせる仕事もう嫌だお… 
  |     (__人__)  | 
  \     ` ⌒?     / 8
出来るんです! 
9
どうやる? 
仮想マシンを立てて 
本物そっくりの環境を自動的にインストールする 
10 
開発環境構築 
開発コード共有 
開発コードをGitなどを使って管理し 
開発環境内で動かす
使うもの 
VirtualBox 
Vagrant 
Chef 
ServerSpec 
仮想マシンの実行環境 
(VMwareはライセンスが…) 
VirtualBoxの簡単操作 
(AWSなども操作可能) 
手順書をコード化し 
コードの通りに設定する 
完成した環境の確認ツール 
インフラと開発コードの両方をgitで管理する 
11
準備 
VirtualBoxインストール 
https://www.virtualbox.org/wiki/Downloads 
仮想ターミナルインストール 
Windowsな方はCygwinがおすすめ。 
パッケージのOpensshを追加してね。 
LinuxとMacな方は不要。 
Vagrantインストール 
https://www.vagrantup.com/downloads.html 
12
準備完了 
13
ここからはデモをしながら説明 
サンプルコードを用意しました。 
興味のある方は見て,試して下さい。 
https://github.com/hitaka0214/vagrant_demo 
14
やること一覧 
1. Vagrantの作業ディレクトリ作成 
2. Vagrantfile作成 
3. Chefコード記載 
4. ServerSpecコード記載 
5. Vagrant起動(VirtualBox起動:仮想マシン起動) 
6. 仮想マシンへログイン(開発開始) 
デモコードで 
一気に出来ます 
15
1.Vagrantの作業用 
ディレクトリ作成 
デモコードで準備してます 
$ git clone https://github.com/hitaka0214/vagrant_demo.git 
16
2.Vagrantfile作成 
? インストールするOSの記載 
 インターネット上からboxファイルと呼ばれる 
 仮想マシンのイメージダウンロードします。 
? CPU数,メモリ数などの設定 
? 仮想ネットワークの設定 
? Chefインストール 
OSはCentOS7 
IPは192.168.50.10を設定 
Rubyコード 
17
補足 Vagrant 
?仮想OSのイメージはboxと呼ばれる 
! 
?boxはインターネット上に公開されている 
! 
?ダウンロードするだけで好きなOSを使える 
 Linuxが主。BSD系もあり。 
 Windowsもあるらしい(ライセンスは??)。 
★Vagrant Cloud(boxイメージの検索サイト) 
 https://vagrantcloud.com 
18
3.Chefコード記載 
Rubyコード 
? ディレクトリchef-repoに入っています 
? Swap作成 
? 開発用のエディタインスコ,設定ファイル設置 
? WebサーバにNginxをインストール 
? 開発コード(HTMLファイル)デプロイ 
これが構築手順書に該当19
補足 Chef 
?プログラムでサーバの構築作業を行う 
 似たもの:Puppet,Ansible 
! 
?Rubyコードで記述 
 おきまり文句なので簡単。 
 複数OS,バージョンを想定すると作り込みが必要 
参考書:入門Chef Solo - Infrastructure as Code 
http://tatsu-zine.com/books/chef-solo 
20
4.ServerSpecコード 
Rubyコード 
? ディレクトリspecに入っています 
? Nginxインストールできた? 
? Nginxの自動起動設定した? 
? Nginxが起動してる? 
? ポート80番開いてる? 
【定番らしい】 
Chefで作って 
ServerSpecで確認 
期待する状態を確認21
5.Vagrant起動 
Vagrantfileがあるディレクトリ内で実行 
$ vagrant up 
Vagrantfileに記載したとおりに仮想マシンが起動 
Chefを使ったサーバ構築と 
ServerSpecを使ったサーバ環境の確認も実施可能 
22
6.仮想マシンへログイン 
$ vagrant ssh 
あとはthecodes内のコードを編集し 
gitで管理することを繰り返す。 
これでメンバー間で同一の開発環境を使った開発が可能! 
23
開発ソースの共有 
?gitなどのソースコード管理ツールを使って共有。 
?仮想マシン内で開発をして管理ツールへ登録。 
?複数メンバーでソースを共有し, 
 同じ環境内で動作確認が可能。 
http://192.168.50.10/thecodes/ 
コードは/home/vagrant/projectx/thecodes 
24
その他の操作 
? 仮想マシンの停止 
仮想マシン内からexitした後で, 
$ vagrant halt 
? 仮想マシンの削除 
$ vagrant destroy 
? 仮想マシンの作り直し(止めた仮想マシンの起動) 
$ vagrant up 
25
本番環境への構築 
? Cehfでやっちゃいな! 
Chef-soloを使えば簡単に可能。 
?本番環境へのChefインストール 
$ knife solo prepare user@host 
! 
?本番環境へChefのコード実行 
$ knife solo cook host 
本番環境がAWSやGPC,vSphereなどであれば 
Vagrantを使えます! 
26
詳細はコードを読んでネ☆ 
27
ちょっとだけ余談 
? Vagrantの起動って時間がかかる 
? ハイパーバイザー型の仮想化だから 
? VMwareでも同じ 
? もっと高速な仮想化技術がでてきた 
? コンテナと呼ばれる技術 
28
代表ツール 
https://www.docker.com 29
なにができるの? 
? 超高速なOS起動 
30
他には? 
やたらと最近注目されてる 
まだ詳しくわかってないけど, 
なんだか未来を感じる 
31
Googleはコンテナを活用中らしい 
Everything at Google runs in a container. 
https://speakerdeck.com/jbeda/containers-at-scale 
32
簡単な使い方 
1. Dockerfileを記述 
 デモコードでは/home/vagrant/Dockerfile 
2. Dockerのイメージをビルド 
 sudo docker build -t test:ubuntu . 
3. Dockerのイメージ作成結果を確認 
 sudo docker images 
4. Dockerのイメージを起動 
 sudo docker run -i -t test:ubuntu /bin/bash 
33
皆が幸せになれるかもしれないまとめ 
? 仮想マシンを使って本番と同じ環境をゲット 
? Chef+ServerSpecを使って環境構築を自動化 
? Gitを使って開発ソース,Chefコードなどを共有 
34

More Related Content

仮想マシンを使った开発环境の简単共有方法