わすれっぽいきみえ

みらいのじぶんにやさしくしてやる

24日目: windowsクリーンインストール その2

昨日の続き。

vagrant + chefのインストール

ここはvagrant + chefをwindowsで使えるようにした - わすれっぽいきみえとまったく同じ作業。
各種設定について次から見ていく。

vagrantにおける公開鍵認証の検証

> vagrant ssh
cygwin warning:
  MS-DOS style path detected: D:/Users/kimikimi714/.vagrant.d/insecure_private_key
  Preferred POSIX equivalent is: /cygdrive/d/Users/kimikimi714/.vagrant.d/insecure_private_key
  CYGWIN environment variable option "nodosfilewarning" turns off this warning.
  Consult the user's guide for more details about POSIX paths:
    http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
[vagrant@vagrant-centos64 ~]$

まずログインはできる。じゃあ今度はvagrant sshではなくssh vagrantできるようにしよう。

cwRsyncでインストールされたsshが読み込む.ssh/configファイルはデフォルトだと/home/kimikimi714下になってしまうので、
windowsのユーザー環境変数に次を追加する。

> set HOME="%USERPROFILE%"
> echo "%HOME%"
"D:\User\kimikimi714"

ここの%USERPROFILE%環境変数で、cmdで単にsetと打ってやれば確認できる。
昨日の記事レジストリの変更を行っておいたおかげで"D:\User\kimikimi714"が設定されている状態。%USERPROFILE%が見つからなければ直接set HOME="D:\User\kimikimi714"としてやってもいい。 今後はD:\User\kimikimi714\.ssh下にあるconfigファイルを読み込むようになる。

configファイルの設定を行うために次のコマンドを実行。

> vagrant ssh-config --host vagrant
Host vagrant
  HostName 127.0.0.1
  User vagrant
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile D:/Users/kimie/.vagrant.d/insecure_private_key
  IdentitiesOnly yes
  LogLevel FATAL

ここのHostName 127.0.0.1をVagrantfileのconfig.vm.networkで設定した値に変え、
Port 2222Port 22に変更、LogLevelの行を削除してD:\User\kimikimi714\.ssh\configに追記。

そのうえでssh実行。

> ssh vagrant
cygwin warning:
  MS-DOS style path detected: D:/Users/kimikimi714/.vagrant.d/insecure_private_key
  Preferred POSIX equivalent is: /cygdrive/d/Users/kimikimi714/.vagrant.d/insecure_private_key
  CYGWIN environment variable option "nodosfilewarning" turns off this warning.
  Consult the user's guide for more details about POSIX paths:
    http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
[vagrant@vagrant-centos64 ~]$

できた。

chefのレシピが流し込めるか

ssh vagrantと実行しただけでvagrantインタンスにログインできるようになったので、これを使ってchefのレシピを流し込めるようにする。
とりあえずsandboxモードにしておこう。

> vagrant sandbox on
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

> vagrant sandbox status
[default] Sandbox mode is on

chefのリポジトリを準備。

> knife solo init chef-repo
> cd chef-repo
> knife solo prepare vagrant
Bootstrapping Chef...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 14101  100 14101    0     0   2101      0  0:00:06  0:00:06 --:--:-- 23540
Downloading Chef 11.6.0 for el...
downloading https://www.opscode.com/chef/metadata?v=11.6.0&prerelease=false&p=el
&pv=6&m=x86_64
  to file /tmp/install.sh.1737/metadata.txt
trying curl...
url     https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chef-11.6.
0-1.el6.x86_64.rpm
md5     ***
sha256  ***
downloaded metadata file looks valid...
downloading https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chef-1
1.6.0-1.el6.x86_64.rpm
  to file /tmp/install.sh.1737/chef-11.6.0.x86_64.rpm
trying curl...
Checksum compare with sha256sum succeeded.
Installing Chef 11.6.0
installing with rpm...
warning: /tmp/install.sh.1737/chef-11.6.0.x86_64.rpm: Header V4 DSA/SHA1 Signatu
re, key ID 83ef826a: NOKEY
Preparing...                ########################################### [100%]
   1:chef                   ########################################### [100%]
Thank you for installing Chef!
Generating node config 'nodes/vagrant.json'...

おお!いけそういけそう!
nodes\vagrant.jsonにはよしなにレシピを書いておいてknife soloを実行してみる。

> knife solo cook vagrant
(なんかいろいろ)
Chef Client finished, 21 resources updated

ひとまずhttp://localhost/にアクセスしてapacheのデフォルト画面が見れることを確認できた! 本当はいろいろ書いてるレシピだったけど、そこは割愛で。

前回のknife soloよりよくなったところ

いちいち鍵の指定をしなくてよくなったことだと思う。
鍵が一体どこにあって、どこに鍵の設定ファイルがあるのかを環境変数とかでちゃんと指定してやらんといけないところが前よりはきれいになったんじゃないかな。
-iオプションとか正直めっちゃ面倒くさかったし、えーこれvagrantインスタンス作るたびに設定しなきゃいけないのー?って自分でも思ってたから設定できてよかった。

今度チャレンジしてみたいこと

  • Multi-Machine - Vagrant Documentationに書かれてるんだが、サーバ間通信を多数のvagrantインスタンスを立ち上げることでいろいろ遊べる*1と書いてあって、目的ごとに違うchefのレシピを作り、それを各vagrantインスタンスに流し込んで通信させるみたいなことをして遊べるんじゃないかなぁと思った。そこらへんができたら前に書いたRabbitMQの話だったり、HUBOTの話だったりいろいろ突っ込んで遊べるなぁと。
  • 今回特に思ったのが、レシピが正しくサーバに反映されているか確認するというのが非常に重要だなぁと。そしてその手段としてのserverspecを触ってみたいなぁと思った。
  • レシピだのなんだの言ってるけど、そもそもrubyの勉強そんなにしてないわーという根本的問題。
  • centosばっか使ってて、ほかのunix系OSmac以外使ってないからほかも触ってみたいな。

これでクリーンインストール終わったけれども、まぁSSDの寿命って2から5年ってところだという話だし、そもそもSSD買い替え考えたほうがいいかもしれない。
1TBのHDDはうまくやればまだ使えそうだけど、データがいつ何時ぶっ飛んでもいいようにしておかないとな。
それにいまやwindows8.1がある時代だし。とはいえヨドバシまで行ってちょこっとデモを触ってみた感じ、あっwin7でいいやって思ってしまった。

参考リンク

*1:ああ、すみません。遊べるとは書いてないです。いろいろテストできるよって書いてあります。ついワクワク感が先行してしまって