The Chef server maintains the list of registered nodes and clients in its database. When you launch a new instance with Chef you may encounter the following error message:
*** Input CHEF_CLIENT_NODE_NAME is undefined, using: IP-0AFE6965 ... *** Starting chef-client *** Finished chef-client Printing Log ... [...] INFO: Client key C:\chef\client.pem is not present - registering [...] INFO: HTTP Request Returned 409 Conflict: Client already exists [...] INFO: HTTP Request Returned 403 Forbidden: error [...] ERROR: Running exception handlers [...] ERROR: Exception handlers complete [...] FATAL: Stacktrace dumped to C:/chef/cache/chef-stacktrace.out [...] FATAL: Please provide the contents of the stacktrace.out file if you file a bug report [...] FATAL: Net::HTTPServerException: 403 "Forbidden"
Cause:
In this case the CHEF_CLIENT_NODE_NAME already exists in the client database.You can search for it from a Bash window.
Solution:
Add a line to the Chef configuration to remove the existing node with the same node name
If you use Terraform to launch server instances and configure Chef, add this line to the Chef provisioner:
recreate_client = true
To delete nodes from the Chef server:
Use the knife command to search for the existing node from a Bash window.
To find the node in the Chef server database
knife search node '*:IP-0AFE6965'
To find the client in the Chef server database
knife search client '*:IP-0AFE6965'
If any of them found, those are leftovers from a previous launch. AWS reuse the IDs, so you have to remove the nodes from the Chef server database when you terminate the instances. To delete the unnecessary entries use the following commands:
knife node delete 'IP-0AFE6965' knife client delete 'IP-0AFE6965'
To remove the terminated instances from the Chef server database you can also use the Chef web interface.
- On the Nodes tab enter the IP address of the instance into the search box and hit Enter
- In the Actions column click the down arrow next to the instance and select Delete