您好,我正在尝试了解如何使用 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
不会在您的系统上永久设置它。
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": ""}
希望很快也可以在游戏关卡上使用环境
,而不仅仅是上面的任务关卡。
目前在 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
模块并将所需的行添加到特定文件。请查阅您的操作系统文档以了解将其添加到何处以使其永久化。
关于linux - 如何使用 Ansible 设置 Linux 环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56637719/