LoginSignup
6
6

More than 5 years have passed since last update.

ChefのCommunity Cookbookの挙動をwrapper cookbookで書き換える(例:細かいバージョン指定ができないものを出来るようにする)

Posted at

wrapper使え使えと言われますが、できないことが多く見えすぎてこれどうするの…と途方に暮れる方も多そうです。

例えば

chef-percona
https://github.com/phlipper/chef-percona

## Atttibute
default["percona"]["version"] = "5.6"
default["percona"]["server"]["package"]                       = "Percona-Server-server-#{version.tr('.', '')}"

...

## recipes/server.rb
package node["percona"]["server"]["package"] do
  action :install
end

となっていてインストール時にマイナーバージョンが指定できません。
こういう場合はversionを指定するために全部書き換えないとダメ…というわけではないです。
wrapper cookbookでバージョンを指定できるよう変更する例。

# wrapper-cookbook::default.rb

include_recipe 'percona::server'

r = resources(package: 'Percona-Server-server-56')
r.version('5.6.16-rel64.1.el6')

例えばこのようにRubyからChefのResourceを呼び出して直接パラメータを変更することで、Resourceの実行前に挙動を変更することが出来ます。

attribute化するならこんな感じでしょうか。

# wrapper-cookbook attribute/default.rb
default["percona"]["server"]["package"]["version"] = '5.6.16-rel64.1.el6'

# wrapper-cookbook::default.rb

include_recipe 'percona::server'

r = resources(package: node["percona"]["server"]["package"])
r.version( node["percona"]["server"]["package"]["version"] )

※すいません。attributeのほうは動作確認していません

参考:
・Changing Chef Resources at Runtime
https://sethvargo.com/changing-chef-resources-at-runtime/

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6