当前位置: 首页 > 科技观察

如何通过Ansible管理上千台服务器??

时间:2023-03-18 23:46:59 科技观察

1。基本介绍1.简介Ansible是一种新型的自动化运维工具。基于Python开发,融合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点。实现批量系统配置、批量程序部署、批量运行命令等功能。Ansible基于模块工作,不具备批量部署的能力。真正有批量部署的是ansible运行的模块,而ansible只是提供了一个框架。主要包括:(1)、connectionplugins:负责与被监控端通信;(2)、hostinventory:指定操作的主机,即在配置文件中定义的用于监控的主机;(3)、各种模块的核心模块、命令模块、自定义模块;(4)、借助插件完成记录日志邮件等功能;(5)、playbook:当脚本执行多个任务时,没必要让节点一次运行多个任务。二、总体架构三、特点(1)、无代理:被控主机无需安装客户端;(2)、无服务器:无服务器,使用时直接运行命令即可;(3)、任意语言的模块:基于模块工作,模块可以用任何语言开发;(4)、yaml,notcode:使用yaml语言自定义脚本playbook;(5)、默认ssh:基于SSH工作;(6)、强大的多层解决方案:可实现多级指挥。4、优点(1)、轻量级,客户端无需安装代理,更新时只需要在运行机上更新一次;(2)、批量任务执行可以写成脚本,可以分发到远程执行;(3)、python写的,更容易维护,ruby语法太复杂;(4)、支持sudo。五、任务执行过程二、Ansible基本安装配置1、Ansible基本安装(一)、python2.7安装#wgethttps://www.python.org/ftp/python/2.7.8/Python-2.7.8。tgz#tarxvzfPython-2.7.8.tgz#cdPython-2.7.8#./configure--prefix=/usr/local#make--jobs=`grepprocessor/proc/cpuinfo|wc-l`#makeinstall##makepython将头文件复制到标准目录下,避免编译ansible时丢失需要的头文件#cd/usr/local/include/python2.7#cp-a./*/usr/local/include/##Backup旧版本python,andsymlinknewversionofpython#cd/usr/bin#mvpythonpython2.6#ln-s/usr/local/bin/python##修改yum脚本指向老版本python,已经避免了无法运行#vim/usr/bin/yum#!/usr/bin/python-->#!/usr/bin/python2.6(2),setuptools模块安装#wgethttps://pypi.python.org/packages/source/s/setuptools/setuptools-7.0.tar.gz#tarxvzfsetuptools-7.0.tar.gz#cdsetuptools-7.0#pythonsetup.pyinstall(3),pycrypto模块安装#wgethttps://pypi.python.org/packages/source/p/pycrypto/pycrypto-2.6.1.tar.gz#tarxvzfpycrypto-2.6.1.tar.gz#cdpycrypto-2.6.1#pythonsetup.pyinstall(4),PyYAML模块安装#wgethttp://pyyaml。组织/下载/libyaml/yaml-0.1.5.tar.gz#tarxvzfyaml-0.1.5.tar.gz#cdyaml-0.1.5#./configure--prefix=/usr/local#make--jobs=`grepprocessor/proc/cpuinfo|wc-l`&&makeinstall//作业数为编译时指定主机的CPU数,并行处理数jobs和编译效率直接相关,所以需要设置合适的jobs个数#wgethttps://pypi.python.org/packages/source/P/PyYAML/PyYAML-3.11.tar.gz#tarxvzfPyYAML-3.11.tar.gz#cdPyYAML-3.11#pythonsetup.pyinstall(5),Jinja2模块安装https//pypi.python.org/packages/source/M/MarkupSafe/MarkupSafe-0.9.3.tar.gz#tarxvzfMarkupSafe-0.9.3.tar.gz#cdMarkupSafe-0.9.3#pythonsetup.pyinstallhttps://pypi.python.org/packages/source/J/Jinja2/Jinja2-2.7.3.tar.gz#tarxvzfJinja2-2.7.3.tar.gz#cdJinja2-2.7.3#pythonsetup.pyinstall(6),paramiko模块安装https//pypi.python.org/packages/source/e/ecdsa/ecdsa-0.11.tar.gz#tarxvzfecdsa-0.11.tar.gz#cdecdsa-0.11#pythonsetup.pyinstallhttps://pypi.python.org/packages/source/p/paramiko/paramiko-1.15.1.tar.gz#tarxvzfparamiko-1.15.1.tar.gz#cdparamiko-1.15.1#pythonsetup.pyinstall(7),simplejson模块安装https://pypi.python.org/packages/source/s/simplejson/simplejson-3.6.5.tar.gz#tarxvzfsimplejson-3.6.5.tar.gz#cdsimplejson-3.6.5#pythonsetup.pyinstall(8),ansible安装https://github.com/ansible/ansible/archive/v1.7.2.tar.gz#tarxvzfansible-1.7.2.tar.gz#cdansible-1.7.2#pythonsetup.pyinstall2、Ansible配置(一)、SSH免密登录设置##生成公私钥发送到目标服务器(10.123.167.15Execute)#将私钥添加到目标服务器的认证文件中并授权(在34、51、59、61、63处执行)(2),ansible配置#mkdir-p/etc/ansible#cp/opt/ansible/ansible-1.7.2/examples/ansible.cfg/etc/ansible/ansible.cfg#vim/etc/ansible/ansible.cfg...private_key_file=/root/.ssh/id_rsa...##主机组定义#vim/etc/ansible/hosts[hwb_cluster]10.150.xx.3410.150.xx.5110.150.xx.5910.150.xx.6110.150.xx.6310.150.xx.8810.150.xx.89(3),简单测试#ansiblehwb_cluster-mcommand-a'uptime'Ansible适合管理多台服务器。在ansible主机上执行相应的命令,实际上就是通过ssh协议在相应的受控服务器上执行命令,这样可以为我们省去很多不必要的工作,非常方便。如果你对自动化感兴趣,如果你对运维感兴趣,可以自己尝试一下。入门本文档完全没有问题。稍后,您将学习剧本的语法来编写脚本。