SlideShare a Scribd company logo
1 of 34
Download to read offline
仮想マシンを使った 
開発環境の簡単共有方法 
@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

What's hot

What's hot (20)

【メモ】一般的に設計書に定義される項目例
【メモ】一般的に設計書に定義される項目例【メモ】一般的に設計書に定義される項目例
【メモ】一般的に設計書に定義される項目例
 
Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介
Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介
Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介
 
DockerでWordPressサイトを開発してみよう
DockerでWordPressサイトを開発してみようDockerでWordPressサイトを開発してみよう
DockerでWordPressサイトを開発してみよう
 
Ansible roles done right
Ansible roles done rightAnsible roles done right
Ansible roles done right
 
サーバ構築を自動化する 〜Ansible〜
サーバ構築を自動化する 〜Ansible〜サーバ構築を自動化する 〜Ansible〜
サーバ構築を自動化する 〜Ansible〜
 
Fuchsia概略その1
Fuchsia概略その1Fuchsia概略その1
Fuchsia概略その1
 
nginx入門
nginx入門nginx入門
nginx入門
 
DNSキャッシュサーバ チューニングの勘所
DNSキャッシュサーバ チューニングの勘所DNSキャッシュサーバ チューニングの勘所
DNSキャッシュサーバ チューニングの勘所
 
Ceph Tech Talk: Ceph at DigitalOcean
Ceph Tech Talk: Ceph at DigitalOceanCeph Tech Talk: Ceph at DigitalOcean
Ceph Tech Talk: Ceph at DigitalOcean
 
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
 
第20回 OpenStack勉強会 Neutron Deep Dive - DVR
第20回 OpenStack勉強会 Neutron Deep Dive - DVR第20回 OpenStack勉強会 Neutron Deep Dive - DVR
第20回 OpenStack勉強会 Neutron Deep Dive - DVR
 
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
Docker道場「Dockerの基本概念」0825インフラ勉強会資料Docker道場「Dockerの基本概念」0825インフラ勉強会資料
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
 
Linuxのsemaphoreとmutexを見る 
Linuxのsemaphoreとmutexを見る Linuxのsemaphoreとmutexを見る 
Linuxのsemaphoreとmutexを見る 
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
 
NGINX Back to Basics: Ingress Controller (Japanese Webinar)
NGINX Back to Basics: Ingress Controller (Japanese Webinar)NGINX Back to Basics: Ingress Controller (Japanese Webinar)
NGINX Back to Basics: Ingress Controller (Japanese Webinar)
 
Lxc で始めるケチケチ仮想化生活?!
Lxc で始めるケチケチ仮想化生活?!Lxc で始めるケチケチ仮想化生活?!
Lxc で始めるケチケチ仮想化生活?!
 
NGINX Back to Basic 2 Part 2 (Japanese Webinar)
NGINX Back to Basic 2 Part 2 (Japanese Webinar)NGINX Back to Basic 2 Part 2 (Japanese Webinar)
NGINX Back to Basic 2 Part 2 (Japanese Webinar)
 
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。 【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
 
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門
 
ドキュメントシステムはこれを使え2015年版
ドキュメントシステムはこれを使え2015年版ドキュメントシステムはこれを使え2015年版
ドキュメントシステムはこれを使え2015年版
 

Viewers also liked

師弟登壇・新米サムライの集い 2013
師弟登壇・新米サムライの集い 2013 師弟登壇・新米サムライの集い 2013
師弟登壇・新米サムライの集い 2013
hiboma
 

Viewers also liked (20)

AWSでシステム構築工数を1/10にしつつ、高品質化も実現した枠組みのご紹介
AWSでシステム構築工数を1/10にしつつ、高品質化も実現した枠組みのご紹介AWSでシステム構築工数を1/10にしつつ、高品質化も実現した枠組みのご紹介
AWSでシステム構築工数を1/10にしつつ、高品質化も実現した枠組みのご紹介
 
Solaris Zone と Puppet、Serverspec でインフラ CI
Solaris Zone と Puppet、Serverspec でインフラ CI Solaris Zone と Puppet、Serverspec でインフラ CI
Solaris Zone と Puppet、Serverspec でインフラ CI
 
Infrastructure as Codeの取り組みと改善
Infrastructure as Codeの取り組みと改善Infrastructure as Codeの取り組みと改善
Infrastructure as Codeの取り組みと改善
 
Infra as Code Sapppro Casual 札幌の開催趣旨とTest-Kitchenの話
Infra as Code Sapppro Casual 札幌の開催趣旨とTest-Kitchenの話Infra as Code Sapppro Casual 札幌の開催趣旨とTest-Kitchenの話
Infra as Code Sapppro Casual 札幌の開催趣旨とTest-Kitchenの話
 
Server specのご紹介
Server specのご紹介Server specのご紹介
Server specのご紹介
 
Ansibleを使ってサーバ100台にBaculaクライアントを簡単インストール
Ansibleを使ってサーバ100台にBaculaクライアントを簡単インストールAnsibleを使ってサーバ100台にBaculaクライアントを簡単インストール
Ansibleを使ってサーバ100台にBaculaクライアントを簡単インストール
 
師弟登壇・新米サムライの集い 2013
師弟登壇・新米サムライの集い 2013 師弟登壇・新米サムライの集い 2013
師弟登壇・新米サムライの集い 2013
 
Serverspec at Testing Framework Meeting
Serverspec at Testing Framework MeetingServerspec at Testing Framework Meeting
Serverspec at Testing Framework Meeting
 
Serverspecを使ってサーバ5000台のBaculaクライアントをテスト
Serverspecを使ってサーバ5000台のBaculaクライアントをテストServerspecを使ってサーバ5000台のBaculaクライアントをテスト
Serverspecを使ってサーバ5000台のBaculaクライアントをテスト
 
仕事を遊びにする自動化とガラクタプロダクト
仕事を遊びにする自動化とガラクタプロダクト仕事を遊びにする自動化とガラクタプロダクト
仕事を遊びにする自動化とガラクタプロダクト
 
itamae + Serverspecで テスト駆動インフラやってみた #shibuyarb
itamae + Serverspecで テスト駆動インフラやってみた #shibuyarbitamae + Serverspecで テスト駆動インフラやってみた #shibuyarb
itamae + Serverspecで テスト駆動インフラやってみた #shibuyarb
 
ペパボ福岡支社におけるRubyの活用事例
ペパボ福岡支社におけるRubyの活用事例ペパボ福岡支社におけるRubyの活用事例
ペパボ福岡支社におけるRubyの活用事例
 
AWS Startup Tech Meetup #008 発表資料
AWS Startup Tech Meetup #008 発表資料AWS Startup Tech Meetup #008 発表資料
AWS Startup Tech Meetup #008 発表資料
 
[LT] インフラの人がChefやServerspec(ほか)が Rubyだったおかげですこし プログラムをするようになった話
[LT] インフラの人がChefやServerspec(ほか)が Rubyだったおかげですこし プログラムをするようになった話[LT] インフラの人がChefやServerspec(ほか)が Rubyだったおかげですこし プログラムをするようになった話
[LT] インフラの人がChefやServerspec(ほか)が Rubyだったおかげですこし プログラムをするようになった話
 
Ansible の CI を drone/Dokcker で試してみた
Ansible の CI を drone/Dokcker で試してみたAnsible の CI を drone/Dokcker で試してみた
Ansible の CI を drone/Dokcker で試してみた
 
若手インフラエンジニア現状確認会 @hfm #wakateinfra
若手インフラエンジニア現状確認会 @hfm #wakateinfra若手インフラエンジニア現状確認会 @hfm #wakateinfra
若手インフラエンジニア現状確認会 @hfm #wakateinfra
 
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpecマニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
 
Serverspecの本気をみるのです
Serverspecの本気をみるのですServerspecの本気をみるのです
Serverspecの本気をみるのです
 
さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)
さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)
さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)
 
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門
 

Similar to 仮想マシンを使った開発環境の簡単共有方法

DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版
Yusuke Ando
 
3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes
Takeshi Komiya
 
継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング
Takayuki Kondou
 
20130723 ecシステムにchefを導入してみた v1.0
20130723 ecシステムにchefを導入してみた v1.020130723 ecシステムにchefを導入してみた v1.0
20130723 ecシステムにchefを導入してみた v1.0
NIFTY Cloud
 

Similar to 仮想マシンを使った開発環境の簡単共有方法 (20)

Chef入門
Chef入門Chef入門
Chef入門
 
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境
 
DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版
 
DevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニックDevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニック
 
Chef
ChefChef
Chef
 
社内Chef勉強会
社内Chef勉強会社内Chef勉強会
社内Chef勉強会
 
3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes
 
継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング
 
社内勉強会 - chef
社内勉強会 - chef社内勉強会 - chef
社内勉強会 - chef
 
Chef windows linux環境構築
Chef windows linux環境構築Chef windows linux環境構築
Chef windows linux環境構築
 
Aspnet mvc 6の今を紹介
Aspnet mvc 6の今を紹介Aspnet mvc 6の今を紹介
Aspnet mvc 6の今を紹介
 
20130723 ecシステムにchefを導入してみた v1.0
20130723 ecシステムにchefを導入してみた v1.020130723 ecシステムにchefを導入してみた v1.0
20130723 ecシステムにchefを導入してみた v1.0
 
Chef
ChefChef
Chef
 
Redmine Ansible
Redmine AnsibleRedmine Ansible
Redmine Ansible
 
Chefのはじめの一歩
Chefのはじめの一歩Chefのはじめの一歩
Chefのはじめの一歩
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
 
作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく
 
恋するJenkins
恋するJenkins恋するJenkins
恋するJenkins
 
シェフから板前になった話
シェフから板前になった話シェフから板前になった話
シェフから板前になった話
 
Pyconjp2016 pyftplib
Pyconjp2016 pyftplibPyconjp2016 pyftplib
Pyconjp2016 pyftplib
 

Recently uploaded

Recently uploaded (6)

2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
 
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
 
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
 
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
 
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
 
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
 

仮想マシンを使った開発環境の簡単共有方法