我是厨师新手,我正在尝试生成一个.htpasswd文件来存储用户哈希,我经历了一些links,但这没有帮助。我需要ngnix来保护Kibana,我想为使用openssl的用户生成密码。我创建了一个模板文件.htpasswd_temp.erb它看起来像这样:
<% @kibana_user.each do |user| %>
<%= user %>:
<% end %>
我的食谱是:
kibana_configs = node['kibana']['kibana_auth']
template 'path/to/.htpasswd' do
source '.htpasswd_temp.erb '
variables(
kibana_user: kibana_configs['kiba_user']
)
end
我创建了一个角色文件,我已经定义了所有默认属性(包括kiba_user)。上面的代码将用户添加到.htpasswd文件,但我不知道如何使用openssl生成密码。 Openssl命令使用执行资源工作正常,但执行资源在模板资源内不起作用,因此不会反映在.htpasswd文件中。我真的很困惑。非常感谢你的帮助^^
以下食谱片段可能对您有用...
它假定您熟悉encrypted data bag并且您已将您的凭证存储在名为creds
的数据包中,加密项目名为nginx
,其中包含username
和password
密钥。
htpassed_file = '/root/.htpasswd'
chef_gem 'htauth'
ruby_block 'create .htpasswd' do
block do
require 'htauth'
creds = data_bag_item('creds', 'nginx')
HTAuth::PasswdFile.open(htpassed_file, HTAuth::File::CREATE) do |pf|
pf.add(creds['username'], creds['password'])
end
FileUtils.chmod 0o600, htpassed_file
end
end
您可以使用配方以及https://github.com/redguide/htpasswd与数据包的组合来加密您的密码(以及用户名)。
htpasswd "/etc/nginx/htpassword" do
user "foo"
password "bar"
end