お勉強しやすい環境を整えておきたいので、vagrant + chefを導入してみようと思う。
家で使っているwindows7 64bitでknife soloとかを動かせるようにしてみた。
正確にはcmdからknife soloを使えるようになるまでの設定メモ。
というわけでmacの人にはいらない内容だと思う。
いろいろインストール
まず必要なものをそろえる。
virtual boxのインストール
oracle公式virtual boxダウンロードページから自分のOSにあったvirtual boxのインストーラを落としてくる。
別に今はvmwareでもvagrantが動くのでvmwareの方が好きな人はそっちを落とせばよい。
インストーラの指示に素直に従えば入るので詳細は割愛。
vagrantのインストール
vagrant公式ダウンロードページから自分のOSにあったvagrantのインストーラを落としてくる。
なお、このインストーラがアンインストーラでもあるので、コンパネからでも消せるけど残しておいた方が便利。
これもインストーラの指示に従えば入るので詳細は割愛。
chefのインストール
windowsで動かせるようにバッチファイルとして配布されているものがあるので、それを落としてくる。
opscode公式chefダウンロードページから自分のOSにあったchefのインストーラを落としてくる。
なお、このインストーラがアンインストーラでもあるので、コンパネからでも消せるけど残しておいた方が便利。
インストーラの指示に(ry
これでcmdからchefがたたけるようになる。
あと何気にありがたかったのはwindowsのcmdからunixコマンドがたたけるようになる(ls
とかrm
とか)。
path\to\chef\embedded\bin
下を見ればわかるし、環境変数にもここのパスが通っているはず。
path\to\Vagrant\embedded\bin
にも入ってるけど、ここのパスはvagrantのインストーラでは通らない。
もしwindowsじゃないなら
$ gem install chef
の方が簡単に入る。
knife soloのインストール
chefのインストーラを使うと一緒にrubyもインストールされる。
2013/8/25現在chefのパッケージからインストールしたときに入るrubyのバージョンは
> ruby -v ruby 1.9.3p448 (2013-06-27) [i386-mingw32]
だった。できれば2系がいいけど、まあいっか。
gemも一緒に入ってて、一応
> gem update --system
してから
> gem install knife-solo
でknife soloを導入。
rsyncとsshを使えるようにする
knife soloのバッチ処理中にrsync
コマンドをたたくのだけど、windowsにデフォルトでは入ってないのでrsync
を使えるようにする必要がある。
windows上でrsyncを使えるようにするために、私はcwRsyncを落とした。
cwRsync配布ページでGet cwRsync!をクリック。
リンク先では『OS1台につき35$』とか書かれてたりするけど、free editionあるので、ちゃんと確認して落とす。
インストー(ry
cwRsyncをインストールするとssh
コマンドもたたけるようになるので、vagrantのインストーラを実行するだけでは使えないvagrant ssh
が使えるようになる。
またputtyやssh-keygen
コマンドも使えるようになる。
でもvagrantに入るのにはcmdを使いたくないので、私はTeraTermを落として使ってる。
TeraTerm配布ページに行って最新版をインストール。
puttyをインストールするかどうか選択できるのでcwRsyncで入ったもので間に合うならチェックを外すといい。
ここまでで何回かはOSの再起動が必要だったと思う。
2013-12-24 追記
cwRsyncのインストール後ユーザ環境変数PATHに%ProgramFiles(x86)%\cwRsync\bin
を追記しないとsshコマンドが使えなかった。
vagrantおよびchefのインストールフォルダにはssh.exeが存在しないことは確かめたので、やっぱりcwRsyncをインストールした後PATHを通す必要があるみたいだった。
前にインストールしたときは特に環境変数いじらなかった気がしていたが、再インストール時には動かなかったのでもしかすると無意識的にPATHをいじったのかもしれない。
オプションとしてsaharaプラグインを入れる
chefで実行しようとした変更が気に入らなかったときにvagrantの状態を元に戻せる(rollback)できるようにsaharaというプラグインをvagrantに入れる。
> vagrant plugin install sahara Installing the 'sahara' plugin. This can take a few minutes... Installed the plugin 'sahara (0.0.15)'! > vagrant plugin list sahara (0.0.15) > vagrant sandbox on 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% > vagrant sandbox status [default] Sandbox mode is on
これで気に入らなければ、変更を破棄できるようになった。
別にvagrantならvagrant destroy
でもよくね?って思うけど、途中まではいい感じだったのにというときに助かる。
必要なものはそろった。実際にknife soloを使ってvagrantにchefのレシピを適応していく。
おりょうりしましょう
この記事はvagrantの使い方を述べたいわけではないし、chef・knifeの使い方を詳しく述べたいわけでもないので、ざっくりした話だけ書いておく。
あらかじめvagrant init
で初期化はしたということにしてvagrant up
する。
次にknife soloで設定。
> knife solo init chef-repo > cd chef-repo > knife solo prepare -i \path\to\.vagrant.d\insecure_private_key vagrant@localhost
で、適当にレシピを変更したら
> knife solo cook -i \path\to\.vagrant.d\insecure_private_key vagrant@localhost
でvagrantに適応。
ただこのままだとlocalhostでしかアクセスできないし、vagrantを複数立ち上げてるときにどのvagrantにレシピが適応されるのかわからなくなるので、Vagrantfileを編集する。
config.vm.network :private_network, ip: "192.168.33.10"
この行はデフォルトではコメントアウトされているので、それを外す。ip: "…"
の部分を自分で使いたいipアドレスにする。
そのうえで
> vagrant reload > knife init chef-repo > cd chef-repo > knife solo cook -i \path\to\.vagrant.d\insecure_private_key vagrant@192.168.33.10
これでipアドレスが192.168.33.10になっているvagrantVMにレシピが適応される。
確認してないけど、やったらできるかもなーと思っていること
- さいごの
knife solo cook
のところでinsecure_private_keyというのを-iオプションで指定しているが、ほかの人のwindowsなら指定しなくても動くかも(私のwindowsはCとDドライブの構成が・・・ゴニョゴニョ)。 - 複数のvagrantサーバを立ち上げて一気にレシピを流し込みたいなーと考えているなら
knife solo cook …
のところをよしなにバッチファイルに書き出して、それを実行すればよいと思う。『入門Chef』にもそう書いてたし。ただwindowsにはxargs
というコマンドがないので、『入門Chef』に書いてあるやり方をそのまま適応することはできない。考えるの面倒くさいなら、もう一行ずつコマンド実行するように書いちゃえばいいんじゃないかな、とりあえず。
やっててはまったこと(なんかあり次第追記)
- vagrantのipアドレスの設定変更のところだが、一番最初に
vagrant init
を実行したcmdが管理者権限だと、そのプロンプトを閉じて何気なく一般ユーザーでcmdを開いたときにvagrant up / reload
できない(エラー出力内容忘れてしまった・・・)。最初にvagrant init
したときにVirtualBox側の設定が管理者権限で実行されてしまうからみたいで、これ知らないと「なんでや?」って結構困る。原因を詳細に調べたわけではないのですごくモヤっとした話だけど、結論としてはむやみに管理者権限は使うな、という話。
以上、cmdだけでknife soloを使えるようにする話でした。
cmd以外のターミナルでknife soloを動かす方法はVagrant and Chef on Windowsを読めばよいと思います。
この記事で紹介されているmintty以外のターミナルでもやることはそんなに変わらないと思うし。
・・・俺、windowsクリーンインストールしたら、そういやこんな記事書いてたなってwindowsからchefをまた使えるようにするんだ。
週末にクリーンインストールできたらいいな。
2013-12-24 追記
次の記事にwindowsクリーンインストールの話とvagrant + chefの再インストールの話を書きました。