Chef
Ruby/Chef include_recipe 並知道父文件中的變數?
我正在嘗試在包含的文件中使用局部變數。我得到它沒有定義的錯誤。我不確定這樣做的方法,你呢?我有一個食譜文件夾:
recipes/ development.rb testing.rb config.rb
發展.rb
username = "vagrant" static = [] django = ["project1", "project2"] include_recipe "server::config" # <-- Trying to use static and django in there.
配置文件
static.each do |vhost| # <-- How do I get the "static" var in here? ... end django.each do |vhost| # <-- How do I get the "django" var in here? ... end
您不能在配方之間共享變數,但有兩種方法可以在配方之間共享數據。
- 首選路線是外部化
static
並django
作為attributes/default.rb
. 這意味著它們將在對node
像上可用並且可以從每個配方中訪問。屬性/default.rb
default["server"]["static"] = [] default["server"]["django] = ["project1", "project2"]
食譜/config.rb
node["server"]["static"].each do |vhost| ... end node["server"]["django"].each do |vhost| ... end
- 使用Chef 庫創建一個返回這些數組的通用方法。
我的建議是絕對堅持選項一,這是最常見的方法。希望有幫助!