嗨,我试图找出如何使用Ansible设置环境变量。
简单的shell命令是这样的:
EXPORT LC_ALL=C
作为shell命令尝试,并在使用环境模块尝试时遇到错误,没有任何反应。
我在想什么
有多种方法可以做到这一点,而且从您的问题出发,也不清楚您需要什么。
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不会在您的系统上永久设置它。
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中的模块并将所需的行添加到某些文件中。请查阅您的操作系统文档,以了解将其添加到哪里使其永久存在。
lineinfile