在厨师食谱中将用户写入 .htpasswd
Write users to .htpasswd in chef recipe
在 chef-solo / vagrant 调用的厨师食谱中,我试图从用户对象编写一个 .htpasswd 文件。
我这样指定 vagrantfile
中的用户...
chef.json = {
:apache => {
...
:my_users => {
:john => "test",
:matt => "test2"
}
...
目前我的主厨食谱是这样的:
file "/etc/apache2/.htpasswd" do
content "john:n5MfEoHOIQkKg"
owner "#{node['apache']['user']}"
group "#{node['apache']['group']}"
mode '0644'
action :create
end
如您所见,我在其中硬编码了 John 的凭据 - 但是,我不是 Ruby 开发人员,我在这里缺少一些非常基本的知识...
如何将 node['apache']['my_users']
属性(在 chef.json 中定义)中的所有用户凭据循环写入文件 而 创建密码每个明文密码的哈希值?
注意:我试图避免为这个简单的文件使用模板。
htpasswd 手册页看起来像是对密码使用 MD5 散列。
也许您可以 generate md5 hashes 在食谱的 Ruby 代码中?
我使用 the LWRP Charlie suggested 完成了这项工作。
第一步是将用户的定义修改为适当的数组:
chef.json = {
:apache => {
...
:my_users => [
{ :username => "john", :password => "test1" },
{ :username => "matt", :password => "test2" }
]
...
我包括 htpasswd 对元数据和 bershelf 的依赖。
然后在我的食谱中,我使用 htpasswd 调用在循环中创建用户:
node[:apache][:my_users].each do |user|
htpasswd "/etc/apache2/.htpasswd" do
user user['username']
password user['password']
end
end
您可以使用本机方式,它需要 htpasswd
安装:
execute 'set password' do
sensitive true
command "htpasswd -cb /etc/htpasswd.users #{user} #{password}"
creates '/etc/htpasswd.users'
end
file '/etc/htpasswd.users' do
owner 'www-data'
group 'www-data'
mode 0o600
end
在 chef-solo / vagrant 调用的厨师食谱中,我试图从用户对象编写一个 .htpasswd 文件。
我这样指定 vagrantfile
中的用户...
chef.json = {
:apache => {
...
:my_users => {
:john => "test",
:matt => "test2"
}
...
目前我的主厨食谱是这样的:
file "/etc/apache2/.htpasswd" do
content "john:n5MfEoHOIQkKg"
owner "#{node['apache']['user']}"
group "#{node['apache']['group']}"
mode '0644'
action :create
end
如您所见,我在其中硬编码了 John 的凭据 - 但是,我不是 Ruby 开发人员,我在这里缺少一些非常基本的知识...
如何将 node['apache']['my_users']
属性(在 chef.json 中定义)中的所有用户凭据循环写入文件 而 创建密码每个明文密码的哈希值?
注意:我试图避免为这个简单的文件使用模板。
htpasswd 手册页看起来像是对密码使用 MD5 散列。
也许您可以 generate md5 hashes 在食谱的 Ruby 代码中?
我使用 the LWRP Charlie suggested 完成了这项工作。
第一步是将用户的定义修改为适当的数组:
chef.json = {
:apache => {
...
:my_users => [
{ :username => "john", :password => "test1" },
{ :username => "matt", :password => "test2" }
]
...
我包括 htpasswd 对元数据和 bershelf 的依赖。 然后在我的食谱中,我使用 htpasswd 调用在循环中创建用户:
node[:apache][:my_users].each do |user|
htpasswd "/etc/apache2/.htpasswd" do
user user['username']
password user['password']
end
end
您可以使用本机方式,它需要 htpasswd
安装:
execute 'set password' do
sensitive true
command "htpasswd -cb /etc/htpasswd.users #{user} #{password}"
creates '/etc/htpasswd.users'
end
file '/etc/htpasswd.users' do
owner 'www-data'
group 'www-data'
mode 0o600
end