Chef v13でtimezone-iiを使う(なるべく使わない方が良い)

  • 0
    Like
  • 2
    Comment

    前任者から引き継いだ開発環境(Vagrant + Chef)が起動できなかったのでメモ。
    今更感がすごい気がしますが。。

    実施環境

    • OS: macOS Sierra (10.12.6)
    • Vagrant: 1.9.8
    • Virtualbox: 5.1.26 r117224
    • Chef Client: 13.3.42
    • Ruby: 2.4.1p111
    • Box: ubuntu/trusty64

    エラー

    NoMethodError
    -------------
    undefined method `tz=' for #<Chef::Node...>
    

    原因

    timezone-iiがハッシュでドット記法を使っているため。

    対応

    1. timezone-iiを使わない(推奨)

    プロジェクト自体が死んでいるようなので、そもそも使わない方が良い。
    PRはたくさん出ているが全くマージされていない(後述の修正を含むPRも出ている)。

    2. ドット記法を修正する

    こんな感じでcookbookを編集する。

    attributes/default.rb
    // 修正前
    default.tz = value_for_platform_family(
      〜中略〜
    )
    
    // 修正後
    default['tz'] = value_for_platform_family(
      〜中略〜
    )
    

    一括置換
    Atomとか: ([a-zA-Z]).([a-zA-Z_]+) を \$1['$2']
    Vim: %s/(\a).([a-zA-Z_]+)/\1['\2']/g