大虾居

谈笑有鸿儒,往来无白丁。

0%

使用ansible修改系统级别的path环境变量

使用ansible在受控节点上安装软件,经常会碰到需要修改path环境变量的问题,那么如何能有效且幂等地修改path变量呢,今天虾哥就来分享一下。

下面的一个例子,在centos 7 上安装python3之后,python3上新安装包的可执行文件会链接在/usr/local/bin下,但是默认情况下这个路径没有放在path变量中。

下面的playbook使用pip3安装uwsgi,并将/usr/local/bin添加到path变量中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
---
- name: Install uwsgi
tasks:
- name: Install python3
yum:
name:
- python3

- name: Install uwsgi
pip:
executable: pip3
name: uwsgi

- name: Uwsgi env
copy:
content: |
export PATH=$PATH:/usr/local/bin
dest: /etc/profile.d/uwsgi.sh
mode: 644
become: yes

其原理非常简单,就是在/etc/profile.d文件夹下新建一个shell脚本,脚本中修改path变量。
用户在新登录时会执行这个文件夹下的所有文件,这样就获得了最新的path变量了。

参考