chefのnodesのinterfaceがうざかった

chefはbootstrapなりconvergeしたときにレシピの情報やohaiで取得した情報をnodesファイルに保存してくれるのだけど、dockerを起動しているnodeだとdocker0やveth-xxxxのようなdocker起動ごとに変わるifも学習したりして、都度差分がでて、git管理してるとうざかったりする。

そういうときは .knife.rb に下記のようにwhitelistを書いてやるといい。(blacklistでも可能)

knife[:automatic_attribute_whitelist] = %w(
  virtualization/
  fqdn/
  os/
  os_version/
  hostname
  ipaddress/
  roles/
  recipes/
  ipaddress/
  platform/
  platform_version/
  chef_packages/
  network/interfaces/lo  # こんな感じで必要なIFだけ書く
  network/interfaces/ens3
)

こうするとchefをapplyするごとにnodesに不要な差分が出なくて便利。