Как создать файл .htpasswd для nginx, используя chef - PullRequest
0 голосов
/ 22 марта 2019

Я новичок в шеф-поваре, и я пытаюсь сгенерировать файл .htpasswd для хранения хэша пользователя, я просмотрел некоторые ссылки , но это не помогает.Мне нужен 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 работает нормально, используя ресурс execute, но ресурс execute не работает внутри ресурса шаблона, поэтому не отражается в файле .htpasswd. Я действительно запутался.Большое спасибо за вашу помощь ^^

Ответы [ 2 ]

1 голос
/ 15 апреля 2019

Вы также можете использовать рецепт для этого https://github.com/redguide/htpasswd с комбинацией пакетов данных для шифрования вашего пароля (а также имени пользователя).

htpasswd "/etc/nginx/htpassword" do
  user "foo"
  password "bar"
end
1 голос
/ 23 марта 2019

следующий фрагмент рецепта может быть вам полезен ...

предполагает, что вы знакомы с зашифрованной сумкой данных и что вы сохранили свои учетные данные в сумке данных с именем 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
...