私はのように実行環境に、適用しようとしていることをEC2インスタンスのプロビジョニングのためのレシピがあります。シェフ - マシン・リソース内で適用されるレシピの内部オーバーライドされた属性を使用して
chef-client -z -o 'myapp::dev_create'
デフォルトを
default['myapp_provisioner'].tap do |myapp_provisioner|
myapp_provisioner['node_name'] = 'test'
end
myappの:: dev_createレシピは以下のように定義されています:
ファイルは次のように定義された属性.RBrequire 'chef/provisioning'
Chef::Config.chef_provisioning({
:machine_max_wait_time => 240
})
# Override environment specific configs
node.override['myapp_provisioner']['node_name'] = 'RULZ_DEV'
include_recipe 'myapp_provisioner::ec2_instance' # sets machine_options
# The line below prints "RULZ_DEV"
# as it is overridden above
puts node['myapp_provisioner']['node_name']
machine node['myapp_provisioner']['node_name'] do
chef_environment 'DEV'
admin true # run as sudo
recipe 'myapp::copy_tls_certs'
role 'reverse_proxy'
role 'app_server'
end
レシピmyappの:: copy_tls_certsは次のように定義されています。私は以前Chef Environment not overriding recipe called inside a machine resource
として質問を題していたが、私がいることを実感するようになった
を更新しました
node_name = node['myapp_provisioner']['node_name']
# The line below prints the value from default attributes "test"
puts "cert path ---------------> #{node_name}"
問題は環境に関連するものではなく、マシンリソース内でこれらの属性をオーバーライドして使用する属性に関するものです。私はここで何か非常に根本的な何かを見逃しているように感じる?
不明'copy_tls_certs'レシピ。これは、慎重に行うつもりでない限り、物事を修正してはならない理由です。P – coderanger
@coderanger、Thanskが帰ってきた、私は物事を修正することの意味に従わず、意図的に何かを修正しようとしていませんでした(私はあなたがredactによって何を意味するかによると思います)。とにかく、問題が環境を適用することではなく、マシンリソースの実行リスト内のオーバーライドされた属性を使用していることを認識した後で、私は質問を更新しました –