VAGRANTでお手軽
開発環境
VAGRANT + CHEF SOLO
MACHIDA'matchy'Hideki
VAGRANT+CHEF
Vagrantと Chef で仮想マシンで開発環境をつくろう!
Chef で設定を作れば本番環境の設定もできる!
よくきくハナシ
それです
実際にやってみた
WEB の運用・開発環境
※ 異論はあるでしょうが今回は LAMP とします
勤務先から支給されるのは
WINDOWS マシン
LINUX 使ってと言われても
意欲のない開発者
意欲はあるけど経験がたりてない開発者
フロントエンド作成者 (俗にでざいなーという)
ぷろまねはかんがえた
Windows 上に Apache+PHP+MySQLを入れてもらおう(XAMPP)
問題点
運用環境は Windows じゃねーし
各ミドルウェアのバージョンまちまちだし
そもそもオレは Linux でいいし
仮想マシンでやればいいんじ
ゃん
VMwarePlayer とか
VirtualBox とか
チームメンバーの仮想マシン
の使い方
よくわかんないのでいろいろツッコんでわけわかめ
大事に大事に仮想マシンを育てている
いずれにせよなにかとサポートしてあげないとー
ぷろまね危機一髪
もっと簡単に仮想マシンを
1. 必要なときにサクっとできる
2. 各種の設定もサクっとできる
3. 用が済んだらさっさと捨てる
どうやらそれが VAGRANT+CHEF
社内ツールを勉強会で発表
NSEG でウケたら社内ツールに
しよう
すみません
主な対象
Linux とかそんな使ったことない開発者
黒画面使えと言われると転職を考えるフロントエンド担当
動作環境
DHCP が施設されたLAN
各メンバーはそれぞれ別のアカウントでWindows にログイン
実行環境は CentOS-6
必要なもの
メモ帳じゃないテキストエディタ
黒い画面に負けない勇気
Oracle VM VirtualBox
Vagrant
Bonjour PrintServices for Windows
まずはテンプレートを入手
ひととおり作っといたのでダウンロードしてね
画面右下の「Download ZIP」をクリックしてどこかに解凍
もちろんできる方は gitclone
https://github.com/matchy2/lamp-centos6
Vagrantfile の編集 (1)
あとから直せないのでタイプミスしないでね
ホスト名
chef.json={
'host'=>{'name'=>'vm-'+(ENV['USERNAME']||ENV['USER'])},
「vm-ログインユーザー名」になるはず。めったにいじる必要はない
ハズ
Vagrantfile の編集 (2)
メール送信関係の設定
'postfix'=>{
'relay'=>{
'smtphost'=>'smtp.gmail.com',#SMTPホスト名
'smtpport'=>'587', #SMTPポート番号
'usetls'=>'yes', #SSL/TLSを使うならyes
'smtpuser'=>'foo@gmail.com', #SMTPログイン名
'smtppasswd'=>'yourpassword'#SMTPパスワード
}
},
Vagrantfile の編集 (3)
MYSQLの設定
'mysql'=>{
'rootpasswd'=>'rootpasswd',#MySQLrootパスワード
'mydbname' =>'mydb', #新たに作る DB名
'myuser' =>'myuser', #新たに作る DBグイン名
'mypasswd' =>'mypass' #新たに作る DBパスワード
}
}
VAGRANT 実行
黒画面で
cdVagrantfileのあるディレクトリ
vagrantup
仮想マシンのひな形をダウンロード
仮想マシンを VirtualBox にインポート
仮想マシンの実行
各種設定
WEB 公開ディレクトリ
Vagrantfile のあるディレクトリ下の www/htdocsディレクトリ
あくまでWindows 上なので、好きなエディタやIDEやオーサリン
グツールをつかっておk
WEB アクセス
http://vm-ログインユーザー名.local/
※自分以外の仮想マシンも同様にアクセス可能
データベース操作
http://vm-ログインユーザー名.local/phpmyadmin/
※アクセス制限はかかってないので注意
仕事終わって帰る前に
仮想マシンを終わらせてからPCの電源を切ってください
vagranthalt
また仕事をはじめるときは
vagrantup
※最初の時ほど時間はかかりません
プロジェクトの終了時
PhpMyAdminでデータベースをバックアップしてから、HDD 節約
のため仮想マシンを破棄
vagrantdestroy-f
プロジェクト再開時
再び起動
vagrantup
※最初ほどではないけど設定し直すので時間かかります
PhpMyAdmin でデータベースをリストア
まとめ
Windows の操作のみで、Linux のコマンドを使う必要ナシ
本番環境にとても近い状態で開発・制作できる
黒画面なんてそんなこわくない
HAVE FUN WEB
DEVELOPMENT!
本番環境設定篇
knife-solo が必要
NODE ファイルの編集 (1)
対象ファイル:chef-repos/nodes/production.json
サーバーの正式な FQDN
"host":{
"fqdn":"foo.example.net"
}
NODE ファイルの編集 (2)
Postfix と MySQL は Vagrantのときとほぼ同じ
本番環境の設定
一般ユーザーでssh ログイン可能とする
ssh 公開鍵をセットし、クライアントは ssh-agentを使用して、パス
ワードなしでログインできるようにする
そのユーザーは sudo でパスワードなしでなんでもできるできる
ようにしとく
自分側の ~/.ssh/configを設定してsshproductionでサクっ
とログインできるようにする
CHEF 化
Windows 側で実行
knifesoloprepareproduction
対象マシンに Ruby実行環境コミでChef の rpm がインストールさ
れる
実行
cdchef-repos
knifesolocookproduction
開発環境との違い
Avahiはインストールしない
OS のホスト名は設定しない
Apache/Postfix のホスト名指定は正式なFQDN
iptables のファイアーウォールはより厳格に
PhpMyAdmin もインストールしない
DenyHosts というssh への連続アクセスを締め出すヤツ
ssh は rootログイン禁止・パスワードログイン禁止
ポイント
メンバーの Windows 環境には Vagrantしか入れない
Windows でKnife Solo とかの環境を作るのはしんどい
参考:
同様に Berkshelf も使わないことにした
http://j.mp/1eG1YQv
ご意見募集
ツッコミください
もしよければこれを folk して自分用やプロジェクト用にカスタマ
イズしてね
THE END
BY MACHIDA 'MATCHY' HIDEKI

Vagrant でお手軽開発環境