首页 > 解决方案 > 如果定义了 SHELL (/bin/sh) 环境变量,如何检查 ansible

问题描述

在我的剧本中,我想检测是否定义了某个环境变量。如果已定义,那么我想执行某个操作,否则执行某些其他操作。

问题:如何在 ansible 中检测是否定义了某个 shell 环境变量?

标签: ansible

解决方案


假设您想要当前用户:

- name: Get current user.
  set_fact:
    whoami: "{{ lookup('env','USER') }}"

这不会告诉您变量是否已定义。如果变量未在环境中定义,则您的set_fact变量将为空。如果您想在未设置变量的情况下使用一些默认值...

- name: See if environment variable MYVAR is set
  shell: "env | grep '^MYVAR='"
  failed_when: 1 == 0
  register: result

- name: Get MYVAR or use 'DEFAULT'
  set_fact:
    myvar: "{% if result.rc == 0 %}{{ lookup('env','MYVAR') }}{% else %}DEFAULT{% endif %}"

推荐阅读