一尘不染

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

linux

嗨,我试图找出如何使用Ansible设置环境变量。

简单的shell命令是这样的:

EXPORT LC_ALL=C

作为shell命令尝试,并在使用环境模块尝试时遇到错误,没有任何反应。

我在想什么


阅读 982

收藏
2020-06-02

共1个答案

一尘不染

有多种方法可以做到这一点,而且从您的问题出发,也不清楚您需要什么。

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中的模块并将所需的行添加到某些文件中。请查阅您的操作系统文档,以了解将其添加到哪里使其永久存在。

2020-06-02