我有以下(简化的)玩法:
- hosts: testing
roles:
- nginx
vars_files:
- config.yml
environment:
http_proxy: http://proxy.example.com:8080
所以现在,当我运行代码时,我可以阅读
process.env.http_proxy
。不过,我希望能够在environment
下动态设置其他环境变量。例如,在我的config.yml
中,我有以下内容:
application_variables:
- key: "NODE_ENV"
value: "production"
- key: "PORT"
value: "3000"
如何从 application_variables 中获取要在环境下动态创建的值?我尝试了几种不同的解决方案,但发现都无济于事。
提前致谢
您可以从模板化 Jinja 表达式中提供
environment
参数,根据您的情况:
environment: "{{ application_variables | items2dict }}"
然后您可以选择:
application_variables
列表中:
application_variables:
- key: http_proxy
value: http://proxy.example.com:8080
- key: NODE_ENV
value: production
- key: PORT
value: 3000
combine
从 application_variables
创建的字典,并在剧本中定义了变量:
- hosts: testing
environment: >-
{{
default_env | combine(
application_variables | items2dict
)
}}
vars:
default_env:
http_proxy: http://proxy.example.com:8080