[英]How to convert ruby dsl chef environment file to JSON format?
如何將具有 Ruby DSL 格式的廚師環境文件轉換為 json? 那可能嗎?
我想在 ruby 腳本中使用環境文件屬性,但我無法解析它。 有沒有辦法解析這些.rb 文件?
謝謝,
湯姆齊
你可以像廚師一樣做:)
https://github.com/chef/chef/blob/master/lib/chef/environment.rb
require 'chef'
Chef::Config[:environment_path] = '/path/to/directory/with/rb_file'
env = Chef::Environmment.load_from_file('environment_name') # ! => not filename!
env.to_json
我已使用此 ruby 腳本將 ruby DSL 文件轉換為 JSON。
#!/usr/bin/env ruby
envfilename = '/path/to/environment.rb'
rolefilename = '/path/to/role.rb'
role = Chef::Role.new
role.name(File.basename(rolefilename, ".rb"))
role.from_file(rolefilename)
File.open(rolefilename.gsub(".rb", ".json"),"w") {|f| f.puts(role.to_json)}
env = Chef::Environment.new
env.name(File.basename(envfilename, ".rb"))
env.from_file(envfilename)
File.open(envfilename.gsub(".rb", ".json"),"w") {|f| f.puts(env.to_json)}
我通過修改在這里找到的代碼得到了這個腳本: https://knife-zero.github.io/tips/use_ruby_dsl_for_envs_or_roles/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.