脳みそスワップアウト

揮発性なもので。おもにPHPのこととか。

Chef更新とcygwinから使うメモ。

概要

Chefの新バージョンが出ていたので新しく入れることにした。

インストール

http://www.getchef.com/download-chef-client/ から.msiをダウンロードする。
インストール先は C:\apps\opscode\chef-11.16.0 にした。

このようなツリーになる。

C:\apps\opscode\chef-11.16.0\
  |- chef
  |   |- bin
  |   |- embedded

動作確認(cmd.exe)

Windows版のChefは相変わらずインストール先変更に対応していない。
Rubyのパスが、デフォルトのインストール先のままなのだ。

bin/chef-shell.bat

@ECHO OFF
IF NOT "%~f0" == "~f0" GOTO :WinNT
@"ruby.exe" "c:/opscode/chef/bin/chef-shell" %1 %2 %3 %4 %5 %6 %7 %8 %9
GOTO :EOF
:WinNT
@"ruby.exe" "%~dpn0" %*

だからこうやって使う(cmd.exe)

> c:\apps\opscode\chef-11.16.0\chef\embedded\bin\ruby.exe ^
C:\apps\opscode\chef-11.16.0\chef\bin\chef-solo --version
Chef: 11.16.0

cygwin用ブリッジ作成

ブリッジ本体。
/usr/local/bin/chef_bridge

#!/bin/bash
#CHEF_HOME=/cygdrive/c/apps/opscode/chef-11.8.0/chef
CHEF_HOME=/cygdrive/c/apps/opscode/chef-11.16.0/chef
RUBY_BIN=$CHEF_HOME/embedded/bin/ruby.exe
EB_GEM_BIN_DIR=$CHEF_HOME/embedded/lib/ruby/gems/1.9.1/bin/
RUBY_SCRIPT=${0##*/}

$RUBY_BIN $(cygpath -m $EB_GEM_BIN_DIR/$RUBY_SCRIPT) $*

実行権をつけて、chef-solo のリンク作成。

$ chmod 755 /usr/local/bin/chef_bridge

$ cd /usr/local/bin
$ ln -s ./chef_bridge ./chef-solo

$ /usr/local/bin/chef-solo --version
Chef: 11.16.0

knife-soloインストール

$ cd /cygdrive/c/apps/opscode/chef-11.16.0/chef/embedded/bin/
$ ./ruby ./gem install knife-solo

Thanks for installing knife-solo!

If you run into any issues please let us know at:
  https://github.com/matschaffer/knife-solo/issues

If you are upgrading knife-solo please uninstall any old versions by
running `gem clean knife-solo` to avoid any errors.

See http://bit.ly/CHEF-3255 for more information on the knife bug
that causes this.
Successfully installed knife-solo-0.4.2
1 gem installed
Installing ri documentation for knife-solo-0.4.2...
Building YARD (yri) index for knife-solo-0.4.2...
Installing RDoc documentation for knife-solo-0.4.2...

knifeのブリッジ作成

$ cd /usr/local/bin
$ ln -s ./chef_bridge ./knife

$ /usr/local/bin/knife solo --help
FATAL: Cannot find sub command for: 'solo --help'
Available solo subcommands: (for details, knife SUB-COMMAND --help)

** SOLO COMMANDS **
knife solo bootstrap [USER@]HOSTNAME [JSON] (options)
knife solo clean [USER@]HOSTNAME
knife solo cook [USER@]HOSTNAME [JSON] (options)
knife solo init DIRECTORY
knife solo prepare [USER@]HOSTNAME [JSON] (options)

cygwin + Windows版Chef で気をつけること

ssh_configの書きかた

Chef(というかRuby?)がWindows版なので、RSA鍵の指定のしかたが違う。

IdentityFile /home/pen/.ssh/vagrant.id_rsa ではだめで、
IdentityFile C:\cygwin\home\pen\.ssh\vagrant.id_rsa としないといけない。
むむー・・。

もしかしたら /home のマウント位置次第では回避できるのかもしれない。

プロンプトは扱えない

Windows版なのでプロンプトはcmd.exe用。
cygwinからプロンプト入力(idやパスワードなど)はできない。
nopassのRSA鍵が必須。
むむー・・。