Установка переменной хранилища шеф-повара в template.erb

В моем рецепте есть элемент хранилища, определенный следующим образом.

item = ChefVault::Item.load("user","password")

Как мне назвать это в моем template.erb? Я пробовал следующее, что не работает

ROOTPASSWORD= <%= @node["testcookbook"]["user"]["password"] %>

Мой элемент хранилища выглядит так:

$ knife vault show user password
id:       password
pass: xxxxxxxxxx
username: chefuser

Я обычно делаю что-то подобное по рецепту

ROOTPASSWORD #{item['pass']}

однако я не думаю, что это сработает в шаблоне.


person jebjeb    schedule 18.08.2016    source источник


Ответы (1)


Есть два варианта решения этой проблемы, хотя второй вариант предпочтительнее, так как он сохраняет конфиденциальность ваших конфиденциальных данных.

Предположим, если ваше хранилище выглядит так:

knife vault show user password
id:       password
pass: xxxxxxxxxx
username: chefuser

Затем вы можете подойти следующим образом:

Сохранить как атрибут узла

Во-первых, если вы хотите установить пароль для объекта node и сделать его видимым, вы можете сделать что-то вроде следующего:

В рецепте:

node.default["testcookbook"]["user"]["password"] = ChefVault::Item.load("user","password")['pass']

template '/tmp/template' do
  source 'template.erb'
  owner 'root'
  group 'root'
  mode '0644'
end

В шаблоне:

ROOTPASSWORD= <%= node["testcookbook"]["user"]["password"] %>

Передайте данные в шаблон, используя variables

Во-вторых, если вы не хотите устанавливать пароль на объект node и показывать его в журналах запуска шеф-повара, вы можете сделать что-то вроде ниже: -

template '/tmp/template' do
  source 'template.erb'
  owner 'root'
  group 'root'
  mode '0644'
  sensitive true
  variables( {:password => ChefVault::Item.load("user","password")['pass']})
end

В шаблоне:

ROOTPASSWORD= <%= @password %>
person Mrigesh Priyadarshi    schedule 19.08.2016
comment
Спасибо, что нашли время объяснить это с помощью кода. Я решительно голосую за второй вариант. Если вы все равно сохраните его как атрибут узла, нет необходимости иметь его в шеф-хранилище. - person StephenKing; 19.08.2016
comment
Не могу не согласиться! - person Mrigesh Priyadarshi; 19.08.2016
comment
Приятно слышать. Я предлагаю уточнить это немного больше в вашем посте. Люди могут копировать и вставлять это, не думая и не читая обсуждение ниже. Кстати. вы можете выразить свое согласие, проголосовав за комментарии. - person StephenKing; 19.08.2016
comment
Спасибо, Мригеш. Я отредактировал первоначальный вопрос для ясности. - person jebjeb; 19.08.2016
comment
@jebjeb - Обновлено решение. - person Mrigesh Priyadarshi; 20.08.2016
comment
Спасибо, Мригеш. Ваше решение сработало отлично. Я многому научился. Еще раз, спасибо - person jebjeb; 21.08.2016