linux - 如何使用 Ansible 设置 Linux 环境变量

标签 linux ansible

您好,我正在尝试了解如何使用 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/

相关文章:

linux - 从 "ps aux --sort -rss "获取 PID 号

ruby - 如何重用 Vagrantfile 中引用行中的变量?

oracle - 使用 Ansible playbook 运行 Oracle SQL 脚本

linux - sudo 用户的 Ansible env 变量不同

ansible - 无法将属性与数字进行比较。错误 : "not supported between instances of ' AnsibleUnsafeText' and 'int' "

c++ - Cuda 错误未定义对 'cufftPlan1d' 的引用?

java - 在 Linux 的 Windows 子系统上安装 Oracle JDK

linux - Chef/Bash 配方中的 String.Format 等价物

php - 我应该启用 exec()、使用 php 安全模式还是更改 php.ini?

ansible - 是否有 Ansible 模块可以帮助在启动后保存 iptables 配置