如何将系统环境变量传递给Jinja Yaml数据文件?

时间:2019-06-17 20:02:31

标签: yaml sh jinja2

我正在尝试使用jinja2执行yaml模板。我想将系统环境变量传递给数据文件,而不是直接替换它。 我有2个名为nginx.yml和config.yml的文件。我的nginx.yml如下

 server:
      listen : 80
      server_name : {{ nginx.hostname }}

      root : {{ nginx.webroot }}
      index : index.htm;

和我的config.yml如下

nginx:    主机名:localhost    webroot:“ / var / www / project”

并且如果运行命令jinja2 -f yaml nginx.yml config.yml> nginx.conf可以正常工作。但是我需要在config.yml文件中读取环境变量主机名而不是本地主机。 有人可以帮我吗

我已经设置了一个名为hostname = localhost的环境变量,然后如下更新了config.yml文件

nginx:
  hostname: {{ hostname }}
  webroot: "/var/www/project"

并运行命令jinja2 -f env nginx.yml config.yml> nginx.conf。但它引发了错误。

Traceback (most recent call last):
  File "/usr/local/bin/jinja2", line 11, in <module>
    sys.exit(main())
  File "/usr/local/lib/python2.7/dist-packages/jinja2cli/cli.py", line 424, in main
    sys.exit(cli(opts, args))
  File "/usr/local/lib/python2.7/dist-packages/jinja2cli/cli.py", line 281, in cli
    raise raise_exc(u"%s ..." % data[:60])
jinja2cli.cli.MalformedEnv: ---
nginx:
  hostname: {{ hostname }}

我希望config.yml文件应该将环境变量中的值分配给主机名,并成功运行jinja2命令。

jinja2 -f env nginx.yml config.yml> nginx.conf enter code here

0 个答案:

没有答案