Linux中如何部署自动化运维工具ansible
小编给大家分享一下Linux中如何部署自动化运维工具ansible,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
Ansible的安装
1、yum源安装
以centos为例,默认在源里没有ansible,不过在fedora epel源里有ansible,配置完epel 源后,可以直接通过yum 进行安装。这里以centos6.8为例:
#yuminstallhttp://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm#yuminstallansible
2、apt-get安装
在ubuntu及其衍生版中,可以通过增加ppa源进行apt-get安装,具体如下:
$sudoapt-getinstallsoftware-properties-common$sudoapt-add-repositoryppa:ansible/ansible$sudoapt-getupdate$sudoapt-getinstallansible
3、源码安装 源码安装需要python2.6以上版本,其依赖模块paramiko、PyYAML、Jinja2、httplib2、simplejson、pycrypto模块,以上模块可以通过pip或easy_install 进行安装,不过本部分既然提到的是源码安装,主要针对的无法上外网的情况下,可以通过pypi 站点搜索以上包,下载后通过python setup.py install 进行安装。
最后通过github或pypi上下载ansible源码包,通过python setup.py install 安装即可。由于安装过程相对简单,这里略过,主要介绍安装后,可能遇到的问题。
a、安装PyYAML时,报错如下:
#pythonsetup.pyinstalllibyamlisnotfoundoracompilererror:forcing--without-libyaml(iflibyamlisinstalledcorrectly,youmayneedtospecifytheoption--include-dirsoruncommentandmodifytheparameterinclude_dirsinsetup.cfg)runninginstall_librunninginstall_egg_infoRemoving/usr/lib64/python2.6/site-packages/PyYAML-3.11-py2.6.egg-infoWriting/usr/lib64/python2.6/site-packages/PyYAML-3.11-py2.6.egg-info
在centos6.8系统中,可以通过yum -y install libyaml 包解决,或者从ISO文件中提供该包,通过rpm -ivh进行安装。
b、安装完ansible是,报错如下:
[root@361way.comansible-1.9.1]#ansible-hTraceback(mostrecentcalllast):File"/usr/local/src/ansible-devel/bin/ansible",line36,infromansible.runnerimportRunnerFile"/usr/local/src/ansible-devel/lib/ansible/runner/__init__.py",line62,infromCrypto.RandomimportatforkFile"/usr/lib64/python2.6/site-packages/Crypto/Random/__init__.py",line29,infromCrypto.Randomimport_UserFriendlyRNGFile"/usr/lib64/python2.6/site-packages/Crypto/Random/_UserFriendlyRNG.py",line38,infromCrypto.Random.FortunaimportFortunaAccumulatorFile"/usr/lib64/python2.6/site-packages/Crypto/Random/Fortuna/FortunaAccumulator.py",line39,inimportFortunaGeneratorFile"/usr/lib64/python2.6/site-packages/Crypto/Random/Fortuna/FortunaGenerator.py",line34,infromCrypto.Util.numberimportceil_shift,exact_log2,exact_divFile"/usr/lib64/python2.6/site-packages/Crypto/Util/number.py",line56,inif_fastmathisnotNoneandnot_fastmath.HAVE_DECL_MPZ_POWM_SEC:AttributeError:'module'objecthasnoattribute'HAVE_DECL_MPZ_POWM_SEC'
import paramiko包时,报错如下:
>>>importparamikoTraceback(mostrecentcalllast):File"",line1,inFile"/usr/lib/python2.6/site-packages/paramiko/__init__.py",line69,infromtransportimportrandpool,SecurityOptions,TransportFile"/usr/lib/python2.6/site-packages/paramiko/transport.py",line32,infromparamikoimportutilFile"/usr/lib/python2.6/site-packages/paramiko/util.py",line32,infromparamiko.commonimport*File"/usr/lib/python2.6/site-packages/paramiko/common.py",line98,infromrngimportStrongLockingRandomPoolFile"/usr/lib/python2.6/site-packages/paramiko/rng.py",line22,infromCrypto.Util.randpoolimportRandomPoolas_RandomPoolFile"/usr/lib64/python2.6/site-packages/Crypto/Util/randpool.py",line30,inimportCrypto.RandomFile"/usr/lib64/python2.6/site-packages/Crypto/Random/__init__.py",line29,infromCrypto.Randomimport_UserFriendlyRNGFile"/usr/lib64/python2.6/site-packages/Crypto/Random/_UserFriendlyRNG.py",line38,infromCrypto.Random.FortunaimportFortunaAccumulatorFile"/usr/lib64/python2.6/site-packages/Crypto/Random/Fortuna/FortunaAccumulator.py",line39,inimportFortunaGeneratorFile"/usr/lib64/python2.6/site-packages/Crypto/Random/Fortuna/FortunaGenerator.py",line34,infromCrypto.Util.numberimportceil_shift,exact_log2,exact_divFile"/usr/lib64/python2.6/site-packages/Crypto/Util/number.py",line56,inif_fastmathisnotNoneandnot_fastmath.HAVE_DECL_MPZ_POWM_SEC:AttributeError:'module'objecthasnoattribute'HAVE_DECL_MPZ_POWM_SEC'
经网上查找,确认为pycrypto包安装时依赖的GMP版本不对的问题,具体可以通过以下步骤验证:
[root@361way.compycrypto-2.6.1]#pythonsetup.pybuildrunningbuildrunningbuild_pyrunningbuild_extrunningbuild_configurewarning:GMPorMPIRlibrarynotfound;NotbuildingCrypto.PublicKey._fastmath.
解决方法:
打开 /usr/lib64/python2.6/site-packages/Crypto/Util/number.py 文件,可以 看到 56 行上的注释说明,要求 libgmp 为 v5 以上版本。而系统现有版本为 4.1.4,把以下两行暂时注释掉,Ansible 执行正常。
if_fastmathisnotNoneandnot_fastmath.HAVE_DECL_MPZ_POWM_SEC:_warn("Notusingmpz_powm_sec.Youshouldrebuildusinglibgmp>=5toavoidtimingattackvulnerability.",PowmInsecureWarning)
不过,此方法只是临时加以解决,更好的方式是去将 libgmp 升级到符合要求的版本。
c、执行时报错
[root@361way.comsrc]#ansibletest-mraw-a'uptime'10.212.52.14|FAILED=>tousethe'ssh'connectiontypewithpasswords,youmustinstallthesshpassprogram10.212.52.16|FAILED=>tousethe'ssh'connectiontypewithpasswords,youmustinstallthesshpassprogram
安装sshpass程序。默认源里没有,我这里选择直接从sohu源里下载安装。
Ansible的配置与验证
这里以pypi上下载的源码内有一个examles包,可以将使用该示例文件做为默认配置,具体如下:
[root@361way.comansible-1.9.1]#mkdir-p/etc/ansible[root@361way.comansible-1.9.1]#cp-rpexamples/*/etc/ansible/[root@361way.comansible-1.9.1]#cd/etc/ansible/
使用默认示例配置文件后,编辑/etc/ansible/hosts文件,通过以下方式验证ansible是否可用:
[root@361way.com~]#cat/etc/ansible/hosts[test]10.212.52.252ansible_ssh_user=rootansible_ssh_pass=361way.com10.212.52.14ansible_ssh_user=rootansible_ssh_pass=abc12310.212.52.16ansible_ssh_user=rootansible_ssh_pass=91it.org
以上的配置中,我配置了一个test组,该组下有三台主机,三台都使用root验证,三台的密码分别是361way.com、abc123、91it.org 。
注:后面的用户和密码项是非必须的,在配置key认证的情况下,不使用密码也可以直接操作 。未使用key的,也可以在ansible通过 -k参数在操作前询问手动输入密码。
[root@361way.com~]#ansibletest-a'uptime'10.212.52.252|success|rc=0>>18:01pmup21days3:24,3users,loadaverage:0.39,0.38,0.3510.212.52.16|success|rc=0>>18:09pmup329days1:01,2users,loadaverage:0.08,0.03,0.0510.212.52.14|success|rc=0>>18:08pmup329days0:23,2users,loadaverage:0.06,0.06,0.05
执行以上指令后,有结果输出,证明安装成功。
以上是“Linux中如何部署自动化运维工具ansible”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。