- From: Tensibai Zhaoying <
>
- To:
- Subject: [chef] Re: How to pass hash password from ruby-block to user resource
- Date: Tue, 30 Sep 2014 21:56:07 +0200
Brief answer, you should use lazy attribute for the password attribute of the user resource.
Something like password lazy {password_hash }
Without it the var is evaluated at compile time and so is nil as the ruby block did not run.
And you should use the each_user var in the ruby block name to avoid overriding it on each iteration.
Don't hesitate to tell if it's unclear :)
----
a écrit ----
Hi All,
I am trying to implement a cookbook which would create users by reading
passwords from attributes file ( non hash password ex: root@
123)
And for this, my cookbook is as follows :
1. Contains of attributes file ( attributes/attr.rb )
default['my']['instance']['users']=[{uid:
1004,user_name:'m1',homedir:'/home/m1',password:'root@
111'},{uid:
1003,user_name:'m2',homedir:'/home/m2',password:'root@
222'},{uid:
1002,
user_name:'m3',homedir:'/home/m3',password:'root@
333'}]
2. Recipe :
password_hash=''
node['my']['instance']['users'].each do |each_user|
ruby_block "Generating hash password" do
block do
require 'digest/sha2'
password=each_user['password']
salt=rand(36**8).to_s(36)
shadow_hash=password.crypt("$6$" + salt)
password_hash=shadow_hash
end
end
user each_user['user_name'] do
password "#{password_hash}"
home each_user['homedir']
system true
action :create
manage_home true
uid each_user['uid']
end
end
After execution of the cookbook, respective users are created appropriately but
passwords are set blank.
Looks like the variable which I am trying to access in the password attribute
of user resource is not correct.
Please let me how can I resolve this.
Note : In my case, I dont want to use databags
Thanks,
Pratik
Archive powered by MHonArc 2.6.16.