如何使用 Ansible 设置 Linux 环境变量 [英] How to set Linux environment variables with Ansible

查看:51
本文介绍了如何使用 Ansible 设置 Linux 环境变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

像这样一个简单的 shell 命令:

EXPORT LC_ALL=C

尝试作为 shell 命令并得到一个错误尝试使用环境模块,但没有任何反应.

我错过了什么

解决方案

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

1.如果您只需要为每个任务定义环境变量,请执行以下操作:

<块引用>

- 主机:dev任务:- 名称:回声 my_env_var外壳:回声 $MY_ENV_VARIABLE"环境:MY_ENV_VARIABLE:whatever_value- 名称:再次回显 my_env_var外壳:回声 $MY_ENV_VARIABLE"

请注意,MY_ENV_VARIABLE 仅适用于第一个任务,environment 不会在您的系统上永久设置.

TASK: [Echo my_env_var] *********************************************************更改:[192.168.111.222] =>{"changed": true, "cmd": "echo $MY_ENV_VARIABLE", ... "stdout": "whatever_value"}任务: [再次回显 my_env_var] *****************************************************更改:[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 中,您可以使用 Ansible 中的 lineinfile 模块并将所需的行添加到特定文件中.请查阅您的操作系统文档以了解将其添加到何处以使其永久化.

Hi I am trying to find out how to set environment variable with Ansible.

something that a simple shell command like this:

EXPORT LC_ALL=C

tried as shell command and got an error tried using the environment module and nothing happend.

what am I missing

解决方案

There are multiple ways to do this and from your question it's nor clear what you need.

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"

Note that MY_ENV_VARIABLE is available ONLY for the first task, environment does not set it permanently on your system.

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

Hopefully soon using environment will also be possible on play level, not only task level as above. There's currently a pull request open for this feature on Ansible's GitHub: https://github.com/ansible/ansible/pull/8651

UPDATE: It's now merged as of Jan 2, 2015.

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

You should look into how you do it in your Linux distribution / shell, there are multiple places for that. For example in Ubuntu you define that in files like for example:

  • ~/.profile
  • /etc/environment
  • /etc/profile.d directory
  • ...

You will find Ubuntu docs about it here: https://help.ubuntu.com/community/EnvironmentVariables

After all for setting environment variable in ex. Ubuntu you can just use lineinfile module from Ansible and add desired line to certain file. Consult your OS docs to know where to add it to make it permanent.

这篇关于如何使用 Ansible 设置 Linux 环境变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆