簡體   English   中英

如何將 ruby dsl chef 環境文件轉換為 JSON 格式?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM