【问题标题】:How to set environment variables of remote hosts如何设置远程主机的环境变量
【发布时间】:2016-07-15 13:49:57
【问题描述】:

我在处理远程主机的环境变量时遇到问题。例如,当我尝试 {{lookup('env', 'PATH') }} 这将返回我的来宾机器的路径而不是远程主机的路径。

如何获取/更改远程主机的环境变量?

我的剧本:

---
- name : playbook
  hosts : webservers
  gather_facts: yes
  remote_user: user1
  vars:
   Path: "{{lookup('ansible_env','PATH')}}"
  roles :
 - task1
 - task2 
 - task3 

返回的是我机器的路径,而不是名为 user1 的远程主机的路径 我是 ansible 的初学者,需要一些帮助。 提前谢谢你。

【问题讨论】:

  • 您能否编辑您的问题以显示您的任务、库存以及您如何调用 Ansible?
  • 我的剧本只包含以下几行:--- - 名称:为 java 命令设置路径:bash -c "export $JAVA_HOME/bin:$PATH"

标签: linux environment-variables ansible ansible-playbook


【解决方案1】:

您可以使用 environment 关键字为任务或剧本设置 PATH。

environment:
  PATH: "{{ ansible_env.PATH }}:/thingy/bin"
  SOME: value

Ansible 常见问题解答在顶部附近提到了这一点 http://docs.ansible.com/ansible/faq.html

因此,在您的情况下,请尝试以下操作:

- name: Set Path for java
  environment:
    PATH: "$JAVA_HOME/bin:{{ ansible_env.PATH }}"

设置环境参考:http://docs.ansible.com/ansible/playbooks_environment.html

【讨论】:

  • 例如使用名为“vagrant”的远程主机的路径。我编写环境:路径:“{{ ansible_env.PATH }}:/vagrant/bin”?? @wazy
  • 这会将 /vagrant/bin 添加到您在其下指定此任务的主机上的 PATH 中。
  • 我尝试使用 "{{ ansible_env.PATH }}" 但它返回了我机器的 PATH 。我希望文件 /etc/ansible/hosts 中提到的远程主机的路径不是我安装 ansible 的机器的路径。
  • 您是否在指定远程主机的 play 下运行任务?请展示你的表演。
  • 我更改了我的帖子。您可以在其中看到我的剧本
猜你喜欢
  • 1970-01-01
  • 2013-02-27
  • 2014-10-18
  • 1970-01-01
  • 2016-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-23
相关资源
最近更新 更多