knife solo bootstrapで対象ホストのIPとnodesファイルを指定する

knife-soloは予め~/.ssh/configのホスト名とnodes/(ホスト名).jsonでネーミングルール合わせておけば

$ knife solo bootstrap (ホスト名)

でよしなにやってくれるので大変便利なのだけど、AWSでEC2のインスタンスをポコポコ上げてIP変わると~/.ssh/configいじるのめんどい。スクリプトとかで自動化しようとすると大変困る。vagrant経由でEC2を操作するという選択肢もあるのだけど、vagrantに依存しすぎるのあんまりなのと、個人的に中間ファイルとかローカルファイルの設定に挙動が依存するのが嫌なので、調べてみたらちゃんと指定できるオプションあった。

$ knife solo bootstrap (ユーザ名)@(IPアドレス) -i (SSH鍵のパス) -N (chefのノード定義)

ポイントとしてchefのノード定義はファイルがnodes/commitm-ap.jsonの場合commitm-apだけ指定する。.jsonとかもつけてはいけない。イメージこんなかんじ。

$ knife solo bootstrap ec2-user@54.64.xxx.xxx -i ~/work/aws/aws-login.pem -N commitm-ap

これでリモートの好きなサーバーをキッティングできる。