My personal preference is to avoid node attributes for everything
unless they are populated by ohai. Because I don't feel like its
automated if I have to type "knife node edit" to have a fully working
node.
You could also store the node attributes in a json file, e.g. initially via `knife node show <nodename> -Fjson > nodes/<nodename>.json` and keep this under version control. Now whenever you change node attributes, you modify the local json file, then use `knife node from file nodes/<nodename>.json` to bulk update the node attributes in an automation-friendly way.
IMHO `knife node edit` is dangerous and should be avoided if you want "infrastructure-as-code"