[chef] Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Chef and LDAP Users


Chronological Thread 
  • From: Douglas Garstang < >
  • To:
  • Subject: [chef] Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Chef and LDAP Users
  • Date: Thu, 31 Jul 2014 11:12:47 -0700

AJ,

That's because I don't understand your example. I thought I'd try something simple I could understand first. I would really benefit from some documentation clearly describing the difference between compile and converge, which also provides use cases with examples. I think a lot of people could benefit from that.

Douglas.



On Thu, Jul 31, 2014 at 11:10 AM, AJ Christensen < " target="_blank"> > wrote:
You ignored all of my examples and ran the code at Shell Out code at
compile time. It will be executed before the other LDAP stuff is
actually converged.

Don't be such a support vampire bro.

--AJ

On Fri, Aug 1, 2014 at 5:59 AM, Douglas Garstang
< "> > wrote:
> AJ,
>
> Thanks. I'm really not a ruby guy. It will take me considerable time to work
> out your gist. I tried this. I thought the call to Mixlib::ShellOut would
> fork a new process and therefore get me the correct result. However,
> cmd.stdout is empty on the first run, and contains the correct getent passwd
> reply on the second run, so I assume it's the same issue...
>
> include_recipe "foo-ldap"
>
> bag = data_bag("ssh-keys")
> for item in bag do
>
>     user = data_bag_item('ssh-keys', item)
>     user_name = user['id']
>
>     execute "create_homedir" do
>         command "mkdir /home/#{user_name}"
>         creates "/home/#{user_name}"
>         action :run
>     end
>
>     log "USER_NAME = #{user_name}"
>     cmd = Mixlib::ShellOut.new("getent passwd #{user_name}")
>     cmd.run_command
>     log ">>>>>>>>>>>>>>>>>>>>>>>>>>> NODE_DATA  = #{cmd.stdout}"
>     ent_array = cmd.stdout.split(':')
>     user_id = ent_array[2]
>     group_id = ent_array[3]
>
>     execute "homedir_perms" do
>         command "chown #{user_id}.#{group_id} /home/#{user_name}"
>         action :run
>     end
>
> end
>
>
>
> On Wed, Jul 30, 2014 at 5:25 PM, AJ Christensen < "> > wrote:
>>
>> I meant to link to this too re: Mixlib ShellOut:
>>
>> https://github.com/opscode/chef/blob/master/lib/chef/mixin/shell_out.rb#L29-L39
>>
>> 'git grep shell_out' in the Chef codebase, haha! You'll see all of the
>> places this is used.
>>
>> --aj
>>
>> On Thu, Jul 31, 2014 at 12:22 PM, AJ Christensen < "> > wrote:
>> > If you 'include Chef::Mixin::ShellOut' in a custom library, you can
>> > use #shell_out! there.
>> >
>> > using the lazy attribute evaluator and the Mixin ShellOut classes'
>> > shell_out!() functionality, something like this outta' work:
>> > https://gist.github.com/fujin/f0b7dd38b558001c5913
>> >
>> > --aj
>> >
>> > On Thu, Jul 31, 2014 at 12:03 PM, Daniel DeLeo < "> >
>> > wrote:
>> >> On Wednesday, July 30, 2014 at 5:00 PM, Douglas Garstang wrote:
>> >>> AJ,
>> >>>
>> >>> Thanks. One more question... shelling out in chef and grabbing the
>> >>> output... has never been an easy task... best approach?
>> >>>
>> >>> I was able to do this just now with the execute resource, I guess
>> >>> because that forks a new process too. It would be nice though to call getent
>> >>> in some fashion, and the parse the output, so that I could be sure that the
>> >>> group id I am assigning is the correct one for the user. At the moment it's
>> >>> coming out of a data bag.
>> >>>
>> >>> Also kinda gross.
>> >>>
>> >>> Doug
>> >> Well, it’ll be a little gross, but I think you’ll have to use a lazy
>> >> attribute
>> >> http://docs.getchef.com/resource_common.html#lazy-attribute-evaluation
>> >>
>> >> In the code block you give to `lazy`, you can use backticks or %x to
>> >> run a command that returns the UID.
>> >>
>> >>
>> >> --
>> >> Daniel DeLeo
>> >>
>> >>
>> >>
>
>
>
>
> --
> Regards,
>
> Douglas Garstang
> http://www.linkedin.com/in/garstang
> Email: ">
> Cell: +1-805-340-5627



--
Regards,

Douglas Garstang
http://www.linkedin.com/in/garstang
Email: ">
Cell: +1-805-340-5627



Archive powered by MHonArc 2.6.16.

§