嗨,我想知道如何用Ansible设置环境变量.

可以使用以下简单的shell命令:

EXPORT LC_ALL=C

try 使用shell命令,但出现错误

我错过了什么

推荐答案

有多种方法可以做到这一点,从你的问题来看,也不清楚你需要什么.

1. If you need environment variable to be defined PER TASK ONLY, you do this:

- 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": ""}

希望很快在play level上也能使用environment,而不仅仅是上面提到的任务级别.

更新:自2015年1月2日起合并.

2. If you want permanent environment variable + system wide / only for certain user

您应该研究一下如何在Linux发行版/shell中实现这一点,有很多地方可以做到这一点.例如,在Ubuntu中,你可以在如下文件中定义:

  • ~/.profile
  • /etc/environment
  • /etc/profile.d目录
  • ...

你可以在这里找到关于它的Ubuntu文档:https://help.ubuntu.com/community/EnvironmentVariables

毕竟,对于在ex.Ubuntu中设置环境变量,您可以使用Ansible中的lineinfile模块,并将所需的行添加到特定文件中.请查阅操作系统文档,以了解在何处添加它以使其永久化.

Linux相关问答推荐

排除最大FIFO大小故障

Linux-如何区分目录中名称相同但扩展名不同的所有文件

`__meminit` 在 Linux 内核中意味着什么?

如何在充满 csv 的目录中获得不同的值计数

CMake:处理静态库和共享库的正确方法

使用 AWK 过滤 Linux 输出

将 Visual Studio C++ 项目迁移到 Linux 和 CMake

如何使用 shell 脚本查找具有最大上下文长度的行号?

仅显示 tcsh 或 bash 中作为符号链接的文件和文件夹

如何克隆 OpenLDAP 数据库

Linux:在目录下的文件列表中搜索特定单词

在 VIM 中搜索和替换导致尾随字符

一个进程如何拦截Linux上另一个进程的stdout和stderr?

如何对 /dev/random 或 /dev/urandom 进行 base64 编码?

Anaconda:禁用提示更改

ldconfig 错误:使用 Linux 加载程序时不是符号链接

Bash:如何标记字符串变量?

如何通过 xmllint 使用 XSD 验证 XML 文件

学习内核编程

在我的 index.php 中加载 CSS 和 JS 等资源时出现错误 403