【发布时间】:2020-01-15 19:46:39
【问题描述】:
要将两个证书放入盒子中,然后将它们添加到钱包中,我使用了以下代码。
RDS_CA_CERTS = %w[ cert1.cer cert2.cer]
RDS_CA_CERTS.each do |rds_ca_cert|
cookbook_file "/oracle_home/ssl_wallet/#{rds_ca_cert}" do
source "certs/#{rds_ca_cert}"
owner 'oracle'
group 'dba'
mode '0644'
action :create
notifies :run, 'execute[import_rds_cert]', :immediately
end
execute 'import_rds_cert' do
command "orapki wallet add -wallet /oracle_home/ssl_wallet -trusted_cert -cert /oracle_home/ssl_wallet/#{rds_ca_cert} -auto_login_only"
user 'oracle'
group 'dba'
umask '0025'
action :nothing
end
end
我期待上面的代码会引入一个文件 cert1.cer 并触发相同的执行。然后它将引入 cert2.cer 并使用触发器执行。 这样只有在添加文件时才会触发执行(执行资源的门)
但是在 TK 中观察到的行为对我来说有点奇怪。它引入了 cert1.cer 文件,然后当它触发执行时失败,说 cert2.cer 不存在。 仅当在触发执行之前循环已移至下一个文件时,才会发生这种情况。
你能解释一下这种行为吗? 有什么更好的替代方法?
【问题讨论】:
标签: ruby chef-infra