首页 > 解决方案 > Ansible 环境变量或默认值

问题描述

如何从环境变量中获取值,但如果环境变量未设置,则使用默认值?

这是一个不起作用的例子

---
- name: a playbook
  hosts: all
  vars:
    build_dir: "{{ lookup('env','BUILD_DIR') | default('builds/1.0.0/LATEST') }}"
  tasks:
    - debug: msg="{{ build_dir }}"

运行这个 playbook 会返回一个空字符串而不是默认值。

$ ansible-playbook build.yml

TASK [debug] ********************
ok: [amber] => {
    "msg": ""
}

但是,它按预期工作以获取环境变量。

$ BUILD_DIR=LOL ansible-playbook build.yml

TASK [debug] ****************
ok: [amber] => {
    "msg": "LOL"
}

标签: ansiblejinja2

解决方案


发现这个比我见过的其他一些选项更简洁、更容易阅读

"{{ lookup('env','BUILD_DIR') or 'builds/1.0.0/LATEST' }}"

推荐阅读