欢迎访问www.showerlee.com, 您的支持就是我前进的动力.

使用Virtualenv隔离Ansible不同发行版

showerlee 2016-02-16 16:56 其他 阅读 (6,970) 2条评论

在日常使用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

正文部分到此结束
版权声明:除非注明,本文由(showerlee)原创,转载请保留文章出处!
本文链接:http://www.showerlee.com/archives/1862

继续浏览:

2条大神的评论

loading
  1. 沙发
    Sunny锅2016年12月28日下午9:36 回复

    纠正一下这里:

    . /home/deploy/.virtualenv/ansible/hacking/env-setup -q

    这个的地方好像用”source” 才行
    source /home/deploy/.virtualenv/ansible/hacking/env-setup

    • showerlee2017年1月7日下午8:27 回复

      两个方式都可以, 你可以试试.

发表评论

icon_wink.gif icon_neutral.gif icon_mad.gif icon_twisted.gif icon_smile.gif icon_eek.gif icon_sad.gif icon_rolleyes.gif icon_razz.gif icon_redface.gif icon_surprised.gif icon_mrgreen.gif icon_lol.gif icon_idea.gif icon_biggrin.gif icon_evil.gif icon_cry.gif icon_cool.gif icon_arrow.gif icon_confused.gif icon_question.gif icon_exclaim.gif