How to Notify a resource from another recipe


I want to understand how can we notify a resource of a recipe from another recipe. Let me describe a scenario to explain my question.

I have 4 nodes (node1, node2, node3 and node4) and I need to perform 4 tasks (task1, task2, task3 and task4) on each node. I need to perform all the 16 tasks (4x4) in a specific order.

  1. Task1 on Node1
  2. Task1 on Node2
  3. Task1 on Node3
  4. Task1 on Node4
  5. Task2 on Node1
  6. Task2 on Node2
  7. Task2 on Node3
  8. Task2 on Node4
  9. Task4 on Node4
    NOTE: Task1 on each node are NOT identical
    Now there are 16 number of activities and execution of each of the above activity depends on the completion of previous one. I am planning to achieve this through “Notify a resource of one recipe from another resource” but I am not able to find a way how a resource of one recipe (runlist of a node) can start execution of a resource of other recipe (runlist of other node).




Again each nodes resource pool is independent and not accessible from the outside. Assuming the node is connected to chef server, then that is where the node gets its runlist. That can be changed by the node itself or by a user on the chef server.

You can run queries against the attributes of all the nodes in the same org on the server, which I believe includes the runlist. Using this method, you could at best (or worst, point of view)

  1. deamonize your client
  2. Modify the runlist at the end of each complete pass
  3. Skip running the pass on the node, until the previous nodes runlist has changed.

Obviously, this is very convoluted, and I really don’t love it (or even like it).
I would strongly encourage you to dig into why 4 machines need to be configured in such a precise order. It seems like an antiquated approach.