我有供應EC2實例,我試圖以應用的環境,這是我作爲運行配方:廚師 - 使用內部機資源內應用的食譜被覆蓋的屬性
chef-client -z -o 'myapp::dev_create'
默認
default['myapp_provisioner'].tap do |myapp_provisioner|
myapp_provisioner['node_name'] = 'test'
end
的MyApp的:: dev_create配方被定義爲:
作爲.RB屬性文件中定義require '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被定義爲:
node_name = node['myapp_provisioner']['node_name']
# The line below prints the value from default attributes "test"
puts "cert path ---------------> #{node_name}"
更新
我以前名爲問題作爲Chef Environment not overriding recipe called inside a machine resource
,但我已經認識到的是,問題與環境無關,但僅涉及在機器資源內部覆蓋和使用這些屬性的屬性。感覺就像我在這裏錯過了一些非常重要的東西,有什麼想法?
還不清楚,如果這是一個新版本失敗,但你直上使用的不同的屬性'copy_tls_certs'配方。這就是爲什麼除非你要仔細去做,否則你不應該對它進行編輯:P – coderanger
@coderanger,Thansk爲了迴歸,我不遵循你的意思是關於編輯事物,我並不是故意試圖編輯任何東西(我想你取決於你的意思是編輯)。無論如何,我已經更新了問題後,我意識到問題不是關於應用環境,而是關於在機器資源的運行列表中使用重寫的屬性 –