This is another reminder that the Chef community guidelines apply to all posts in this list, and that “be respectful” is part of those guidelines. Thoughtful, passionate human beings work hard on the Chef server. If you need a refresher, the guidelines are available for review here: https://docs.chef.io/community_guidelines.html . I strongly suggest you familiarize yourself with these guidelines as quickly as possible, and adhere to them strictly in the future.
While it is clear that you are fed up, and your frustration is completely understandable, saying things like “this sorry situation" and "scraping eyes out with a rusty razor blade” shuts down conversation instead of inviting response. It’s possible to be open and critical when sharing your frustrations around the functionality of the Chef server, without being dismissive of the work that has gone and continues to go into creating it.
This is not the first time someone has said something to you about your rhetoric on this list. Unless you are able to show that you can understand the difference between honesty and candor, it will be the last.
On June 16, 2015 at 12:59:12 PM, Douglas Garstang (email@example.com) wrote:
So, let me summarise this sorry situation…
- By default, data about nodes isn’t available until after the chef client has run at least once.
- Node.save at the start of the run list should fix this, but it does not.
- Putting a 60s/90s sleep before the knife search, which should allow solr to complete a re-index has no effect.
- Doing a dummy run of the chef-client and pointing it to a no-op recipe to get around (1) above requires passing the -r option which has the side effect of updating the run list on the chef server so that the next call to chef-client uses the dummy cookbook, not the cookbook this node was originally provisioned to use.
- Even if node.save did work, it won’t run on vagrant and throws an error.
Did someone intentionally design chef server to induce scraping eyes out with a rusty razor blade? I’m pretty fed up.
On Tue, Jun 16, 2015 at 12:51 PM, Douglas Garstang firstname.lastname@example.org wrote:
Well, I just tried using chef-client -r dummy and that worked. However, that permanently replaces the run list on the chef server. If I now run chef-client, hoping to use the zookeeper cookbook formerly associated with the node, it’s been replaced by the dummy one. I am so frustrated.
On Tue, Jun 16, 2015 at 12:38 PM, Stephen Delano email@example.com wrote:
Sigh. I guess all I need is an empty cookbook that does nothing as node.save seems to have no effect anyway. All I need is a dummy chef client run.
How are you running this “dummy” chef-client run? If you change the run-list to remove the role role-zookeeper, your node will be persisted without this role and without the attributes associated with it. You’ll have a period of time where the roles attribute of the node does NOT contain what you’re looking for and searches will fail.
Stephen Delano - Engineering Lead, Chef
On Tue, Jun 16, 2015 at 11:50 AM, Douglas Garstang firstname.lastname@example.org wrote:
The battle continues with chef search. I’m trying to use chef search to discover zookeeper nodes. The very first thing in my run list is node.save, which seems to cause the Chef server to immediately have access to the data I need, the role and the environment.
I just did a test, where one window had the result of "knife search node “chef_environment:dev AND roles:role-zookeeper”. I could see that the data was populated immediately after the call to node.save. A few minutes later, when the recipe did it’s search, no nodes were found, as evidenced from an empty log() statement in the recipe.
I’ve run the test a few times, and basically, the result are unreliable. On my latest test, two of the nodes discovered all three nodes, and one of the nodes discovered only one node (not itself btw).
How can I make this reliable?