以下是用于创建存储库的命令
knife vault create ldapuser user1 -A "admin,chef1.example.com" -J password.json -M client下面是显示存储库内容的命令
knife vault show ldapuser user1
id: user1
password: secretp@ssword
username: james下面是我的食谱,在最上面包括以下内容
chef_gem 'chef-vault' do
compile_time true if respond_to?(:compile_time)
action :install
end
require 'chef-vault'
item = ChefVault::Item.load("ldapuser","user1")
execute 'setup ldap' do
command '/opt/ldap/bin/setup --hostname localhost --port 389 --bindDN cn="Directory Manager" --bindPassword item[password] --ldapport 389 --baseDN "dc=example,dc=com" --addBaseEntry --doNotStart --acceptLicense`
end
execute 'run ldap' do
command '/opt/ldap/bin/ldapmodify --hostname localhost --port 389 --bindDN cn="Directory Manager" --bindPassword item[password] --filename /opt/ldap.ldif
end不幸的是,一旦设置完成,我尝试登录到我的ldap服务器,我得到一个无效凭据错误消息。
我假设这与bindPassword的变量在execute块中是如何定义的有关。我甚至尝试过使用“‘password”登录,但没有成功。但是,当我将密码(而不是使用vault)硬编码到我的菜谱中时,我能够毫无问题地登录。
我到处都找过了,似乎找不到一个有效的解决方案。请帮帮我!
发布于 2016-08-07 13:12:43
Ruby中的字符串插值看起来像这样:"something #{item['key']} else"。
重要提示:使用双引号而不是单引号,在表达式两边加上#{},并确保在#{}中正确地格式化表达式。
发布于 2018-03-25 11:54:32
在本例中,我使用chef-vault中的秘密填充auth.properties和pem文件。完整的YouTube演示在这里:How to Create and use Chef-Vault
Default.rb食谱
chef_gem 'chef-vault' do
compile_time true if respond_to?(:compile_time)
end
require 'chef-vault'
secrets = ChefVault::Item.load("vault_demo", "dev_secrets" )
directory "/opt/your_project" do
action :create
end
template '/opt/your_project/auth.properties' do
source "auth.properties.erb"
variables({
sql_password: secrets['sql_password'],
application_password: secrets['application_password']
})
action :create
end
template '/opt/your_project/server.pem' do
source "server.pem.erb"
variables({
ssl_cert: Base64.decode64(secrets['ssl_cert'])
})
action :create
end以下是模板:
auth.properties.erb
ssl_password:<%= @sql_password %>
application_password:<%= @application_password %>server.pem.erb
<%= @ssl_cert %>请注意,在配方中对pem文件进行了base64解码,因为必须对其进行编码才能存储在vault中
https://stackoverflow.com/questions/38809929
复制相似问题