如何在ansible中获取自定义环境变量?

时间:2019-09-03 12:59:22

标签: linux bash ansible environment-variables

嗨,我正在尝试找出如何在Ansible中获取自定义环境变量。

像这样的简单shell命令:

我创建了一个自定义环境变量并分配了一个值

EXPORT SSH_STATUS=TRUE

谁可以从ansible访问结果

如何将Ubuntu环境变量值分配给Ansible变量

有任何线索吗?

4 个答案:

答案 0 :(得分:1)

您可以将其定义为变量,也可以在运行剧本时将变量作为Extra-vars传递。

vars:
 SSH_STATUS=TRUE

--extra-vars "SSH_STATUS=TRUE"

要访问变量,请使用"{{SSH_STATUS}}"

对于环境变量的使用如下

- name: Install cobbler
  command: < some command >    
  environment: "{{SSH_STATUS}}"

答案 1 :(得分:0)

您可能想要set_fact

- set_fact:
    SSH_STATUS: TRUE

如果您需要的是$somevar的值, 如果 .bashrc设置,则register是您的朋友

- name: Expose `$somevar`
  shell: echo "$somevar" # must exist
  register: tmpvar

- set_fact:
    SSH_STATUS: "{{ tmpvar.stdout }}"

问题在于,在访问变量之前,必须确保已设置该变量。

答案 2 :(得分:0)

@Anish Varghese,据我所知,我编写了以下代码,该代码可以在ansible剧本中提取自定义环境变量的值,甚至不更新ansible。

- name: show env value
  debug:
        msg: "{{ lookup('env', 'XV') }}"

下面是对上述任务的验证,

设置名为“ XV”的自定义环境变量,

export XV="TRUE"

运行Ansible脚本,

TASK [show env value] ***********************************************************************************************************************
ok: [192.168.10.10] => {
    "msg": "TRUE"
}

现在,更新env变量的值并再次运行ansible,

export XV="FALSE"

TASK [show env value] ***********************************************************************************************************************
ok: [192.168.10.10] => {
    "msg": "FALSE"
}

这是相关的文档。 https://docs.ansible.com/ansible/latest/plugins/lookup/env.html

答案 3 :(得分:0)

Ansible为此内置了一个名为environment https://docs.ansible.com/ansible/latest/user_guide/playbooks_environment.html

的设施。