Chef-Soloを100倍楽しく使うためのrsoloというツールを作りました。
https://github.com/DQNEO/rsolo
bashで書いた1枚スクリプトなのでインストールが超簡単です。
rubyなしで動きます。
なので、
「 knife-soloをインストールするためのGemfileを書くためのbundlerをインストールするためのgemをインストールするためのrubyをインストールするためのrbenvをインストーするための、えーと人生ってなんだっけ」
という苦行からあなたを開放してくれます。
Let's not do yakshaving !!
インストールが超簡単!
ダウンロードして実行権限をつけてパスを通すだけ!$ curl -sO https://raw.githubusercontent.com/DQNEO/rsolo/master/rsolo
$ chmod 0755 rsolo
$ sudo mv rsolo /usr/local/bin/
使い方は knife-soloとほぼ同じ
knife-solo を使ったことのある方は、違和感なく乗り換えできるでしょう。# リモートサーバにChefをインストールする
$ rsolo prepare user@host
# リモートサーバにレシピを転送して実行する
$ rsolo cook user@host
使わなそうなオプションは廃止して、knife-solo よりはだいぶシンプルになっています。詳しくは "--help" をご覧ください。
そして、knife-soloにはない面白い機能がいくつかあります。
"helloworld" サブコマンドが便利!!
これは、"helloworld"クックブックを自動生成してリモート実行(prepare + cook)してくれます。# helloworld クックブックを自動作成してリモート実行する
$ rsolo helloworld user@host
これは何のためにあるかというと、Chefはレシピの最初の1行目を書き始めるまでが大変なので、そこを自動化して敷居を下げるのが目的です。私はかねがね、「Chefは"hello world"をするための敷居が高すぎる(手順が多すぎる)」のが問題だと考えていました。
それを解決してくれるのがこの "helloworld"サブコマンドです。
参考:もっとより良いChef-SoloのHello World
Vagrant連携機能が便利!!
Vagrant環境で knife solo cook を実行しようとすると、普通はこんな感じになってしまいます。$ vagrant ssh-config --host=vagrant >> ~/.ssh/config
$ knife solo cook vagrant
しかし作っては壊す仮想マシンのために ~/.ssh/config が汚れるのは嫌なものです。また、複数の仮想マシンを使う場合は host名がかぶらないように名前を管理する必要があります。
このような状態管理を避けるために一時ファイルを使えば解決できますが、
$ vagrant ssh-config --host=tmphost > tmpconfig
$ knife solo cook -F tmpconfig -N vagrant tmphost
あまりスマートではありませんね。rsoloではこの問題を解決しました。
$ rsolo cook --vagrant
これだけです!!便利!!
rsoloを作ったきっかけ
"knife-solo"のオプションの扱いにちょっとした不満があり、改善Pull Requestを送ってみたもののなかなかマージされず、もやもやしていました。ところでそもそも knife-solo とは何かというと、
「手元のレシピをリモートにrsyncで転送した後chef-soloを実行し、その出力をストリームで送り返してくれる」ものです。
ふむふむ。
え、ちょっと待って。
それってrsyncとsshでやればよくね?
と思いませんか?私は思いました。
それならいっそのこと自分で代替プロダクトを作ったほうが早いだろうと思い、bashスクリプトで実装 してみたら1日でできた、というのが経緯です。
試しに自分の仕事環境で使ってみたらめちゃめちゃ便利だったので、ぜひみなさんも使ってみてください。
それでは Happy Provisioning!!