一、 实现功能
通过Ansible实现自动化部署的功能,简化软件部署耗时,提升软件部署效率。
二、 环境
1.Centos6.4
2.Python3.6
3.Ansible2.5
三、安装
1.yum
优点:部署安装方便。
缺点:Ansible模块安装在python公共模块,不同用户可以访问,影响效率和交付。
2.源码安装(本文采用)
优点:配合virtual env创建ansible独立运行环境,保证其在独立的python环境中运行。
四、具体安装步骤
1.下载python3.6
(1)wget下载(太慢)
[root@bigdata software]# wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz
(2)直接网页下载,然后上传服务器
https://www.python.org/ftp/python/3.6.5/
下载Python-3.6.5.tar.xz
2.安装python依赖
(1)解压缩安装包
[root@bigdata software]# tar xvJf Python-3.6.5.tar.xz
[root@bigdata software]# cd python-3.6.5
(2)安装依赖
[root@bigdata Python-3.6.5]# yum install gcc gcc-c-++ -y
[root@bigdata Python-3.6.5]# yum -y install zlib*
(3)编译
[root@bigdata Python-3.6.5]# ./configure --prefix=/usr/local --with-ssl --with-ensurepip=install --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"
结果:
.....
checking for the Linux getrandom() syscall... no
checking for the getrandom() function... no
configure: creating ./config.status
config.status: creating Makefile.pre
config.status: creating Modules/Setup.config
config.status: creating Misc/python.pc
config.status: creating Misc/python-config.sh
config.status: creating Modules/ld_so_aix
config.status: creating pyconfig.h
configure: WARNING: unrecognized options: --with-ssl
creating Modules/Setup
creating Modules/Setup.local
creating Makefile
If you want a release build with all stable optimizations active (PGO, etc),
please run ./configure --enable-optimizations
(4)安装:编译好的文件安装到/usr/local目录下
[root@bigdata Python-3.6.5]# make && make altinstall
结果:
…
changing mode of /usr/local/bin/pydoc3.6 to 755
rm /usr/local/lib/python3.6/lib-dynload/_sysconfigdata_m_linux_x86_64-linux-gnu.py
rm -r /usr/local/lib/python3.6/lib-dynload/__pycache__
/usr/bin/install -c -m 644 ./Misc/python.man \
/usr/local/share/man/man1/python3.6.1
if test "xinstall" != "xno" ; then \
case install in \
upgrade) ensurepip="--altinstall --upgrade" ;; \
install|*) ensurepip="--altinstall" ;; \
esac; \
LD_LIBRARY_PATH=/opt/software/Python-3.6.5 ./python -E -m ensurepip \
$ensurepip --root=/ ; \
fi
Collecting setuptools
Collecting pip
Installing collected packages: setuptools, pip
Successfully installed pip-9.0.3 setuptools-39.0.1
(5)查看安装
[root@bigdata Python-3.6.5]# which pip3.6
/usr/local/bin/pip3.6
3.安装virtualenv环境
(1)通过软连接,修改pip3.6为pip,
[root@bigdata Python-3.6.5]# which pip3.6
/usr/local/bin/pip3.6
[root@bigdata bin]# ln -s /usr/local/bin/pip3.6 /usr/local/bin/pip
(2)安装virtual env工具
[root@bigdata bin]# pip install virtualenv
…
Installing collected packages: virtualenv
Successfully installed virtualenv-16.7.5
You are using pip version 9.0.3, however version 19.2.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
4.创建ansible系统账户并安装python3.6版本virtualenv实例
(1)创建ansible的deploy用户
[root@bigdata bin]# useradd deploy
[root@bigdata bin]# su – deploy
(2)创建virtual env实例
[deploy@bigdata ~]$ virtualenv -p /usr/local/bin/python3.6 .py3-a2.5-env
Already using interpreter /usr/local/bin/python3.6
Using base prefix '/usr/local'
New python executable in /home/deploy/.py3-a2.5-env/bin/python3.6
Also creating executable in /home/deploy/.py3-a2.5-env/bin/python
Installing setuptools, pip, wheel...
done.
5.安装git:因为要下载ansible源码,进行安装
切换root用户安装
[deploy@bigdata ~]$ su - root
Password:
[root@bigdata ~]# yum -y install git nss curl
6. git源代码安装ansible2.5
(1)进入deploy用户
[root@bigdata ~]# su - deploy
(2)查看git目录
[deploy@bigdata ~]$ which git
/usr/bin/git
(3)下载源码安装(ssh下载,因为http太慢了)
[deploy@bigdata ~]$ git clone git@github.com:ansible/ansible.git
Initialized empty Git repository in /home/deploy/ansible/.git/
Warning: Permanently added the RSA host key for IP address '192.30.253.112' to the list of known hosts.
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (19/19), done.
remote: Total 483587 (delta 1), reused 3 (delta 0), pack-reused 483567
Receiving objects: 100% (483587/483587), 178.92 MiB | 34 KiB/s, done.
Resolving deltas: 100% (313808/313808), done.
(.py3-a2.5-env) [deploy@bigdata ~]$ ls
ansible
(4)加载python3.6 virtualenv虚拟环境
[deploy@bigdata ~]$ source /home/deploy/.py3-a2.5-env/bin/activate
(.py3-a2.5-env) [deploy@bigdata ~]$
(5)在该环境下安装ansible依赖包
(.py3-a2.5-env) [deploy@bigdata ~]$ pip install paramiko PyYAML jinja2
(6)ansible代码移动到python虚拟环境下,并且切换ansible安装版本为2.5版本
(.py3-a2.5-env) [deploy@bigdata ~]$ mv ansible .py3-a2.5-env/
(.py3-a2.5-env) [deploy@bigdata ~]$ cd .py3-a2.5-env/ansible/
(.py3-a2.5-env) [deploy@bigdata ansible]$
(.py3-a2.5-env) [deploy@bigdata ansible]$ git checkout stable-2.5
Branch stable-2.5 set up to track remote branch stable-2.5 from origin.
Switched to a new branch 'stable-2.5'
(7)在python3.6虚拟环境下加载ansible2.5
(.py3-a2.5-env) [deploy@bigdata ansible]$ source /home/deploy/.py3-a2.5-env/ansible/hacking/env-setup –q
(8)验证ansible2.5
(.py3-a2.5-env) [deploy@bigdata ansible]$ ansible --version
ansible 2.5.15 (stable-2.5 4f5084d9d2) last updated 2019/10/03 12:29:27 (GMT +800)
config file = None
configured module search path = ['/home/deploy/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /home/deploy/.py3-a2.5-env/ansible/lib/ansible
executable location = /home/deploy/.py3-a2.5-env/ansible/bin/ansible
python version = 3.6.5 (default, Oct 3 2019, 08:13:47) [GCC 4.4.7 20120313 (Red Hat 4.4.7-23)]