自动化运维工具Ansible详细部署参考:==========================================================================================一、基础介绍==========================================================================================1、简介ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:(1)、连接插件connectionplugins:负责和被监控端实现通信;(2)、hostinventory:指定操作的主机,是一个配置文件里面定义监控的主机;(3)、各种模块核心模块、command模块、自定义模块;(4)、借助于插件完成记录日志邮件等功能;(5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。2、总体架构3、特性(1)、noagents:不需要在被管控主机上安装任何客户端;(2)、noserver:无服务器端,使用时直接运行命令即可;(3)、modulesinanylanguages:基于模块工作,可使用任意语言开发模块;(4)、yaml,notcode:使用yaml语言定制剧本playbook;(5)、sshbydefault:基于SSH工作;(6)、strongmulti-tiersolution:可实现多级指挥。4、优点(1)、轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可;(2)、批量任务执行可以写成脚本,而且不用分发到远程就可以执行;(3)、使用python编写,维护更简单,ruby语法过于复杂;(4)、支持sudo。5、任务执行流程说明:(1)、以上内容大多是基于他人分享的基础上总结而来,学习借鉴之用;(2)、本次安装基于CentOS6.4系统环境。==========================================================================================二、Ansible基础安装与配置==========================================================================================1、Ansible基础安装(1)、python2.7安装=/usr/local#make--jobs=`grepprocessor/proc/cpuinfo|wc-l`#makeinstall##将python头文件拷贝到标准目录,以避免编译ansible时,找不到所需的头文件#cd/usr/local/include/python2.7#cp-a./*/usr/local/include/##备份旧版本的python,并符号链接新版本的python#cd/usr/bin#mvpythonpython2.6#ln-s/usr/local/bin/python#ln-s/usr/local/python/bin/python./python##修改yum脚本,使其指向旧版本的python,已避免其无法运行#vim/usr/bin/yum#!/usr/bin/python--#!/usr/bin/python2.6(2)、setuptools模块安装(3)、pycrypto模块安装(4)、PyYAML模块安装=/usr/local#make--jobs=`grepprocessor/proc/cpuinfo|wc-l`#makeinstall(5)、Jinja2模块安装://pypi.python.org/packages/source/J/Jinja2/Jinja2-2.7.3.tar.gz--no-check-certificate#tarxvzfJinja2-2.7.3.tar.gz#cdJinja2-2.7.3#pythonsetup.pyinstall(6)、paramiko模块安装://pypi.python.org/packages/source/p/paramiko/paramiko-1.15.1.tar.gz--no-check-certificate#tarxvzfparamiko-1.15.1.tar.gz#cdparamiko-1.15.1#pythonsetup.pyinstall(7)、simplejson模块安装(8)、ansible安装、Ansible配置(1)、SSH免密钥登录设置##生成公钥/私钥#ssh-copy-id-i~/.ssh/id_rsa.pub-p22612youboy@192.168.5.132#ssh-copy-id-i~/.ssh/id_rsa.pub-p22612youboy@192.168.5.133(2)、ansible配置#mkdir-p/etc/ansible将前面解压出来的ansible里面的example中的cfg文件以及hosts文件拷贝到/etc/ansible/,;我们是禁止root用户直接登录的,因此要将/etc/ansible/拥有者和属主都改成youboy用户;#vim/etc/ansible/ansible.cfg……remote_port=22612private_key_file=/home/youboy/.ssh/id_rsa.pub……##主机组定义#vim/etc/ansible/hosts[test_cluster]192.168.5.132192.168.5.133(3)、简单测试[youboy@131ansible]$./bin/ansibletest_cluster-mcommand-a'uptime'192.168.5.133|success|rc=023:38:50up4:10,1user,loadaverage:0.00,0.01,0.00192.168.5.132|success|rc=023:38:51up4:10,1user,loadaverage:0.00,0.00,0.00说明:第一次运行时,需要输入一下“yes”【进行公钥验证】,后续无需再次输入。3、常用模块使用(1)、setup##用来查看远程主机的一些基本信息[youboy@131ansible]$./bin/ansibletest_cluster-msetup(2)、ping##用来测试远程主机的运行状态[youboy@131ansible]$./bin/ansibletest_cluster-mping(3)、file##设置文件的属性相关选项如下:force:需要在两种情况下强制创建软链接,一种是源文件不存在,但之后会建立的情况下;另一种是目标软链接已存在,需要先取消之前的软链,然后创建新的软链,有两个选项:yes|nogroup:定义文件/目录的属组mode:定义文件/目录的权限owner:定义文件/目录的属主path:必选项,定义文件/目录的路径recurse:递归设置文件的属性,只对目录有效src:被链接的源文件路径,只应用于state=link的情况dest:被链接到的路径,只应用于state=link的情况state:directory:如果目录不存在,就创建目录file:即使文件不存在,也不会被创建link:创建软链接hard:创建硬链接touch:如果文件不存在,则会创建一个新的文件,如果文件或目录已存在,则更新其最后修改时间absent:删除目录、文件或者取消链接文件示例:##远程文件符号链接创建[youboy@131ansible]$./bin/ansibletest_cluster-mfile-asrc=/etc/resolv.confdest=/tmp/resolv.confstate=link##远程文件信息查看[youboy@131ansible]$./bin/ansibletest_cluster-mcommand-als-la/tmp/resolv.conf##远程文件符号链接删除[youboy@131ansible]$./bin/ansibletest_cluster-mfile-apath=/tmp/resolv.confstate=a