[chef] Re: RE: Re: RE: Re: How do I set a path for roles, environments, and data bags in my knife.rb?


Chronological Thread 
  • From: AJ Christensen < >
  • To: " " < >
  • Subject: [chef] Re: RE: Re: RE: Re: How do I set a path for roles, environments, and data bags in my knife.rb?
  • Date: Thu, 8 Jan 2015 10:08:23 +1300

Use Ruby's File#expand_path or similar to build the chef_repo_path by
expanding it. I doubt it understands the '..'.

You can use something like `File.dirname(__FILE__)` inside of knife.rb
to get the directory enclosing it, then join/expand from there.

cheers,

--aj

On Thu, Jan 8, 2015 at 10:03 AM, Stephen Corbesero
< >
 wrote:
>
> Being able to set chef_repo_path does look like the cleanest way.  And it 
> makes sense to know the top of the tree.
>
> How do I set it in my knife config.
>
> I just tried both of the following
>
>    chef_repo_path "#{current_dir}/.."
>    knife[:chef_repo_path] = "#{current_dir}/.."
>
> where current_dir is expected to be the directory of my knife.rb, which is 
> in .chef under the chef-repo.
>
>
>
> --
> Stephen Corbesero, DevOps Engineer
>
>
> -----Original Message-----
> From: AJ Christensen 
> [mailto:
> Sent: Wednesday, January 07, 2015 3:48 PM
> To: 
> 
> Subject: [chef] Re: RE: Re: How do I set a path for roles, environments, 
> and data bags in my knife.rb?
>
> cookbook_path is indeed an array of strings or a string. when
> chef_repo_path is set, it is inferred to be
> `chef_repo_path/cookbooks`. otherwise it defaults to
> [chef_repo_path/cookbooks, chef_repo_path/site-cookbooks]
>
> $ knife upload environments/dev.json
>
> 'environment from file' takes a path to a file to upload. I used to
> use it with shell loops:
>
> $ for i in environments/*.json ; do knife environment from file $i ; done
>
> I think chef_repo_path is what you are after. With that set correctly,
> environments inferred default will be correct, e.g.
> CHEF_REPO_PATH/environments.
> https://github.com/opscode/chef/blob/master/lib/chef/config.rb#L186
>
> hope this helps~
>
> cheers,
>
> --aj
>
> On Thu, Jan 8, 2015 at 9:39 AM, Stephen Corbesero
> < >
>  wrote:
>> Thanks for the link..  I am looking at it now.
>>
>> According to my understanding of that code, it looks like it should be 
>> trying to set the default "top" to be the directory above the cookbooks 
>> path.  I have two issues with that.
>>
>> 1. The cookbook path is usually an array, not a simple string.  I even 
>> made my cookbook path just a string, and it still failed.
>>
>> 2. When I try to depend on a path for the other objects, I get an error 
>> message like the following:
>>
>>          % knife environment from file dev.json
>>          ERROR: Could not find or open file 'dev.json' in current 
>> directory or in 'environments/dev.json'
>>
>> Which is implying that path it is using for the lookup is just 
>> "environments/" and not anything that I have set, or anything that knows 
>> about the top of the chef-repo
>>
>>
>>
>> --
>> Stephen Corbesero, DevOps Engineer
>>
>>
>> -----Original Message-----
>> From: AJ Christensen 
>> [mailto:
>> Sent: Wednesday, January 07, 2015 3:23 PM
>> To: 
>
>> Subject: [chef] Re: How do I set a path for roles, environments, and data 
>> bags in my knife.rb?
>>
>https://github.com/opscode/chef/blob/master/lib/chef/config.rb#L111-L128
>>
>> On Thu, Jan 8, 2015 at 9:13 AM, Stephen Corbesero 
>> < >
>>  wrote:
>>>
>>>
>>> The knife.rb lets you specify a cookbook_path.
>>>
>>>
>>>
>>> I want to get the same effect for roles, environments, and data bags.
>>>
>>>
>>>
>>> I have the following in my knife.rb file
>>>
>>>
>>>
>>> current_dir = File.dirname(__FILE__)
>>>
>>> cookbook_path  ["#{current_dir}/../cookbooks"]
>>>
>>>
>>>
>>> # the following don't seem to work.  :(
>>>
>>>
>>>
>>> role_path           ["#{current_dir}/../roles"]
>>>
>>> environment_path   ["#{current_dir}/../environments"]
>>>
>>> data_bag_path       ["#{current_dir}/../data_bags"]
>>>
>>>
>>>
>>> I remember seeing how to do this somewhere along time ago, but I can’t
>>> find the original reference.  I have been looking, and I see several
>>> references that strongly imply these should work, or something similar
>>> like making the object name plural (roles_path)
>>>
>>>
>>>
>>> I have tried several permutations, including  statements like
>>> knife[:role_path] = …, but nothing seems to work.
>>>
>>>
>>>
>>> Is it possible  What is the correct format?
>>>
>>>
>>>
>>> Thanks in advance.
>>>
>>>
>>>
>>> --
>>>
>>> Stephen Corbesero, DevOps Engineer
>>>
>>> Synchronoss - Mobile Innovation for a Connected World
>>>
>>> 
>>>  | www.synchronoss.com
>>>
>>>
>>>
>>>



Archive powered by MHonArc 2.6.16.

§