Yup, I'd very much prefer the node attribute method you mentioned, specifically if it takes advantage of builtin Chef conditionals a la:

In `recipes/*.rb` (like this file) every place you've added the `not_if`, instead do:
``` ruby
action node['resolv']['conf_template_action']
```

Then in `./attributes/default.rb`, add:
``` ruby
default['resolv']['conf_template_action'] = :create
```

And finally, in your Vagrant configuration, do this in the config block:
``` ruby
  config.vm.provision :chef_solo do |chef|
    chef.json = {
      'resolv' => {
        'conf_template_action' => :nothing
      }
    }
    # ...
  end
```

I admit this is more complex than a flag file, but I believe it is considerably more flexible as we can change node attributes from many places without having to alter cookbooks or ssh onto boxes.

&lt;/2cents&gt;