首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在配方中设置Chef Vault变量

如何在配方中设置Chef Vault变量
EN

Stack Overflow用户
提问于 2016-08-07 08:48:17
回答 2查看 513关注 0票数 0

以下是用于创建存储库的命令

代码语言:javascript
复制
knife vault create ldapuser user1 -A "admin,chef1.example.com" -J password.json -M client

下面是显示存储库内容的命令

代码语言:javascript
复制
knife vault show ldapuser user1
id:       user1
password: secretp@ssword
username: james

下面是我的食谱,在最上面包括以下内容

代码语言:javascript
复制
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)硬编码到我的菜谱中时,我能够毫无问题地登录。

我到处都找过了,似乎找不到一个有效的解决方案。请帮帮我!

EN

回答 2

Stack Overflow用户

发布于 2016-08-07 13:12:43

Ruby中的字符串插值看起来像这样:"something #{item['key']} else"

重要提示:使用双引号而不是单引号,在表达式两边加上#{},并确保在#{}中正确地格式化表达式。

票数 1
EN

Stack Overflow用户

发布于 2018-03-25 11:54:32

在本例中,我使用chef-vault中的秘密填充auth.properties和pem文件。完整的YouTube演示在这里:How to Create and use Chef-Vault

Default.rb食谱

代码语言:javascript
复制
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

代码语言:javascript
复制
ssl_password:<%= @sql_password %>
application_password:<%= @application_password %>

server.pem.erb

代码语言:javascript
复制
<%= @ssl_cert %>

请注意,在配方中对pem文件进行了base64解码,因为必须对其进行编码才能存储在vault中

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38809929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档