ansible的源码安装,顾名思义,就是从github中拉出ansible的源码库下载到本地进行安装,但是值得注意的时源码安装需要安装许多依赖包,每个依赖包的搜索和下载,在编译,然后在安装。很麻烦也很折腾,但是喜欢捣鼓或者闲着蛋疼可以操作,不喜欢直接用yum安装解决。
首先我先介绍官方安装手册:
http://www.ansible.com.cn/docs/intro_installation.html?highlight=%E5%AE%89%E8%A3%85#from-source
这是真正的安装路径,网友的安装方法各有春秋,也因为安装环境的不同报错报故障。为什么要安装ansible2.0.0起因是因为写一个自动化运维的API接口是,调用ansible的play包必须在2.0.0的环境下面,又不知道Yum安装的2.7.5版本的这个包语法变到哪里去了。有所以重新搭建环境进行ansible2.0.0的安装,直接在2.0.0的版本下面调用最方便。另一种就是已经在yum安装的好ansible内重新降级版本使用,都很折腾。那就来折腾一下吧。
捣鼓环境:
虚拟机vmware14,
部署镜像Centos7 64bit86内核。【CentOS-7-x86_64-DVD-1804】
centos 7 默认安装。
部署管理机:192.168.182.133 节点:192.168.182.131 192.168.182.132
1、依赖包的包装
源码安装,安装官方的操作手册应该会报错,缺少依赖包。
首先我们先安装依赖包
#sudo yum install epel-release
除了epel-release了,还要安装其他依赖包
首先python的依赖包,源码安装需要python指令来操作【安装CENT7时,系统自带了。】
https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz【没有时,可以yum安装也可以源码安装】
# tar -xvzf Python-2.7.8.tgz
# cd Python-2.7.8
# ./configure --prefix=/usr/local
# make && make install
安装完毕以后,避免和旧版本的python重复,删除旧版本的文件,重新连接新版本。
## 将python头文件拷贝到标准目录,以避免编译ansible时,找不到所需的头文件
# cd /usr/local/include/python2.7
# cp -a ./* /usr/local/include/
## 备份旧版本的python,并符号链接新版本的python
# cd /usr/bin
# mv python python2.6
# ln -s /usr/local/bin/python
## 修改yum脚本,使其指向旧版本的python,已避免其无法运行
# vim /usr/bin/yum
#!/usr/bin/python --> #!/usr/bin/python2.6
安装其他的依赖包【需要一个个下载,在一个个解压;可以勇wget指令,省掉上传,我怎么忘记了呢】:
需要的依赖包
搜索依赖包的网站:https://pypi.org/
(2)、setuptools模块安装
https://pypi.python.org/packages/source/s/setuptools/setuptools-7.0.tar.gz
# tar -xvzf setuptools-7.0.tar.gz
# cd setuptools-7.0
# python setup.py install
(3)、pycrypto模块安装
https://pypi.python.org/packages/source/p/pycrypto/pycrypto-2.6.1.tar.gz
# tar -xvzf pycrypto-2.6.1.tar.gz
# cd pycrypto-2.6.1
# python setup.py install
(4)、PyYAML模块安装
http://pyyaml.org/download/libyaml/yaml-0.1.5.tar.gz
# tar -xvzf yaml-0.1.5.tar.gz
# cd yaml-0.1.5
# ./configure --prefix=/usr/local
# make && make install
https://pypi.python.org/packages/source/P/PyYAML/PyYAML-3.11.tar.gz
# tar -xvzf PyYAML-3.11.tar.gz
# cd PyYAML-3.11
# python setup.py install
(5)、Jinja2模块安装
https://pypi.python.org/packages/source/M/MarkupSafe/MarkupSafe-0.9.3.tar.gz
# tar -xvzf MarkupSafe-0.9.3.tar.gz
# cd MarkupSafe-0.9.3
# python setup.py install
https://pypi.python.org/packages/source/J/Jinja2/Jinja2-2.7.3.tar.gz
# tar -xvzf Jinja2-2.7.3.tar.gz
# cd Jinja2-2.7.3
# python setup.py install
(6)、paramiko模块安装
https://pypi.python.org/packages/source/e/ecdsa/ecdsa-0.11.tar.gz
# tar -xvzf ecdsa-0.11.tar.gz
# cd ecdsa-0.11
# python setup.py install
https://pypi.python.org/packages/source/p/paramiko/paramiko-1.15.1.tar.gz
# tar -xvzf paramiko-1.15.1.tar.gz
# cd paramiko-1.15.1
# python setup.py install
(7)、simplejson模块安装
https://pypi.python.org/packages/source/s/simplejson/simplejson-3.6.5.tar.gz
# tar -xvzf simplejson-3.6.5.tar.gz
# cd simplejson-3.6.5
# python setup.py install
(8)、ansible安装
https://github.com/ansible/ansible/archive/v2.0.0.0.tar.gz
# tar -xvzf ansible-2.0.0.0.tar.gz
# cd ansible-2.0.0.0
# python setup.py install
除此之外,有时候安装依赖包还报错要安装其他依赖包。
GCC,python-devel等包,报错缺少什么依赖包,就yum去安装,没有就去官网招依赖包来安装。
安装完毕后,检查是否安装成功
2、ansible的环境配置
(1)、SSH免密钥登录设置
## 生成公钥/私钥
# ssh-keygen 【默认回车,如果想把公钥名字加点参数,然后ansible的配置环境中也要加入公钥名字】
........
Enter file in which to save the key(/root/.ssh/id_rsa):【回车】
........
(2)、ansible配置
# mkdir -p /etc/ansible
#cp ansible-2.0.0/examples/ansible.cfg /etc/ansible/ansible.cfg
# vim /etc/ansible/ansible.cfg
……
private_key_file = /root/.ssh/id_rsa
……
(3)、ansible的主机配置
# vim /etc/ansible/hosts
(4)、ansible的主机测试
源码安装就完成了。
借鉴了几个网友参考文案:【每个人安装的方法是一致的,但是安装的路径和给依赖包添加链接大不同,注意细节。】
https://www.cnblogs.com/janehoo/p/5689543.html
https://www.cnblogs.com/mxjy/p/13455588.html
https://blog.csdn.net/williamfan21c/article/details/53439307
总结:记得看官网手册文档安装,记得看官网手册文档安装,记得看官网手册文档安装,重要事情说三百遍。这才是最准确的方法。我这个源码安装,还没有官方的指导性和可靠性强。各个安装包的路径都是在文章中呈现了,有兴趣可以捣鼓一下,感谢参考文案中一名网友,他确实把每个包路径都放出来了,这个很难的,省掉寻找的工夫。本来想把写的API接口脚本放上来,看看网友帮我找个错误,结果没保存,在努力搬砖把。