比较来自世界各地的卖家的域名和 IT 服务价格

如何安装环境变量 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

可用的 ONLY 对于第一个任务,
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
UPDATE: 现在它结合了 2 一月 2015 一年。

2. 如果您需要一个常量的环境变量 + Systemite. / 仅针对特定用户

您必须了解您在发行版中的方式 Linux / shell, 有几个地方为此。 例如,在 Ubuntu 例如,您将其定义为例如:


~/.profile



/etc/environment



/etc/profile.d

目录

...

你会找到 Ubuntu 关于它的文件在这里:
https://help.ubuntu.com/commun ... ables
毕竟,要设置环境变量 ex. Ubuntu 您可以使用该模块
lineinfile

的 Ansible 并将所需的字符串添加到特定文件。 联系您的文件 OS, 找出添加它以使其不变的位置。

帅驴

赞同来自:

我没有足够的声誉来评论,因此我添加了一个新答案。

Gashek的答案非常忠诚。 只有一件事:如果您更新文件
.bash_profile

或者
/etc/profile

, 这些更改将仅在执行新登录后反映。
如果要设置变量 env 然后在同一教程中使用它在后续任务中,考虑将这些环境变量添加到文件中
.bashrc

.

我假设这个原因是登录和shell而不进入。

Ansible, 执行各种任务从文件中读取参数
.bashrc

反而
.bash_profile

或者
/etc/profile

.




例如,如果我更新了我的变量 path, 将自定义二进制文件启用到文件
.bash_profile

相关用户,然后制作了文件的来源。
以下后续任务无法识别我的团队。 但是,如果您更新文件
.bashrc

, 团队将工作。


- name: Adding the path in the bashrc files
lineinfile: dest=/root/.bashrc line='export PATH=$PATH:path-to-mysql/bin' insertafter='EOF' regexp='export PATH=\$PATH:path-to-mysql/bin' state=present

- - name: Source the bashrc file
shell: source /root/.bashrc

- name: Start the mysql client
shell: mysql -e "show databases";


有效



但如果我使用配置文件文件,那么
mysql -e "show databases"

我会犯错误。


- name: Adding the path in the Profile files
lineinfile: dest=/root/.bash_profile line='export PATH=$PATH:{{install_path}}/{{mysql_folder_name}}/bin' insertafter='EOF' regexp='export PATH=\$PATH:{{install_path}}/{{mysql_folder_name}}/bin' state=present

- name: Source the bash_profile file
shell: source /root/.bash_profile

- name: Start the mysql client
shell: mysql -e "show databases";


这没用

,

如果我们在同一教科书中拥有所有这些任务。

郭文康

赞同来自:

以下是常量安装键的快速本地任务/价值观
/etc/environment

/这是一个系统范围,所有用户/:


- name: populate /etc/environment
lineinfile:
dest: "/etc/environment"
state: present
regexp: "^{{ item.key }}="
line: "{{ item.key }}={{ item.value}}"
with_items: "{{ os_environment }}"


和战争为此:


os_environment:
- key: DJANGO_SETTINGS_MODULE
value : websec.prod_settings
- key: DJANGO_SUPER_USER
value : admin


是的,如果你 ssh 出去进来进来
env

显示新的环境变量。

窦买办

赞同来自:

要持续配置环境变量,您可以将现有角色之一用于地址。 Ansible Galaxy. 我建议
https://galaxy.ansible.com/wea ... nment
.

使用 ansible-galaxy:


$ ansible-galaxy install weareinteractive.environment


使用 requirements.yml:


- src: franklinkim.environment


然后在你的计划中:


- hosts: all
sudo: yes
roles:
- role: franklinkim.environment
environment_config:
NODE_ENV: staging
DATABASE_NAME: staging

龙天

赞同来自:

这是最好的选择。 作为Mikhal Hashek. / 第一个答案/, 随着Recureture请求合并 /
https://github.com/ansible/ansible/pull/8651
/,
我们可以轻松安装

永久环境变量

通过播放级别。


- hosts: all
roles:
- php
- nginx
environment:
MY_ENV_VARIABLE: whatever_value

要回复问题请先登录注册