有多种方法可以做到这一点,从您的问题来看,您还不清楚您需要什么。
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 中,您可以使用 Ansible 中的 lineinfile 模块并将所需的行添加到某个文件中。请查阅您的操作系统文档以了解将其添加到何处以使其永久化。