嗨,我正在尝试找出如何在Ansible中获取自定义环境变量。
像这样的简单shell命令:
我创建了一个自定义环境变量并分配了一个值
EXPORT SSH_STATUS=TRUE
谁可以从ansible访问结果
如何将Ubuntu环境变量值分配给Ansible变量
有任何线索吗?
答案 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