如何在模板中使用保管库项目?

时间:2016-07-14 01:15:14

标签: ruby chef chef-recipe

我正在学习厨师。

我有这个食谱:

chef_gem 'chef-vault' do
  compile_time true if respond_to?(:compile_time)
end

require 'chef-vault'

vault = ChefVault::Item.load("vault01", "vaultitem1")

log 'DEBUG' do
  message vault['myuser']
  level :info
end

directory 'c:/blah'

template 'c:/blah/template.txt' do
  source 'template.txt.erb'
end

您可以看到我从配方中的保险库中获取价值。

我应该如何将这些值插入我的模板文件?

有没有办法可以从我的template.txt.erb中获取保险库vaules?

1 个答案:

答案 0 :(得分:1)

使用variables属性。您传递一个哈希值,然后这些键可用作模板中的变量:

template 'c:/blah/template.txt' do
  source 'template.txt.erb'
  variables vault: ChefVault::Item.load("vault01", "vaultitem1")
end

# and then in the template
<%= @vault['foo'] %>

另请查看chef-vault cookbook(与chef-vault gem不同),它有一个很好的chef_vault_item()帮助器,可以让测试更轻松。