在决定安装高版本的ansible的时候,一定要注意openssl的版本,否则,源码编译openssl太难了。
1、 准备环境
在使用ansible的时候,最好使用python2.7,,查看目前环境如下:
[root@Cserver~]# python -V(python版本)
Python2.6.6
[root@Cserver~]# cat /etc/redhat-release (操作系统版本)
RedHat Enterprise Linux Server release 6.5 (Santiago)
[root@Cserver~]# rpm -qa openssl(openssl版本)
openssl-1.0.1e-15.el6.x86_64
2 升级python
python升级如下过程:
libffi-devel-3.0.5-3.2.el6.x86_64.rpm
[root@Cserver~]# yum -y groupinstall "Development tools"(安装开发包,主要是gcc)
[root@Cserverinstall]# cat upgradepython.sh (升级python的脚本)
#!/bin/bash
#filename:upgradepython.sh
#date:2016/09/19
#version:1.0
#author:kel
INSTALLPATH=/server/install/
#checkthe package
echo"check the package"
fori in python-devel readline-develsqlite-devel bzip2-devel openssl-devel ncurses-devel zlib-devel readline sqlite bzip2 openssl libdbi ncurseszlib gdbm MysqL-python MysqL-server MysqL-devel
do
result=`rpm -qa $i`
if [ ! -n "$result" ]
then
yum -y install $i&>/dev/null
else
echo "--$i is install--"
fi
done
#installpython
echo"install python ,will take six minutes,smoking Now..."
cd$INSTALLPATH && tar -zxvf Python-* &>/dev/null && cdPython-* && ./configure --prefix=/usr/local/python &>/dev/null&& make &>/dev/null && make install &>/dev/null&& echo "python is installed /usr/local/python"
sed-i "1s/python/python2.6/" /usr/bin/yum
mv/usr/bin/python /usr/bin/python2.6.bak
ln-s /usr/local/python/bin/python /usr/bin/python
python-V
在脚本中,首先进行检查相关的依赖包是否安装,如果没有安装那么使用yum进行安装,然后进行源码安装python,安装目录如下所示:
[root@Cserver~]# ls -dl /usr/local/python/(python安装目录)
drwxr-xr-x.6 root root 4096 Feb 5 11:21/usr/local/python/
安装完成之后,将新版本的链接放置到原来的位置,并且备份老版本的python,然后修改yum使用到的python2.6。
[root@Cserver~]# tail -3 .bash_profile (手动修改PATH路径)
PATH=$PATH:$HOME/bin:/usr/local/python/bin
exportPATH
最后可以使用如下来检查python的版本:
[root@Cserver~]# python -V(检查python版本)
Python2.7.11
3、 安装ansible
在进行安装ansible的时候,可以看到ansible依赖的模块如下:
[root@Cserver~]# pip install ansible-2.2.1.0.tar.gz (安装ansible)
Processing./ansible-2.2.1.0.tar.gz
Requirementalready satisfied : paramiko in/usr/local/python/lib/python2.7/site-packages (from ansible==2.2.1.0)
Requirementalready satisfied : jinja2<2.9 in/usr/local/python/lib/python2.7/site-packages (from ansible==2.2.1.0)
Requirementalready satisfied : PyYAML in/usr/local/python/lib/python2.7/site-packages (from ansible==2.2.1.0)
Requirementalready satisfied : setuptoolsin/usr/local/python/lib/python2.7/site-packages (from ansible==2.2.1.0)
Requirementalready satisfied : pycrypto>=2.6in/usr/local/python/lib/python2.7/site-packages (from ansible==2.2.1.0)
Requirementalready satisfied : pyasn1>=0.1.7in/usr/local/python/lib/python2.7/site-packages (from paramiko->ansible==2.2.1.0)
Requirementalready satisfied : cryptography>=1.1in/usr/local/python/lib/python2.7/site-packages (fromparamiko->ansible==2.2.1.0)
Requirementalready satisfied : MarkupSafein/usr/local/python/lib/python2.7/site-packages (from jinja2<2.9->ansible==2.2.1.0)
Requirementalready satisfied : idna>=2.0 in/usr/local/python/lib/python2.7/site-packages (fromcryptography>=1.1->paramiko->ansible==2.2.1.0)
Requirementalready satisfied : six>=1.4.1 in/usr/local/python/lib/python2.7/site-packages (fromcryptography>=1.1->paramiko->ansible==2.2.1.0)
Requirementalready satisfied : enum34 in/usr/local/python/lib/python2.7/site-packages (fromcryptography>=1.1->paramiko->ansible==2.2.1.0)
Requirementalready satisfied : ipaddress in /usr/local/python/lib/python2.7/site-packages(from cryptography>=1.1->paramiko->ansible==2.2.1.0)
Requirementalready satisfied : cffi>=1.4.1in/usr/local/python/lib/python2.7/site-packages (fromcryptography>=1.1->paramiko->ansible==2.2.1.0)
Requirementalready satisfied : pycparser in/usr/local/python/lib/python2.7/site-packages (fromcffi>=1.4.1->cryptography>=1.1->paramiko->ansible==2.2.1.0)
Installingcollected packages: ansible
Running setup.py install for ansible ... done
Successfullyinstalled ansible-2.2.1.0
当有外网的时候,是可以直接pip进行安装,会再网络上去找相关的依赖模块,但是当没有外网的时候咋办,那么可以使用如下的方法:
[root@Cserverinstall]# pip download ansible(下载ansible及相关的依赖包)
[root@Cserverinstall]# ls -l
total5244
-rw-r--r--1 root root 2511062 Feb 5 12:14ansible-2.2.1.0.tar.gz
-rw-r--r--1 root root 11593 Feb 5 12:14 appdirs-1.4.0-py2.py3-none-any.whl
-rw-r--r--1 root root 389473 Feb 5 12:14cffi-1.9.1-cp27-cp27m-manylinux1_x86_64.whl
-rw-r--r--1 root root 420867 Feb 5 12:14 cryptography-1.7.2.tar.gz
-rw-r--r--1 root root 12427 Feb 5 12:14 enum34-1.1.6-py2-none-any.whl
-rw-r--r--1 root root 55347 Feb 5 12:14 idna-2.2-py2.py3-none-any.whl
-rw-r--r--1 root root 17511 Feb 5 12:14 ipaddress-1.0.18-py2-none-any.whl
-rw-r--r--1 root root 264916 Feb 5 12:14 Jinja2-2.8.1-py2.py3-none-any.whl
-rw-r--r--1 root root 13416 Feb 5 12:14 MarkupSafe-0.23.tar.gz
-rw-r--r--1 root root 23069 Feb 5 12:14 packaging-16.8-py2.py3-none-any.whl
-rw-r--r--1 root root 172565 Feb 5 12:14 paramiko-2.1.1-py2.py3-none-any.whl
-rw-r--r--1 root root 51371 Feb 5 12:14 pyasn1-0.2.1-py2.py3-none-any.whl
-rw-r--r--1 root root 231163 Feb 5 12:14 pycparser-2.17.tar.gz
-rw-r--r--1 root root 446240 Feb 5 12:14 pycrypto-2.6.1.tar.gz
-rw-r--r--1 root root 56164 Feb 5 12:14 pyparsing-2.1.10-py2.py3-none-any.whl
-rw-r--r--1 root root 253011 Feb 5 12:14 PyYAML-3.12.tar.gz
-rw-r--r--1 root root 389363 Feb 5 12:14setuptools-34.1.1-py2.py3-none-any.whl
-rw-r--r--1 root root 10341 Feb 5 12:14 six-1.10.0-py2.py3-none-any.whl
然后就可以拷贝到没有网的机器上,进行pip install安装即可。
在没有pip的时候,可以使用如下的方式安装,先下载源码,然后如下:
[root@Cserverinstall]tar -xf setuptools-7.0.tar.gz
[root@Cserverinstall]cd setuptools-7.0
[root@Cserverinstall]python setup.py install
[root@Cserverinstall]tar -xf pip-8.1.0.tar.gz
[root@Cserverinstall]cd pip-8.1.0
[root@Cserverinstall]python setup.py install
4、 检查ansible是否成功安装
在安装完ansible的时候,可以使用如下来进行测试:
[root@Cserverexamples]# mkdir /etc/ansible (创建ansible配置文件目录)
[root@Cserverexamples]# cp * /etc/ansible/(源码路径下的配置文件拷贝到配置目录)
[root@Cserverexamples]# vim /etc/ansible/hosts (编辑清单文件加入本机IP)
172.168.1.75
[root@Cserverexamples]# ansible all -m ping -k(测试)
SSHpassword:
paramiko:The authenticity of host '172.168.1.75' can't be established.
Thessh-rsa key fingerprint is 00c9353527d29127a289f9caf662ffc4.
Areyou sure you want to continue connecting (yes/no)?
yes(第一次连接)
172.168.1.75 | SUCCESS => {
"changed": false,
"ping": "pong"
}