Azure Key Vault Chef 食谱
Azure Key Vault Chef Cookbook
我是编码新手,但正在学习。我希望有人可以帮助查看我在网上找到的这段 ruby 代码,它有助于从 Azure 密钥保管库中获取秘密。我将其粘贴在下面。我只需要帮助澄清每个代码块所指的内容。
不确定下面的代码指的是什么。我知道它们是属性,但它们是如何工作的?
node.default['azurespn']['client_id'] = azurespn[node.environment]['client_id']
node.default['azurespn']['tenant_id'] = azurespn[node.environment]['tenant_id']
node.default['azurespn']['client_secret'] = azurespn[node.environment]['client_secret']
食谱:
# retrieve the secret stored in azure key vault using this chef recipe
include_recipe 'microsoft_azure'
azurespn = data_bag_item('azurespn', 'azurespnenv')
node.default['azurespn']['client_id'] = azurespn[node.environment]['client_id']
node.default['azurespn']['tenant_id'] = azurespn[node.environment]['tenant_id']
node.default['azurespn']['client_secret'] = azurespn[node.environment]['client_secret']
spn = {
'tenant_id' => "#{node['azurespn']['tenant_id']}",
'client_id' => "#{node['azurespn']['client_id']}",
'secret' => "#{node['azurespn']['client_secret']}"
}
secret = vault_secret("#{node['windowsnode']['vault_name']}", "#{node['windowsnode']
['secret']}", spn)
file 'c:/jenkins/secret' do
action :create
content "#{secret}"
rights :full_control, 'Administrators', :one_level_deep => true
end
Chef::Log.info("secret is '#{secret}' ")
问。不确定下面的代码指的是什么。我知道它们是属性,但它们是如何工作的?
正如您所理解的,这段代码正在设置一些节点属性。这些属性的值正在从数据包中读取(在上面的行中),即 azurespn = data_bag_item('azurespn', 'azurespnenv')
现在azurespn
变量包含数据包项azurespnenv
的内容。为了更好地理解,请尝试 knife data bag show azurespn azurespnenv
。我创建了一个虚拟数据包结构只是为了说明。
dev:
client_id: win10
client_secret: topsecret
tenant_id: testtenant
qa:
client_id: ubuntu
client_secret: changeme
tenant_id: footenant
id: azurespnenv
在这个数据包中,我们有两个环境——dev
和qa
。
我们以1行为例:
node.default['azurespn']['client_id'] = azurespn[node.environment]['client_id']
因此 azurespn[node.environment]['client_id']
将根据该节点的 Chef 环境选择合适的 client_id
。转化为:
node.default['azurespn']['client_id'] = azurespn['dev']['client_id']
#=> 'win10'
node.default['azurespn']['client_id'] = azurespn['qa']['client_id']
#=> 'ubuntu'
我是编码新手,但正在学习。我希望有人可以帮助查看我在网上找到的这段 ruby 代码,它有助于从 Azure 密钥保管库中获取秘密。我将其粘贴在下面。我只需要帮助澄清每个代码块所指的内容。
不确定下面的代码指的是什么。我知道它们是属性,但它们是如何工作的?
node.default['azurespn']['client_id'] = azurespn[node.environment]['client_id']
node.default['azurespn']['tenant_id'] = azurespn[node.environment]['tenant_id']
node.default['azurespn']['client_secret'] = azurespn[node.environment]['client_secret']
食谱:
# retrieve the secret stored in azure key vault using this chef recipe
include_recipe 'microsoft_azure'
azurespn = data_bag_item('azurespn', 'azurespnenv')
node.default['azurespn']['client_id'] = azurespn[node.environment]['client_id']
node.default['azurespn']['tenant_id'] = azurespn[node.environment]['tenant_id']
node.default['azurespn']['client_secret'] = azurespn[node.environment]['client_secret']
spn = {
'tenant_id' => "#{node['azurespn']['tenant_id']}",
'client_id' => "#{node['azurespn']['client_id']}",
'secret' => "#{node['azurespn']['client_secret']}"
}
secret = vault_secret("#{node['windowsnode']['vault_name']}", "#{node['windowsnode']
['secret']}", spn)
file 'c:/jenkins/secret' do
action :create
content "#{secret}"
rights :full_control, 'Administrators', :one_level_deep => true
end
Chef::Log.info("secret is '#{secret}' ")
问。不确定下面的代码指的是什么。我知道它们是属性,但它们是如何工作的?
正如您所理解的,这段代码正在设置一些节点属性。这些属性的值正在从数据包中读取(在上面的行中),即 azurespn = data_bag_item('azurespn', 'azurespnenv')
现在azurespn
变量包含数据包项azurespnenv
的内容。为了更好地理解,请尝试 knife data bag show azurespn azurespnenv
。我创建了一个虚拟数据包结构只是为了说明。
dev:
client_id: win10
client_secret: topsecret
tenant_id: testtenant
qa:
client_id: ubuntu
client_secret: changeme
tenant_id: footenant
id: azurespnenv
在这个数据包中,我们有两个环境——dev
和qa
。
我们以1行为例:
node.default['azurespn']['client_id'] = azurespn[node.environment]['client_id']
因此 azurespn[node.environment]['client_id']
将根据该节点的 Chef 环境选择合适的 client_id
。转化为:
node.default['azurespn']['client_id'] = azurespn['dev']['client_id']
#=> 'win10'
node.default['azurespn']['client_id'] = azurespn['qa']['client_id']
#=> 'ubuntu'