我的程序是用Python编写的,我的配置文件是yaml。 我想在我的yaml文件中使用变量和一些数学表达式。 (例如:$ var + $ offset)似乎Ansible支持两者,但我不熟悉Ansible,不确定我是否只能导入处理yaml配置的部分。任何帮助将不胜感激。
参考: Ansible - Can I use arithmetic when setting a variable value?
更新
理想情况下,我想将Ansible的playbook功能用作库。这里描述的东西:http://oriolrius.cat/blog/2015/01/21/using-ansible-like-library-programming-in-python/但我无法使其工作似乎说明已经过时了。
答案 0 :(得分:6)
Ansible支持使用Jinja模板。您可以在任何类型的文件中设置变量,并根据您的需要将其发送到远程。
您可以使用Jinja语法({{variable}})引用YAML中的变量,更多信息here。
如果您需要对所述变量执行其他操作,也可以使用templates。
根据您发送的示例,您可以使用jinja math:
vars:
your_result: "{{ your_var + your_offset }}"
答案 1 :(得分:0)
最后我想出了怎么做。我只需要使用jinja2库而不是尝试将Ansible用作库。 (Ansible的playbook功能只是Jinja语法的一种实现)
感谢@Rebeca Maia,他通过提及Jinja来激励我。
这是一个代码示例 - python文件:
import os
from jinja2 import Environment, FileSystemLoader
import yaml
DIR_PATH = os.path.dirname(os.path.realpath(__file__))
env = Environment(loader=FileSystemLoader(DIR_PATH))
template = env.get_template("test_config.yaml")
c = template.render(name='John Doe', val=10)
# yaml :)
config_vals = yaml.load(c)
print config_vals
yaml文件
email: "python-test-user@hotmail.com"
user: {{name}}
age: {{10+val}}