[chef] Re: Re: Re: new cookbook: authconfig for RHEL/CentOS/compat


Chronological Thread 
  • From: RILINDO FOSTER < >
  • To:
  • Subject: [chef] Re: Re: Re: new cookbook: authconfig for RHEL/CentOS/compat
  • Date: Sat, 21 Jan 2012 18:32:37 -0500

Yep. I am able to successfully authenticate. It is the same config values I 
used in my kickstart file, so it worked once I got the recipe to be 
recognized.

I'll build out another CentOS machine (I run a very underpowered KVM host at 
home, so I can do that. :) ) and try out your suggestion. Stay tuned.

 - Rilindo


On Jan 21, 2012, at 6:25 PM, Jesse Campbell wrote:

> hmm okay...
> i'm still confused by the error message though...
> perhaps the include i the ldapauthtls.rb caused it to run the
> authconfig recipe twice? perhaps remove the include_recipe, and change
> the run_list order so that your ldapauthtls.rb comes first... that is
> all I can think of.
> 
> Does it work? is it connecting to your ldap server?
> 
> On Sat, Jan 21, 2012 at 18:17, RILINDO FOSTER 
> < >
>  wrote:
>> Its a fresh build of CentOS, newly build made especially for your 
>> cookbook. :) And it appears all the variables have been set correctly in 
>> authconfig:
>
>> stardust:cookbooks rilindo$ more authconfig/recipes/ldapauthtls.rb
>> include_recipe "authconfig"
>
>> node.override['authconfig']['sssd']['enable'] = true
>> node.override['authconfig']['ldap']['enable'] = true
>> node.override['authconfig']['ldap']['tls'] = true
>> node.override['authconfig']['ldap']['server'] = 'kerberos.example.com'
>> node.override['authconfig']['ldap']['basedn'] = 'dc=example,dc=com'
>> node.override['authconfig']['ldap']['auth'] = true
>> node.override['authconfig']['ldap']['cacerturl'] = 
>> 'http://192.168.15.100/mirrors/ks/keys/cacert.pem'
>
>
>>  sysconfig]# cat authconfig
>> USEMKHOMEDIR=no
>> USEPAMACCESS=no
>> CACHECREDENTIALS=yes
>> USESSSDAUTH=no
>> USESHADOW=yes
>> USEWINBIND=no
>> PASSWDALGORITHM=sha512
>> FORCELEGACY=no
>> USEFPRINTD=no
>> USEHESIOD=no
>> FORCESMARTCARD=no
>> USEDB=no
>> USELDAPAUTH=yes
>> USELDAP=yes
>> USECRACKLIB=yes
>> USEWINBINDAUTH=no
>> USESMARTCARD=no
>> USELOCAUTHORIZE=yes
>> USENIS=no
>> USEKERBEROS=no
>> USESYSNETAUTH=no
>> USESSSD=yes
>> USEPASSWDQC=no
>
>> It is important that it did work. The configuration stayed idempotent even 
>> after that error. I just not sure if I doing it right by using a recipe to 
>> override the node attribute.
>
>>  - Rilindo
>
>> On Jan 21, 2012, at 6:08 PM, Jesse Campbell wrote:
>
>>> hmm. well that is somewhat unexpected.
>>> 
>>> Which linux are you running?
>>> Sorry, I had only tested this on centos 6.1, and i hadn't expanded
>>> testing beyond that yet...
>>> 
>>> try taking a look at /etc/authconfig/arguments and see if all your
>>> variables ended up in there correctly...
>>> also, try running the authconfig command by itself with no arguments
>>> at all... it should list off all of the possible command line
>>> arguments, and maybe there are some unsupported ones...
>>> 
>>> which makes me think I may need a more robust way to check which
>>> arguments are supported by authconfig besides just checking the node's
>>> distribution version.
>>> 
>>> -Jesse
>>> 
>>> On Sat, Jan 21, 2012 at 18:01, RILINDO FOSTER 
>>> < >
>>>  wrote:
>>>> That sort of got me further.
>>>> 
>>>> I added the following in the recipe file:
>>>> 
>>>> include_recipe "authconfig"
>>>> 
>>>> Which does not appear to have any effect. Then I add the authconfig in 
>>>> the
>>>> run list first:
>>>> 
>>>> stardust:cookbooks rilindo$ knife node run_list add ldaptls
>>>> "recipe[authconfig::ldapauthtls]"
>>>> run_list:
>>>>     recipe[chef-client]
>>>>     recipe[ohai]
>>>>     recipe[authconfig]
>>>>     recipe[authconfig::ldapauthtls]
>>>> 
>>>> And that did it. However, restarting chef-client again returns the
>>>> following:
>>>> 
>>>> [Sat, 21 Jan 2012 17:53:25 -0500] INFO: Processing
>>>> execute[authconfig-update] action run (authconfig::default line 23)
>>>> [Sat, 21 Jan 2012 17:53:25 -0500] INFO: execute[authconfig-update]
>>>> sh(/bin/cat /etc/authconfig/arguments | /usr/bin/xargs 
>>>> /usr/sbin/authconfig
>>>> --update)
>>>> [Sat, 21 Jan 2012 17:53:29 -0500] FATAL: SIGTERM received, stopping
>>>> [Sat, 21 Jan 2012 17:53:29 -0500] ERROR: Running exception handlers
>>>> [Sat, 21 Jan 2012 17:53:30 -0500] FATAL: Saving node information to
>>>> /var/chef/cache/failed-run-data.json
>>>> [Sat, 21 Jan 2012 17:53:30 -0500] ERROR: Exception handlers complete
>>>> 
>>>> 
>>>> Looking at the run file, I see:
>>>> 
>>>>   "exception": "SystemExit: exit",
>>>>   "backtrace": [
>>>> 
>>>> "/usr/lib64/ruby/gems/1.9.1/gems/chef-0.10.8/lib/chef/application.rb:143:in
>>>> `exit'",
>>>> 
>>>> "/usr/lib64/ruby/gems/1.9.1/gems/chef-0.10.8/lib/chef/application.rb:143:in
>>>> `fatal!'",
>>>> 
>>>> "/usr/lib64/ruby/gems/1.9.1/gems/chef-0.10.8/lib/chef/application.rb:35:in
>>>> `block in initialize'",
>>>> 
>>>> "/usr/lib64/ruby/gems/1.9.1/gems/chef-0.10.8/lib/chef/shell_out/unix.rb:31:in
>>>> `call'",
>>>> 
>>>> "/usr/lib64/ruby/gems/1.9.1/gems/chef-0.10.8/lib/chef/shell_out/unix.rb:31:in
>>>> `select'",
>>>> 
>>>> "/usr/lib64/ruby/gems/1.9.1/gems/chef-0.10.8/lib/chef/shell_out/unix.rb:31:in
>>>> `run_command'",
>>>> 
>>>> "/usr/lib64/ruby/gems/1.9.1/gems/chef-0.10.8/lib/chef/shell_out.rb:180:in
>>>> `run_command'",
>>>> 
>>>> "/usr/lib64/ruby/gems/1.9.1/gems/chef-0.10.8/lib/chef/mixin/shell_out.rb:30:in
>>>> `shell_out'",
>>>> 
>>>> "/usr/lib64/ruby/gems/1.9.1/gems/chef-0.10.8/lib/chef/mixin/shell_out.rb:35:in
>>>> `shell_out!'",
>>>> 
>>>> "/usr/lib64/ruby/gems/1.9.1/gems/chef-0.10.8/lib/chef/provider/execute.rb:58:in
>>>> `action_run'",
>>>>     
>>>> "/usr/lib64/ruby/gems/1.9.1/gems/chef-0.10.8/lib/chef/resource.rb:440:in
>>>> `run_action'",
>>>>     "/usr/lib64/ruby/gems/1.9.1/gems/chef-0.10.8/lib/chef/runner.rb:45:in
>>>> `run_action'",
>>>>     "/usr/lib64/ruby/gems/1.9.1/gems/chef-0.10.8/lib/chef/runner.rb:53:in
>>>> `block in run_action'",
>>>>     "/usr/lib64/ruby/gems/1.9.1/gems/chef-0.10.8/lib/chef/runner.rb:51:in
>>>> `each'",
>>>>     "/usr/lib64/ruby/gems/1.9.1/gems/chef-0.10.8/lib/chef/runner.rb:51:in
>>>> `run_action'",
>>>>     "/usr/lib64/ruby/gems/1.9.1/gems/chef-0.10.8/lib/chef/runner.rb:81:in
>>>> `block (2 levels) in converge'",
>>>>     "/usr/lib64/ruby/gems/1.9.1/gems/chef-0.10.8/lib/chef/runner.rb:81:in
>>>> `each'",
>>>>     "/usr/lib64/ruby/gems/1.9.1/gems/chef-0.10.8/lib/chef/runner.rb:81:in
>>>> `block in converge'",
>>>> 
>>>> "/usr/lib64/ruby/gems/1.9.1/gems/chef-0.10.8/lib/chef/resource_collection.rb:94:in
>>>> `block in execute_each_resource'",
>>>> 
>>>> "/usr/lib64/ruby/gems/1.9.1/gems/chef-0.10.8/lib/chef/resource_collection/stepable_iterator.rb:116:in
>>>> `call'",
>>>> 
>>>> "/usr/lib64/ruby/gems/1.9.1/gems/chef-0.10.8/lib/chef/resource_collection/stepable_iterator.rb:116:in
>>>> `call_iterator_block'",
>>>> 
>>>> "/usr/lib64/ruby/gems/1.9.1/gems/chef-0.10.8/lib/chef/resource_collection/stepable_iterator.rb:85:in
>>>> `step'",
>>>> 
>>>> "/usr/lib64/ruby/gems/1.9.1/gems/chef-0.10.8/lib/chef/resource_collection/stepable_iterator.rb:104:in
>>>> `iterate'",
>>>> 
>>>> "/usr/lib64/ruby/gems/1.9.1/gems/chef-0.10.8/lib/chef/resource_collection/stepable_iterator.rb:55:in
>>>> `each_with_index'",
>>>> 
>>>> "/usr/lib64/ruby/gems/1.9.1/gems/chef-0.10.8/lib/chef/resource_collection.rb:92:in
>>>> `execute_each_resource'",
>>>>     "/usr/lib64/ruby/gems/1.9.1/gems/chef-0.10.8/lib/chef/runner.rb:76:in
>>>> `converge'",
>>>>     
>>>> "/usr/lib64/ruby/gems/1.9.1/gems/chef-0.10.8/lib/chef/client.rb:312:in
>>>> `converge'",
>>>>     
>>>> "/usr/lib64/ruby/gems/1.9.1/gems/chef-0.10.8/lib/chef/client.rb:160:in
>>>> `run'",
>>>> 
>>>> "/usr/lib64/ruby/gems/1.9.1/gems/chef-0.10.8/lib/chef/application/client.rb:239:in
>>>> `block in run_application'",
>>>> 
>>>> "/usr/lib64/ruby/gems/1.9.1/gems/chef-0.10.8/lib/chef/application/client.rb:229:in
>>>> `loop'",
>>>> 
>>>> "/usr/lib64/ruby/gems/1.9.1/gems/chef-0.10.8/lib/chef/application/client.rb:229:in
>>>> `run_application'",
>>>> 
>>>> "/usr/lib64/ruby/gems/1.9.1/gems/chef-0.10.8/lib/chef/application.rb:67:in
>>>> `run'",
>>>>     "/usr/lib64/ruby/gems/1.9.1/gems/chef-0.10.8/bin/chef-client:26:in 
>>>> `<top
>>>> (required)>'",
>>>>     "/usr/bin/chef-client:19:in `load'",
>>>>     "/usr/bin/chef-client:19:in `<main>'"
>>>>   ]
>>>> }[
>>>> 
>>>> 
>>>> I am going to expose my inexperience with chef and say that I am not 
>>>> sure if
>>>> this the right way to go. If the preferable way is to set through the 
>>>> role
>>>> or node attributes (although I am not sure how to do the latter), then 
>>>> I'll
>>>> do that instead.  :)
>>>> 
>>>>  - Rilindo
>>>> 
>>>> 
>>>> On Jan 21, 2012, at 5:42 PM, Jesse Campbell wrote:
>>>> 
>>>> Hmm...
>>>> I usually set the overrides on the chef server through role or node
>>>> attributes, i haven't before tried to set them on the node directly with 
>>>> a
>>>> file... Though it may work regardless.
>>>> You may need to include the authconfig default recipe ( 
>>>> recipe[authconfig] )
>>>> 
>>>> On Jan 21, 2012 5:24 PM, "RILINDO FOSTER" 
>>>> < >
>>>>  wrote:
>>>>> 
>>>>> Testing it out, I set the attributes as such in a recipe file:
>>>>> 
>>>>> stardust:recipes rilindo$ more ldapauthtls.rb
>>>>> node.override['authconfig']['sssd']['enable'] = true
>>>>> node.override['authconfig']['ldap']['enable'] = true
>>>>> node.override['authconfig']['ldap']['tls'] = true
>>>>> node.override['authconfig']['ldap']['server'] = 'kerberos.example.com'
>>>>> node.override['authconfig']['ldap']['basedn'] = 'dc=example,dc=com'
>>>>> node.override['authconfig']['ldap']['auth'] = true
>>>>> node.override['authconfig']['ldap']['cacerturl'] =
>>>>> 'http://192.168.15.100/mirrors/ks/keys/cacert.pem'
>>>>> 
>>>>> And added it in:
>>>>> 
>>>>> 
>>>>> stardust:recipes rilindo$ knife node run_list add ldaptls
>>>>> "recipe[authconfig::ldapauthtls]"
>>>>> run_list:
>>>>>    recipe[chef-client]
>>>>>    recipe[ohai]
>>>>>    recipe[authconfig::ldapauthtls]
>>>>> 
>>>>> And restarted chef-client on my test node. So far, it didn't set the
>>>>> configs as intended.
>>>>> 
>>>>> Perhaps it is my inexperience with chef getting in the way, but is this
>>>>> the right way to set it up?
>>>>> 
>>>>> - Rilindo
>>>>> 
>>>>> On Jan 21, 2012, at 12:45 PM, Jesse Campbell wrote:
>>>>> 
>>>>> I was looking for a cookbook to manage ldap configuration on centos
>>>>> 6.1 vms that I'd spun up, as well as our other 300-odd centos 5.5 vms.
>>>>> 
>>>>> First looked at the openldap cookbook and wasn't terribly impressed...
>>>>> it has lots of dependencies on debian locations of things that I'd
>>>>> have to mess about with to make it work with centos.
>>>>> 
>>>>> Authconfig is a built-in CLI for managing auth configuration, be it
>>>>> for ldap, winbind, kerberos, nis, etc. It automagically updates all of
>>>>> the required files, using the new SSSD subsystem on EL6 systems.
>>>>> Rather than reinventing that wheel, I decided to take advantage of the
>>>>> built-in and call out to it from chef.
>>>>> 
>>>>> There was no method i found for telling authconfig to pull the
>>>>> configuration from a file, so instead I build out an arguments list
>>>>> from node attributes. If the file changes, it will re-run authconfig,
>>>>> so it is idempotent.
>>>>> The defaults follow what came on a bare centos 6.1 system, but should
>>>>> work with others.
>>>>> 
>>>>> Current issue:
>>>>> the functionality to tell winbind to join a domain is not included, it
>>>>> seemed to need an admin user specified, and likely would prompt for a
>>>>> password. Not having a domain server to test against, I did not have
>>>>> any way to find out.
>>>>> 
>>>>> http://community.opscode.com/cookbooks/authconfig
>>>>> 
>>>>> I have only tested this on CentOS 6 so far, but would appreciate if
>>>>> anyone else tries it to let me know if it works, or bugs they run
>>>>> into...
>>>>> 
>>>>> Thanks!
>>>>> -Jesse
>>>>> 
>>>>> 
>>>> 
>




Archive powered by MHonArc 2.6.16.

§