从 Chef 中的加密数据包中检索秘密值
Retrieving secret value from encyrpted data bag in Chef
我正在使用 ruby 块来获取秘密值。但是,我想以某种方式更改它,以便秘密不存储为节点属性。否则,在 Chef 中查看属性时可以看到它。
ruby_block 'load_acl_master_token' do
block do
secret = Chef::EncryptedDataBagItem.load_secret("/etc/chef/app_encrypted_data_bag_secret")
acl_master_token = Chef::EncryptedDataBagItem.load("app_consul_secrets", "app_consul_acl_mastertoken", secret)
node.set['cluster']['acl_master_token'] = acl_master_token['keyval']
end
only_if { node['cluster']['acl'] == true }
end
bootstrap_json = Chef::JSONCompat.to_json_pretty(node['consul']['config'].to_hash)
rb_bootstrap_hash = JSON.parse(bootstrap_json)
require "active_support/core_ext/hash"
rb_cluster_hash_acl_master_token = rb_bootstrap_hash.deep_merge({ "acl_master_token" => acl_master_token['uuidgen'] } )
如何以更高效的方式编写相同的代码?
代码如下所示
rb_cluster_hash_acl_master_token = rb_bootstrap_hash.deep_merge({ "acl_master_token" => acl_master_token['uuidgen'] } )
而且,我得到这个错误
NameError
---------
No resource, method, or local variable named acl_master_token' for Chef::Recipe "server"' `
我是否应该将 acl_master_token['uuidgen']
设为 lazy attribute
。如果是,它会是什么样子??
只是重写目前使用节点属性的代码,改用数据包?效率不是问题,说到做到就好
我可以使用 lambda 与 Chef 一起延迟计算任意变量。
rb_cluster_hash_acl_master_token = lambda { rb_cluster_hash_acl_policy.deep_merge({ "acl_master_token" => acl_master_token['uuidgen'] } ) }
我正在使用 ruby 块来获取秘密值。但是,我想以某种方式更改它,以便秘密不存储为节点属性。否则,在 Chef 中查看属性时可以看到它。
ruby_block 'load_acl_master_token' do
block do
secret = Chef::EncryptedDataBagItem.load_secret("/etc/chef/app_encrypted_data_bag_secret")
acl_master_token = Chef::EncryptedDataBagItem.load("app_consul_secrets", "app_consul_acl_mastertoken", secret)
node.set['cluster']['acl_master_token'] = acl_master_token['keyval']
end
only_if { node['cluster']['acl'] == true }
end
bootstrap_json = Chef::JSONCompat.to_json_pretty(node['consul']['config'].to_hash)
rb_bootstrap_hash = JSON.parse(bootstrap_json)
require "active_support/core_ext/hash"
rb_cluster_hash_acl_master_token = rb_bootstrap_hash.deep_merge({ "acl_master_token" => acl_master_token['uuidgen'] } )
如何以更高效的方式编写相同的代码?
代码如下所示
rb_cluster_hash_acl_master_token = rb_bootstrap_hash.deep_merge({ "acl_master_token" => acl_master_token['uuidgen'] } )
而且,我得到这个错误
NameError
---------
No resource, method, or local variable named acl_master_token' for Chef::Recipe "server"' `
我是否应该将 acl_master_token['uuidgen']
设为 lazy attribute
。如果是,它会是什么样子??
只是重写目前使用节点属性的代码,改用数据包?效率不是问题,说到做到就好
我可以使用 lambda 与 Chef 一起延迟计算任意变量。
rb_cluster_hash_acl_master_token = lambda { rb_cluster_hash_acl_policy.deep_merge({ "acl_master_token" => acl_master_token['uuidgen'] } ) }