I must admit I'm unsure if it fits the crowbar model to add a role, as opposed to setting an attribute that will then be used to decide whether to include the recipe or not...

That being said, you're missing two things:
 - a ```else``` that would make sure that the role is removed from a node if it's not supposed to have it
 - some code that tries to ensure that the same nodes will keep the role if you apply the proposal several times (instead of having the node without mongodb change every time)