首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果定义了SHELL (/bin/sh)环境变量,如何签入ansible

如果定义了SHELL (/bin/sh)环境变量,如何签入ansible
EN

Stack Overflow用户
提问于 2019-02-07 21:19:17
回答 2查看 439关注 0票数 0

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

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

EN

回答 2

Stack Overflow用户

发布于 2019-02-08 04:07:05

假设您希望当前用户:

代码语言:javascript
复制
- name: Get current user.
  set_fact:
    whoami: "{{ lookup('env','USER') }}"

这将不会告诉您是否定义了变量。如果在环境中未定义变量,则set_fact变量将为空。如果不设置变量,则要使用默认设置.

代码语言:javascript
复制
- 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 %}"
票数 2
EN

Stack Overflow用户

发布于 2019-02-07 23:11:40

阅读不可信事实并结帐:

代码语言:javascript
复制
- debug:
    var: ansible_env

因此,对于有条件的事情,你可以这样做:

代码语言:javascript
复制
- 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') }}"

其结果是:

代码语言:javascript
复制
TASK [debug] ********************************************************************************************************
ok: [localhost] => {
    "msg": "ENV USER is defined"
}

TASK [debug] ********************************************************************************************************
ok: [localhost] => {
    "msg": "ENV USR is not defined"
}

对于env_var设置为'USER & 'USR‘。

请记住,env的部分将看起来不同,取决于您连接到远程主机的用户。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54582458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档