В рецепте шеф-повара, вызывается chef-solo/vagrant. Я пытаюсь написать файл .htpasswd с объекта пользователей. Уточняю пользователей в vagrantfile
, как это ...Написать пользователям .htpasswd в рецепте шеф-повара
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
Как вы можете видеть, я жёстко полномочия Джона там - однако , Я не являюсь разработчиком Ruby и мне не хватает некоторых базовых знаний ...
Как написать все пользовательские учетные данные в атрибуте node['apache']['my_users']
(определенные в chef.json) в цикле в файл а - создание хэша пароля для каждого текстового пароля?
Примечание. Я пытаюсь избежать использования шаблона для этого простого файла.
Почему вы «пытаетесь чтобы избежать использования шаблона "? Если ваш ввод является открытым текстом, нужно сделать вычисление для хеширования учетных данных где-нибудь, если не в шаблоне, а затем в вашем коде рецепта. Если у вас есть несколько пользователей, шаблон будет способом их перебора. (иначе у вас есть цикл и построение строки в ruby). Шаблон кажется подходящим решением. – Charlie
Ну, я думал, что шаблон будет излишним для такого рода вещей. Но если вы не согласны, я открыт для предложений и с удовольствием делаю это с помощью шаблонов. В любом случае, у меня не было бы представления о том, как добавить вызов к 'htpasswd' в созвездие. – phpPhil
Итак, существует несколько способов реализовать это, вызывая 'htpasswd' для управления файлом и его содержимым (возможно, глядя на создание ресурса [execute resource] (https://docs.chef.io/resource_execute.html) для [каждый] (http://ruby-doc.org/core-2.2.0/Hash.html#method-i-each) имя пользователя/пароль. Другой способ - полностью управлять файлом в рубине. сделайте это, чтобы построить большую строку и передать ее файловому ресурсу в качестве содержимого, а другой - использовать шаблон для генерации файла. – Charlie