【问题标题】:Ansible - Include environment variables from external YMLAnsible - 包括来自外部 YML 的环境变量
【发布时间】:2014-10-02 16:23:56
【问题描述】:

我正在尝试将我的所有环境变量存储在一个名为 variables.yml 的文件中,如下所示:

---
doo: "external"

然后我有一个这样的剧本:

---
- hosts: localhost
  tasks:
    - name: "i can totally echo"
      environment:
          include: variables.yml
          ugh: 'internal'
      shell: echo "$doo vs $ugh"
      register: results

    - debug: msg="{{ results.stdout }}"

回显的结果是' vs internal'

如何更改它以使结果为'external vs internal'。非常感谢!

【问题讨论】:

  • 认为您需要添加vars:,然后缩进doo。不过一般来说,你应该use the recommended directory layout
  • 哦,我明白了。我认为这有帮助。感谢您的链接!
  • 另外你应该使用{{ var }}语法而不是$var

标签: environment-variables ansible


【解决方案1】:

假设名为variables.ext的外部变量文件结构如下

---
EXTERNAL:
  DOO: "external"

比,根据Setting the remote environment Load variables from files, dynamically within a task,一个小测试可能看起来像

---
- hosts: localhost
  become: false
  gather_facts: false

  tasks:

  - name: Load environment variables
    include_vars:
      file: variables.ext

  - name: Echo variables
    shell:
      cmd: 'echo "${DOO} vs ${UGH}"'
    environment:
      DOO: "{{ EXTERNAL.DOO }}"
      UGH: "internal"
    register: result

  - name: Show result
    debug:
      msg: "{{ result.stdout }}"

导致输出

TASK [Show result] ********
ok: [localhost] =>
  msg: external vs internal

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-14
    • 2013-12-10
    • 1970-01-01
    • 1970-01-01
    • 2019-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多