Chef Solo Cookbook Path


#1

I was trying to write a recipe to configure someone’s chef client with
chef-solo. The solo.rb has:

cookbook_path “/home/doug/slice-chef-setup”

That’s about the only thing that seems to work. These don’t:

cookbook_path "slice-chef-setup"
cookbook_path "~/slice-chef-setup"
cookbook_path “.” (that really confused chef, as “.” appears to be
somewhere else.

Running with:
chef-solo -c solo.rb -o “recipe[slice-chef-setup::default]” -j doug.json

I’ve also tried removing the cookbook path altogether. No help. I’d like to
make this portable (with real current working directory from users
perspective). How do I do this?

It would also be nice if I could supply the contents of doug.json on the
command line. In a file also isn’t very porable.

Doug


#2

. refers to the current working directory, not the location of the script. Use File.dirname(FILE) to get the directory containing the script you’re executing. Use File.expand_path(File.join(“~”, “slice-chef-setup”)) to get the full path to ~/slice-chef-setup

On Monday, February 9, 2015 at 2:35 PM, Douglas Garstang wrote:

I was trying to write a recipe to configure someone’s chef client with chef-solo. The solo.rb has:

cookbook_path “/home/doug/slice-chef-setup”

That’s about the only thing that seems to work. These don’t:

cookbook_path "slice-chef-setup"
cookbook_path "~/slice-chef-setup"
cookbook_path “.” (that really confused chef, as “.” appears to be somewhere else.

Running with:
chef-solo -c solo.rb -o “recipe[slice-chef-setup::default]” -j doug.json

I’ve also tried removing the cookbook path altogether. No help. I’d like to make this portable (with real current working directory from users perspective). How do I do this?

It would also be nice if I could supply the contents of doug.json on the command line. In a file also isn’t very porable.

Doug


#3

If you want to do a relative path, you’ll need to base it off of where the
solo.rb file lives

For example if your solo.rb is in /home/doug/.chef/solo.rb

cookbook_path File.join(File.expand_path(’…/…/’, FILE),
‘slice-chef-setup’)

On Mon, Feb 9, 2015 at 12:35 PM, Douglas Garstang doug.garstang@gmail.com
wrote:

I was trying to write a recipe to configure someone’s chef client with
chef-solo. The solo.rb has:

cookbook_path “/home/doug/slice-chef-setup”

That’s about the only thing that seems to work. These don’t:

cookbook_path "slice-chef-setup"
cookbook_path "~/slice-chef-setup"
cookbook_path “.” (that really confused chef, as “.” appears to be
somewhere else.

Running with:
chef-solo -c solo.rb -o “recipe[slice-chef-setup::default]” -j doug.json

I’ve also tried removing the cookbook path altogether. No help. I’d like
to make this portable (with real current working directory from users
perspective). How do I do this?

It would also be nice if I could supply the contents of doug.json on the
command line. In a file also isn’t very porable.

Doug


#4

Thanks Brandon. Much better.

Might as well throw my next question into this thread. Is there a way to
display a block of text back to the console at the completion of the solo
run, without the debug stuff prefixed to the front?

Doug.

On Mon, Feb 9, 2015 at 11:43 AM, Brandon Raabe brandocorp@gmail.com wrote:

If you want to do a relative path, you’ll need to base it off of where the
solo.rb file lives

For example if your solo.rb is in /home/doug/.chef/solo.rb

cookbook_path File.join(File.expand_path(’…/…/’, FILE),
‘slice-chef-setup’)

On Mon, Feb 9, 2015 at 12:35 PM, Douglas Garstang <doug.garstang@gmail.com

wrote:

I was trying to write a recipe to configure someone’s chef client with
chef-solo. The solo.rb has:

cookbook_path “/home/doug/slice-chef-setup”

That’s about the only thing that seems to work. These don’t:

cookbook_path "slice-chef-setup"
cookbook_path "~/slice-chef-setup"
cookbook_path “.” (that really confused chef, as “.” appears to be
somewhere else.

Running with:
chef-solo -c solo.rb -o “recipe[slice-chef-setup::default]” -j doug.json

I’ve also tried removing the cookbook path altogether. No help. I’d like
to make this portable (with real current working directory from users
perspective). How do I do this?

It would also be nice if I could supply the contents of doug.json on the
command line. In a file also isn’t very porable.

Doug


Regards,

Douglas Garstang
http://www.linkedin.com/in/garstang
Email: doug.garstang@gmail.com
Cell: +1-805-340-5627


#5

You could use a report handler to do something like that. Take a look at
the following for more information:

https://docs.chef.io/handlers.html
https://supermarket.chef.io/cookbooks/chef_handler

On Mon, Feb 9, 2015 at 12:44 PM, Douglas Garstang doug.garstang@gmail.com
wrote:

Thanks Brandon. Much better.

Might as well throw my next question into this thread. Is there a way to
display a block of text back to the console at the completion of the solo
run, without the debug stuff prefixed to the front?

Doug.

On Mon, Feb 9, 2015 at 11:43 AM, Brandon Raabe brandocorp@gmail.com
wrote:

If you want to do a relative path, you’ll need to base it off of where
the solo.rb file lives

For example if your solo.rb is in /home/doug/.chef/solo.rb

cookbook_path File.join(File.expand_path(’…/…/’, FILE),
‘slice-chef-setup’)

On Mon, Feb 9, 2015 at 12:35 PM, Douglas Garstang <
doug.garstang@gmail.com> wrote:

I was trying to write a recipe to configure someone’s chef client with
chef-solo. The solo.rb has:

cookbook_path “/home/doug/slice-chef-setup”

That’s about the only thing that seems to work. These don’t:

cookbook_path "slice-chef-setup"
cookbook_path "~/slice-chef-setup"
cookbook_path “.” (that really confused chef, as “.” appears to be
somewhere else.

Running with:
chef-solo -c solo.rb -o “recipe[slice-chef-setup::default]” -j doug.json

I’ve also tried removing the cookbook path altogether. No help. I’d like
to make this portable (with real current working directory from users
perspective). How do I do this?

It would also be nice if I could supply the contents of doug.json on the
command line. In a file also isn’t very porable.

Doug


Regards,

Douglas Garstang
http://www.linkedin.com/in/garstang
Email: doug.garstang@gmail.com
Cell: +1-805-340-5627


#6

Ah. I’ve looked at the chef handler stuff many times. I still have no clue
how to implement any of it unfortunately.

On Mon, Feb 9, 2015 at 11:52 AM, Brandon Raabe brandocorp@gmail.com wrote:

You could use a report handler to do something like that. Take a look at
the following for more information:

https://docs.chef.io/handlers.html
https://supermarket.chef.io/cookbooks/chef_handler

On Mon, Feb 9, 2015 at 12:44 PM, Douglas Garstang <doug.garstang@gmail.com

wrote:

Thanks Brandon. Much better.

Might as well throw my next question into this thread. Is there a way to
display a block of text back to the console at the completion of the solo
run, without the debug stuff prefixed to the front?

Doug.

On Mon, Feb 9, 2015 at 11:43 AM, Brandon Raabe brandocorp@gmail.com
wrote:

If you want to do a relative path, you’ll need to base it off of where
the solo.rb file lives

For example if your solo.rb is in /home/doug/.chef/solo.rb

cookbook_path File.join(File.expand_path(’…/…/’, FILE),
‘slice-chef-setup’)

On Mon, Feb 9, 2015 at 12:35 PM, Douglas Garstang <
doug.garstang@gmail.com> wrote:

I was trying to write a recipe to configure someone’s chef client with
chef-solo. The solo.rb has:

cookbook_path “/home/doug/slice-chef-setup”

That’s about the only thing that seems to work. These don’t:

cookbook_path "slice-chef-setup"
cookbook_path "~/slice-chef-setup"
cookbook_path “.” (that really confused chef, as “.” appears to be
somewhere else.

Running with:
chef-solo -c solo.rb -o “recipe[slice-chef-setup::default]” -j doug.json

I’ve also tried removing the cookbook path altogether. No help. I’d
like to make this portable (with real current working directory from users
perspective). How do I do this?

It would also be nice if I could supply the contents of doug.json on
the command line. In a file also isn’t very porable.

Doug


Regards,

Douglas Garstang
http://www.linkedin.com/in/garstang
Email: doug.garstang@gmail.com
Cell: +1-805-340-5627


Regards,

Douglas Garstang
http://www.linkedin.com/in/garstang
Email: doug.garstang@gmail.com
Cell: +1-805-340-5627