在 template.erb 中设置 Chef 保险库变量
Setting chef vault variable in 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']}
但是我认为这在模板中行不通。
有两种方法可以解决该问题,但应该首选第二种方法,因为它可以保护您的敏感数据的私密性。
假设,如果您的金库看起来像这样:
knife vault show user password
id: password
pass: xxxxxxxxxx
username: chefuser
然后,您可以像下面这样处理:
另存为节点属性
首先,如果你想在节点对象上设置密码并使其可见,那么
您可以执行以下操作:
食谱中:
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
将数据传递到模板
其次,如果您不想在节点对象上设置密码并让它在 chef 运行 日志中可见,那么您可以执行如下操作:-
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 %>
我的食谱中有一个保险库项目定义如下
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']}
但是我认为这在模板中行不通。
有两种方法可以解决该问题,但应该首选第二种方法,因为它可以保护您的敏感数据的私密性。
假设,如果您的金库看起来像这样:
knife vault show user password
id: password
pass: xxxxxxxxxx
username: chefuser
然后,您可以像下面这样处理:
另存为节点属性
首先,如果你想在节点对象上设置密码并使其可见,那么 您可以执行以下操作:
食谱中:
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
将数据传递到模板
其次,如果您不想在节点对象上设置密码并让它在 chef 运行 日志中可见,那么您可以执行如下操作:-
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 %>