在我的剧本中,我想检测是否定义了某个环境变量。如果它被定义了,那么我想进行一个特定的操作,否则执行某些其他的操作。
问:如果定义了某个shell环境变量,如何在ansible中检测?
发布于 2019-02-08 04:07:05
假设您希望当前用户:
- 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 %}"发布于 2019-02-07 23:11:40
阅读不可信事实并结帐:
- debug:
var: ansible_env因此,对于有条件的事情,你可以这样做:
- set_fact:
env_var: <SOME ENV VAR TO CHECK FOR>
- debug:
msg: "ENV {{ env_var }} is {{ ansible_env[env_var] is defined | ternary('defined', 'not defined') }}"其结果是:
TASK [debug] ********************************************************************************************************
ok: [localhost] => {
"msg": "ENV USER is defined"
}
TASK [debug] ********************************************************************************************************
ok: [localhost] => {
"msg": "ENV USR is not defined"
}对于env_var设置为'USER & 'USR‘。
请记住,env的部分将看起来不同,取决于您连接到远程主机的用户。
https://stackoverflow.com/questions/54582458
复制相似问题