environment-variables - Ansible - 包括来自外部 YML 的环境变量

标签 environment-variables ansible

我试图将所有环境变量存储在一个名为 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'。非常感谢!

最佳答案

假设名为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

关于environment-variables - Ansible - 包括来自外部 YML 的环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26165152/

相关文章:

elasticsearch - 使用 docker compose 时使用空格传递 ES_JAVA_OPTS 变量

xml - 在 VBS 中使用环境变量的值时出现问题

Ansible 检查变量是否已设置

Ansible:如何通过在主机上附加文件的任务实现幂等性(不恢复到初始状态)

ubuntu - 使用 Ansible 将 ssh-id 从远程主机复制到另一个主机

ansible - 为什么 ansible 默默地忽略一个角色?

null - 从 ansible 中的 stdout 中删除空值

Java - 启动时读出系统环境

linux - 环境变量是通过内存中还是磁盘上的 "set-environment"在 Linux 上的 systemd 中创建的?

C++ 标准库 - std::setenv 与 setenv