- From:
- To: chef <
>
- Subject: [chef] trouble configuring and running chef-zero
- Date: Tue, 28 Jan 2014 23:49:33 +0000
Hello chefizens,
I'm having some difficulty configuring and running chef-zero.
I'm not using vagrant in this case. What I want to do is to clone my chef git
repo on a test host, and run chef-zero locally on that host against a
cookbook.
I have 2 directories that contain cookbooks in my chef-repo. Thus I want to
configure a cookbook_path in a config file.
I'm pointing chef-client (in local mode / "chef-zero" ) to a config file that
I think is correct (based on chef-solo experience), but I'm having problems.
The
first problem occurs when chef-zero can't find a "nodes" directory. The second
problem occurs when I work-around this "missing" nodes directory, and
chef-zero
can't find the cookbook.
Here's the "solo.rb" config file I'm using:
$ cat ~/solo.rb
root = File.absolute_path(File.dirname(__FILE__))
cookbook_path [ root + '/chef-repo/cookbooks', root +
'/chef-repo/site-cookbooks' ]
environment_path root + "/chef-repo/environments"
data_bag_path root + "/chef-repo/data_bags"
encrypted_data_bag_secret "/home/kallen/.chef/encrypted_data_bag_secret"
role_path root + "/chef-repo/roles"
(Yes, we have "site-cookbooks". A pattern that got established early on. We're
working to redesign our workflow :)
$ cd ~/dev/git
The cookbook is in fact here:
$ $ ls -ld chef-repo/site-cookbooks/zero-test
drwxrwxr-x 5 kallen kallen 106 Jan 28 23:34 chef-repo/site-cookbooks/zero-test
$ chef-client -l debug -c ~/solo.rb -z -o "recipe[zero-test]"
..snip
[2014-01-28T23:11:46+00:00] DEBUG: Client key is unspecified - skipping
registration
[2014-01-28T23:11:46+00:00] DEBUG: Building node object for
dev-kallen.foobarbaz.net
[2014-01-28T23:11:46+00:00] DEBUG: Initiating GET to
http://127.0.0.1:8889/nodes/dev-kallen.foobarbaz.net
[2014-01-28T23:11:46+00:00] DEBUG: ---- HTTP Request Header Data: ----
[2014-01-28T23:11:46+00:00] DEBUG: Accept: application/json
[2014-01-28T23:11:46+00:00] DEBUG: Accept-Encoding:
gzip;q=1.0,deflate;q=0.6,identity;q=0.3
[2014-01-28T23:11:46+00:00] DEBUG: GET nodes/dev-kallen.foobarbaz.net
[2014-01-28T23:11:46+00:00] DEBUG:
--- RESPONSE (404) ---
{
"error": [
"Object not found:
http://127.0.0.1:8889/nodes/dev-kallen.foobarbaz.net"
]
}
--- END RESPONSE ---
[2014-01-28T23:11:46+00:00] DEBUG: ---- HTTP Status and Header Data: ----
[2014-01-28T23:11:46+00:00] DEBUG: HTTP 1.1 404 Not Found
[2014-01-28T23:11:46+00:00] DEBUG: content-type: application/json
[2014-01-28T23:11:46+00:00] DEBUG: server: chef-zero
[2014-01-28T23:11:46+00:00] DEBUG: connection: close
[2014-01-28T23:11:46+00:00] DEBUG: content-length: 100
[2014-01-28T23:11:46+00:00] DEBUG: ---- End HTTP Status/Header Data ----
[2014-01-28T23:11:46+00:00] INFO: HTTP Request Returned 404 Not Found: Object
not found:
http://127.0.0.1:8889/nodes/dev-kallen.foobarbaz.net
[2014-01-28T23:11:46+00:00] DEBUG: Initiating POST to
http://127.0.0.1:8889/nodes
[2014-01-28T23:11:46+00:00] DEBUG: ---- HTTP Request Header Data: ----
[2014-01-28T23:11:46+00:00] DEBUG: Content-Type: application/json
[2014-01-28T23:11:46+00:00] DEBUG: Accept: application/json
[2014-01-28T23:11:46+00:00] DEBUG: Accept-Encoding:
gzip;q=1.0,deflate;q=0.6,identity;q=0.3
[2014-01-28T23:11:46+00:00] DEBUG: Content-Length: 181
[2014-01-28T23:11:46+00:00] DEBUG: POST nodes
--- POST BODY ---
{"name":"dev-kallen.foobarbaz.net","chef_environment":"_default","json_class":"Chef::Node","automatic":{},"normal":{},"chef_type":"node","default":
{},"override":{},"run_list":[]}
--- END POST BODY ---
[2014-01-28T23:11:46+00:00] ERROR: #<Errno::ENOENT: No such file or directory
- /home/kallen/chef-repo/nodes>
So, for fun I create the dir /home/kallen/chef-repo/ and make a symlink from
/home/kallen/dev/chef-repo/nodes to /home/kallen/chef-repo/nodes. But why is
it
looking in that location for the nodes directory? Is there a way to configure
the path?
This time, it's able to affect URI /nodes/dev-kallen.foobarbaz.net because by
hand I created that directory outside of my dev workflow. But, this time it
errors on finding the cookbook.
$ chef-client -l debug -c ~/solo.rb -z -o "recipe[zero-test]"
..snip
[2014-01-28T23:14:15+00:00] DEBUG: Client key is unspecified - skipping
registration
[2014-01-28T23:14:15+00:00] DEBUG: Building node object for
dev-kallen.foobarbaz.net
[2014-01-28T23:14:15+00:00] DEBUG: Initiating GET to
http://127.0.0.1:8889/nodes/dev-kallen.foobarbaz.net
[2014-01-28T23:14:15+00:00] DEBUG: ---- HTTP Request Header Data: ----
[2014-01-28T23:14:15+00:00] DEBUG: Accept: application/json
[2014-01-28T23:14:15+00:00] DEBUG: Accept-Encoding:
gzip;q=1.0,deflate;q=0.6,identity;q=0.3
[2014-01-28T23:14:15+00:00] DEBUG: GET nodes/dev-kallen.foobarbaz.net
[2014-01-28T23:14:15+00:00] DEBUG:
--- RESPONSE (404) ---
{
"error": [
"Object not found:
http://127.0.0.1:8889/nodes/dev-kallen.foobarbaz.net"
]
}
--- END RESPONSE ---
[2014-01-28T23:14:15+00:00] DEBUG: ---- HTTP Status and Header Data: ----
[2014-01-28T23:14:15+00:00] DEBUG: HTTP 1.1 404 Not Found
[2014-01-28T23:14:15+00:00] DEBUG: content-type: application/json
[2014-01-28T23:14:15+00:00] DEBUG: server: chef-zero
[2014-01-28T23:14:15+00:00] DEBUG: connection: close
[2014-01-28T23:14:15+00:00] DEBUG: content-length: 100
[2014-01-28T23:14:15+00:00] DEBUG: ---- End HTTP Status/Header Data ----
[2014-01-28T23:14:15+00:00] INFO: HTTP Request Returned 404 Not Found: Object
not found:
http://127.0.0.1:8889/nodes/dev-kallen.foobarbaz.net
[2014-01-28T23:14:15+00:00] DEBUG: Initiating POST to
http://127.0.0.1:8889/nodes
[2014-01-28T23:14:15+00:00] DEBUG: ---- HTTP Request Header Data: ----
[2014-01-28T23:14:15+00:00] DEBUG: Content-Type: application/json
[2014-01-28T23:14:15+00:00] DEBUG: Accept: application/json
[2014-01-28T23:14:15+00:00] DEBUG: Accept-Encoding:
gzip;q=1.0,deflate;q=0.6,identity;q=0.3
[2014-01-28T23:14:15+00:00] DEBUG: Content-Length: 181
[2014-01-28T23:14:15+00:00] DEBUG: POST nodes
--- POST BODY ---
{"name":"dev-kallen.foobarbaz.net","chef_environment":"_default","json_class":"Chef::Node","automatic":{},"normal":{},"chef_type":"node","default":{},"override":{},"run_list":[]}
--- END POST BODY ---
[2014-01-28T23:14:15+00:00] DEBUG:
--- RESPONSE (201) ---
{
"uri": "
http://127.0.0.1:8889/nodes/dev-kallen.foobarbaz.net"
}
--- END RESPONSE ---
[2014-01-28T23:14:15+00:00] DEBUG: ---- HTTP Status and Header Data: ----
[2014-01-28T23:14:15+00:00] DEBUG: HTTP 1.1 201 Created
[2014-01-28T23:14:15+00:00] DEBUG: content-type: application/json
[2014-01-28T23:14:15+00:00] DEBUG: server: chef-zero
[2014-01-28T23:14:15+00:00] DEBUG: connection: close
[2014-01-28T23:14:15+00:00] DEBUG: content-length: 70
[2014-01-28T23:14:15+00:00] DEBUG: ---- End HTTP Status/Header Data ----
[2014-01-28T23:14:15+00:00] DEBUG: Extracting run list from JSON attributes
provided on command line
[2014-01-28T23:14:15+00:00] DEBUG: Applying attributes from json file
[2014-01-28T23:14:15+00:00] DEBUG: Platform is amazon version 2013.09
[2014-01-28T23:14:15+00:00] WARN: Run List override has been provided.
[2014-01-28T23:14:15+00:00] WARN: Original Run List: []
[2014-01-28T23:14:15+00:00] WARN: Overridden Run List: [recipe[zero-test]]
[2014-01-28T23:14:15+00:00] INFO: Run List is [recipe[zero-test]]
[2014-01-28T23:14:15+00:00] INFO: Run List expands to [zero-test]
[2014-01-28T23:14:15+00:00] INFO: Starting Chef Run for
dev-kallen.foobarbaz.net
[2014-01-28T23:14:15+00:00] INFO: Running start handlers
[2014-01-28T23:14:15+00:00] INFO: Start handlers complete.
[2014-01-28T23:14:15+00:00] DEBUG: Initiating POST to
http://127.0.0.1:8889/reports/nodes/dev-kallen.foobarbaz.net/runs
...snip for brevity
[2014-01-28T23:14:15+00:00] DEBUG: Synchronizing cookbooks
resolving cookbooks for run list: ["zero-test"]
[2014-01-28T23:14:15+00:00] DEBUG: Initiating POST to
http://127.0.0.1:8889/environments/_default/cookbook_versions
[2014-01-28T23:14:15+00:00] DEBUG: ---- HTTP Request Header Data: ----
[2014-01-28T23:14:15+00:00] DEBUG: Content-Type: application/json
[2014-01-28T23:14:15+00:00] DEBUG: Accept: application/json
[2014-01-28T23:14:15+00:00] DEBUG: Accept-Encoding:
gzip;q=1.0,deflate;q=0.6,identity;q=0.3
[2014-01-28T23:14:15+00:00] DEBUG: Content-Length: 31
[2014-01-28T23:14:15+00:00] DEBUG: POST
environments/_default/cookbook_versions
--- POST BODY ---
{"run_list":["zero-test"]}
--- END POST BODY ---
[2014-01-28T23:14:15+00:00] DEBUG:
--- RESPONSE (412) ---
{
"error": [
"No such cookbook: zero-test"
]
}
--- END RESPONSE ---
[2014-01-28T23:14:15+00:00] DEBUG: ---- HTTP Status and Header Data: ----
[2014-01-28T23:14:15+00:00] DEBUG: HTTP 1.1 412 Precondition Failed
[2014-01-28T23:14:15+00:00] DEBUG: content-type: application/json
[2014-01-28T23:14:15+00:00] DEBUG: server: chef-zero
[2014-01-28T23:14:15+00:00] DEBUG: connection: close
[2014-01-28T23:14:15+00:00] DEBUG: content-length: 59
[2014-01-28T23:14:15+00:00] DEBUG: ---- End HTTP Status/Header Data ----
[2014-01-28T23:14:15+00:00] INFO: HTTP Request Returned 412 Precondition
Failed: No such cookbook: zero-test
================================================================================
Error Resolving Cookbooks for Run List:
================================================================================
Missing Cookbooks:
------------------
No such cookbook: zero-test
Last, here's something that works 100%, except that it requires me to symlink
the cookbook I want to run from the dir site-cookbooks to cookbooks.
$ cd ~/dev/git/chef-repo/
$ cd cookbooks/; ln -s ../site-cookbooks/zero-test zero-test; cd ..
$ rm -rf nodes
$ chef-client -l debug -z -o "recipe[zero-test]"
It works. The nodes dir is created, the node data created therein, and the
cookbook runs. Hrmpf?
Thanks in advance!
kallen
- [chef] trouble configuring and running chef-zero, kallen, 01/28/2014
Archive powered by MHonArc 2.6.16.