有一个文件美国石油学会包含ansible的配置:
config/application.properties:
server.port: 6081
system.default.lang: rus
api.pdd.url: "http://{{ stage['PDD'] }}"
api.policy.alias: "integration"
api.order.url: "http://{{ stage['Order'] }}
api.foo.url: "http://{{ stage['FOO'] }}
有一个阶段.yml包含键和阶段值:
default_node:
Order: '172.16.100.40:8811'
PDD: '172.16.100.41:8090'
FOO: '10.100.0.11:3165
事实上,这些文件更大,“stage”变量也很多。 我的任务是分析美国石油学会把它变成属性配置。问题是我无法调出值{stage['value']}}我尝试这样做:
stream = yaml.load(open('api.yml'))
result={}
result.update(stream['config/application.properties'])
context= yaml.load(open('stage.yml'))
stage={}
stage.update(context['default_node'])
text = '{% for items in result | dictsort(true)%} {{ items[0] }} = {{
items[1] }} {%endfor%}'
template = Template(text)
properti = (template.render(result=result, stage=stage))
在输出时,我得到:
server.port = 6081
system.default.lang = rus
api.pdd.url = http://{{ stage['PDD'] }}
api.policy.alias = integration
api.order.url = http://{{ stage['Order'] }}
api.foo.url = http://{{ stage['FOO'] }}
你需要得到这个:
server.port = 6081
system.default.lang = rus
api.pdd.url = 172.16.100.41:8090
api.policy.alias = "integration"
api.order.url = 172.16.100.40:8811
api.foo.url = 10.100.0.11:3165
我可以用jinja或ansible lib吗? 对不起,我英语不好
按照这种方法,您需要将
api.yml
作为模板本身来处理并呈现它。否则,jinja2会将其视为属性的简单值。这样做可以:在此之后,您将在
properti
var中看到所需的值:如果jinja2能够递归地呈现,那就太好了。也许花点时间和Environment的全局和共享模式一起工作可以实现这一点。你知道吗
希望这有帮助。你知道吗
相关问题 更多 >
编程相关推荐