Puppet Strings 是一个 rubygem,可以安装在 Puppet 之上,并且可以输出包含类参数列表、文档等的 JSON 文档。
安装后(参见上面的链接),在 shell 或 Python 程序中运行此命令以生成 JSON:
puppet strings generate --emit-json-stdout init.pp
这将生成:
{
"puppet_classes": [
{
"name": "test_module",
"file": "init.pp",
"line": 1,
"docstring": {
"text": "",
"tags": [
{
"tag_name": "param",
"text": "",
"types": [
"Any"
],
"name": "first_param"
},
{
"tag_name": "param",
"text": "",
"types": [
"Any"
],
"name": "second_param"
}
]
},
"defaults": {
"first_param": "'test'",
"second_param": "'new'"
},
"source": "class test_module(\n $first_param = 'test',\n $second_param = 'new' ) {\n}"
}
]
}
(为简洁起见,略微修剪了 JSON)
您可以使用json.loads 在 Python 中加载 JSON,并从 root["puppet_classes"]["docstring"]["tags"](其中 tag_name 是 param)中提取参数名称以及从 root["puppet_classes"]["defaults"] 中提取任何默认值。