使用Virtualenv隔离Ansible不同发行版
在日常使用ansible的部署过程中, 由于我们常用的yum, apt包管理工具默认安装的ansible版本为1.9, 在该版本应用一些新的ansible模块时下会遇到一些BUG.
如何使我们在保留旧版本的同时, 使用最新发行版来Fix这个issue, 则是本文所要讨论的问题.
因为ansible本身由python编写而成, 所以我们可以使用python下的virtualenv模块对我们所需的ansible发行版进行隔离安装, 这样既能保证我们原有的job还可以正常在stable version下safe running, 而且又不影响我们new job在新版本下适配新的模块.
接下来我会使用virtualenv隔离安装ansible2.1, 并保留老版本ansible1.9.4
详细配置步骤如下:
安装环境:
System: Centos 6.3 x64
Python: 2.6.6
Ansible: 1.9.4
一.安装virtualenv
1.保证系统默认YUM源
2.安装easy_install
# whoami
root
# yum install python-setuptools python-setuptools-devel
3.安装pip
# easy_install pip
4.安装virtualenv
# pip install virtualenv
二.配置系统非root用户使用新版本ansible.
Tip: 我们正常部署过程中建议使用一个普通用户来跑我们日常的ansible job
1.创建用户
# useradd deploy
2.切换到该用户进行初始配置.
# su - deploy
# virtualenv .virtualenv
# cd .virtualenv
# ls
bin include lib lib64 pip-selfcheck.json
3.使用git下载ansible最新发行版.
# git clone https://github.com/ansible/ansible.git
4.进入virtualenv环境
$ source /home/deploy/.virtualenv/bin/activate
(.virtualenv) [deploy@www .virtualenv]$
5.安装必要的ansible依赖包
# pip install paramiko PyYAML jinja2
# cd ansible
# git submodule update --init lib/ansible/modules/core
# git submodule update --init lib/ansible/modules/extras
6. 加载ansible2.1
Tip: env-setup 是 ansible 为 hacker 准备的一个脚本,用来设置一些ansible所需的环境变量
# . /home/deploy/.virtualenv/ansible/hacking/env-setup -q
$ ansible --version
ansible 2.1.0 (devel 6ddea3e915) last updated 2016/02/16 16:13:32 (GMT +800) lib/ansible/modules/core: (detached HEAD 8d126bd877) last updated 2016/02/16 16:19:09 (GMT +800) lib/ansible/modules/extras: (detached HEAD f6c5ed987f) last updated 2016/02/16 16:19:40 (GMT +800) config file = /etc/ansible/ansible.cfg configured module search path = Default w/o overrides
7. 退出virtualenv
(.virtualenv) # deactivate
# exit
# su - deploy
# ansible --version
ansible 1.9.4 configured module search path = None
配置完毕
Tip:
以后若想使用新版本ansible则直接执行下面两行命令即可.
# source /home/deploy/.virtualenv/bin/activate
# . /home/deploy/.virtualenv/ansible/hacking/env-setup -q
本文链接:http://www.showerlee.com/archives/1862
继续浏览:
纠正一下这里:
. /home/deploy/.virtualenv/ansible/hacking/env-setup -q
这个的地方好像用”source” 才行
source /home/deploy/.virtualenv/ansible/hacking/env-setup
两个方式都可以, 你可以试试.