Chefの新バージョン(0.10.14)で"dry-run"ができるようになった!

ちょっと気付くのに遅れたのですが、9/7に"Chef"の最新バージョンである0.10.14がリリースされました。


そう、0.10.14と言えば待望の「dry-run」(--noop mode)の機能が付くと、本家のIssue Trackerでも挙がっていたんです。


DevOps Days Tokyo 2012でも、Opscodeの方から言及があったので、僕的には心待ちにしていました。

あと、Chefのdry-runについては、既に実装がかなり進んでいて、近々0.10.14?あたりでリリースされるという話も聞けて、かなり満足。

「DevOps Days Tokyo 2012」でChefの話をしてきたので資料を公開します - 元RX-7乗りの適当な日々


というわけで早速、簡単にですが試してみましたYO!

# chef-client -v
Chef: 10.14.0

とりあえずバージョンアップ。

-W, --why-run                    Enable whyrun mode

"--help"で確認。このオプションです。

# chef-client -W

というわけで、"-W"オプションを付けて実行してみます。

# chef-client -W
[Mon, 10 Sep 2012 19:45:34 +0900] WARN: Forcing formatter of 'doc' to capture whyrun output.
Starting Chef Client, version 10.14.0
[Mon, 10 Sep 2012 19:45:34 +0900] INFO: *** Chef 10.14.0 ***
[Mon, 10 Sep 2012 19:45:35 +0900] INFO: Run List is [recipe[memcached::recipe-name]]
[Mon, 10 Sep 2012 19:45:35 +0900] INFO: Run List expands to [memcached::recipe-name]
[Mon, 10 Sep 2012 19:45:35 +0900] INFO: Starting Chef Run for chef-test01
[Mon, 10 Sep 2012 19:45:35 +0900] INFO: Running start handlers
[Mon, 10 Sep 2012 19:45:35 +0900] INFO: Start handlers complete.
resolving cookbooks for run list: ["memcached::recipe-name"]
[Mon, 10 Sep 2012 19:45:35 +0900] INFO: Loading cookbooks [memcached]
Synchronizing Cookbooks:

  - memcached
Compiling Cookbooks...
Converging 12 resources
Recipe: memcached::recipe-name
  * package[memcached] action install[Mon, 10 Sep 2012 19:45:35 +0900] INFO: Processing package[memcached] action install (memcached::recipe-name line 12)

    - Would install version 1.4.13-1 of package memcached

↑の例だと、まずはパッケージがインストールされることがわかります。こんな感じでRecipeに書かれてある通りにですが、何が起こるかがズラズラと表記されていきます。

    - Would create template[/etc/memcached.conf]
        --- /tmp/chef-tempfile20120910-30172-p2q4lz-0   2012-09-10 19:45:52.093074595 +0900
        +++ /tmp/chef-rendered-template20120910-30172-1mqpz0l-0 2012-09-10 19:45:52.082073426 +0900
        @@ -0,0 +1,35 @@
        +
        +###### <<<<< before /usr/local/bin/memcached -help >>>> #####
        +#-p <num>      TCP port number to listen on (default: 11211)
        +#-U <num>      UDP port number to listen on (default: 0, off)
        +#-s <file>     unix socket path to listen on (disables network support)
        +#-l <ip_addr>  interface to listen on, default is INDRR_ANY
        +#-d            run as a daemon

・・・・・省略・・・・・

template respurceで配置している設定ファイルも、各リソースのコンパイルが実施された後なので、attributeから代入された値も確認できました。

こんな感じで、定義しているresourceの1つ1つで、どういうことが起こるのかを、少し読みづらい形ではありますが、きちんと確認することができますね。

  * package[hoge-fuga] action install[Mon, 10 Sep 2012 19:45:38 +0900] INFO: Processing package[hoge-fuga] action install (memcached::recipe-name line 12)

    * No version specified, and no candidate version available for hoge-fuga
    * Assuming a repository that offers hoge-fuga would have been configured

ちなみに存在しないパッケージを入れようとすると、ないよーと言ってくれる。ダメなやつは、もうちょっと大々的にアピールしてほしい気もしますが。

[Mon, 10 Sep 2012 19:45:52 +0900] WARN: In whyrun mode, so NOT performing node save.
[Mon, 10 Sep 2012 19:45:52 +0900] INFO: Chef Run complete in 17.244036 seconds
[Mon, 10 Sep 2012 19:45:52 +0900] INFO: Running report handlers
[Mon, 10 Sep 2012 19:45:52 +0900] INFO: Report handlers complete
Chef Client finished, 13 resources updated

無事、dry-runが終わると、変更が予定されているリソースの数が記載されていますね。
ちなみにchef-server側は特にバージョンアップせずとも使うことができました。(サーバは0.10.8でした)


Chefは、これまでDry runができなかったことが、Puppetなどと比べ物足りない点としてありましたが、機能自体のファーストリリースであることを考えると、これはかなり便利に使えるようになったと思います。さらに今後の改善に期待できますね!

それでは!=͟͟͞͞(๑•̀=͟͟͞͞(๑•̀д•́=͟͟͞͞(๑•̀д•́๑)=͟͟͞͞(๑•̀д•́

あわせて読みたい


Test-Driven Infrastructure With Chef

Test-Driven Infrastructure With Chef