前任者から引き継いだ開発環境(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