如何使用chef为nginx创建.htpasswd文件

问题描述 投票:0回答:2

我是厨师新手,我正在尝试生成一个.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文件中。我真的很困惑。非常感谢你的帮助^^

nginx openssl chef kibana .htpasswd
2个回答
1
投票

以下食谱片段可能对您有用...

它假定您熟悉encrypted data bag并且您已将您的凭证存储在名为creds的数据包中,加密项目名为nginx,其中包含usernamepassword密钥。

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

1
投票

您可以使用配方以及https://github.com/redguide/htpasswd与数据包的组合来加密您的密码(以及用户名)。

htpasswd "/etc/nginx/htpassword" do
  user "foo"
  password "bar"
end
© www.soinside.com 2019 - 2024. All rights reserved.