Ansible 从配置动态加载环境变量

问题描述 投票:0回答:1

我有以下(简化的)玩法:

- 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 中获取要在环境下动态创建的值?我尝试了几种不同的解决方案,但发现都无济于事。

提前致谢

ansible
1个回答
0
投票

您可以从模板化 Jinja 表达式中提供

environment
参数,根据您的情况:

environment: "{{ application_variables | items2dict }}"

然后您可以选择:

  • 将 HTTP 代理变量添加到您的
    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
    
© www.soinside.com 2019 - 2024. All rights reserved.