有多种方法可以做到这一点,而且从您的问题出发,也不清楚您需要什么。
1.如果仅需要按任务定义环境变量,请执行以下操作:
- hosts: dev tasks: - name: Echo my_env_var shell: "echo $MY_ENV_VARIABLE" environment: MY_ENV_VARIABLE: whatever_value - name: Echo my_env_var again shell: "echo $MY_ENV_VARIABLE"
请注意,该
MY_ENV_VARIABLE功能仅对第一个任务可用,
environment不会在您的系统上永久设置它。
TASK: [Echo my_env_var] ******************************************************* changed: [192.168.111.222] => {"changed": true, "cmd": "echo $MY_ENV_VARIABLE", ... "stdout": "whatever_value"}TASK: [Echo my_env_var again] ************************************************* changed: [192.168.111.222] => {"changed": true, "cmd": "echo $MY_ENV_VARIABLE", ... "stdout": ""}希望不久后
environment还将在 播放级别上使用
,而不仅是上面的任务级别。当前在Ansible的GitHub上为此功能打开了一个拉取请求:https
:
//github.com/ansible/ansible/pull/8651
更新:自2015年1月2日起已合并。
2.如果要永久性环境变量+系统范围/仅适用于某些用户
您应该在Linux发行版/ shell中研究如何做到这一点,其中有很多地方。例如,在Ubuntu中,您可以在以下文件中进行定义:
~/.profile
/etc/environment
/etc/profile.d
目录- …
您可以在这里找到有关它的Ubuntu文档:https
:
//help.ubuntu.com/community/EnvironmentVariables
毕竟在ex中设置环境变量。在Ubuntu中,您可以只使用
lineinfileAnsible中的模块并将所需的行添加到某些文件中。请查阅您的操作系统文档,以了解将其添加到哪里使其永久存在。



