Ansible自动化运维体系建设方案_第1页
Ansible自动化运维体系建设方案_第2页
Ansible自动化运维体系建设方案_第3页
Ansible自动化运维体系建设方案_第4页
Ansible自动化运维体系建设方案_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 Ansible自动化运维体系建设方案目 录 TOC o 1-3 h z u HYPERLINK l _Toc522798603 1.搭建自动化运维体系的重要性 PAGEREF _Toc522798603 h 3 HYPERLINK l _Toc522798604 2.Ansible平台优势介绍 PAGEREF _Toc522798604 h 3 HYPERLINK l _Toc522798605 3.Ansible环境部署方案 PAGEREF _Toc522798605 h 4搭建自动化运维体系的重要性鉴于之前有过一次全行IT 系统的重大的实施工作,即因全行时钟较北京时间差20余分钟,将全行

2、时钟统一前调了20分钟,并与新的原子钟保持时钟同步。在没有自动化运维工具(Puppet、Ansible、Saltstack、Chef)的前提下,利用了IBM Tivoli Monitor(ITM)实现的所有受监控系统的时钟前调任务,并进行了相关的检查。当然在做事情之前,做了大量的人工的准备工作,包括ntp服务的检查、ntp自启动未开启的检查、ntp未配置的检查、时钟前调大量测试工作等等。正是由于这些前期大量缜密的工作,让这次统一的时钟调整任务得以顺利完成,但同时我们也发现自动化运维工具的重要性,倘若没有ITM,我们几乎每办法开展这项工作,倘若有了自动化运维工具,我们可以节省大量人力的前期检查工

3、作,也可以利用自动化运维工具做好后续的检查工作,当然自动化运维工具的运用远远不止于此,于是我们急迫需要快速搭建一套自动化运维体系。注:ITM是监控软件,利用ITM客户端上的Agent可以在客户端统一发命令。Ansible平台优势介绍选择ansible主要原因是:用于生产环境,轻量,无代理,批量任务能够写成脚本,而不用分发到远程就可以执行,并且能够极快速地搭建,能够接受效率稍微不如代理方式的缺点,暂无Ansible之上二次开发的需求,对于ansible服务端的安全性:安全加固,纳入堡垒机管理,禁止不必要的服务和网络端口。整体架构如下:Ansible环境部署方案包含一套ansible服务端和150

4、0余个生产环境ansible客户端。时间:三天。按照以下现成的方式,1-2天即可完成ansible自动化运维体系的环境搭建!服务端: 操作系统版本RHEL6.6 x86_64,该操作系统自带Python 2.6.6(要求Version=2.6)由于是生产环境,无法连接外部互联网,所以整个安装过程,只能用安装包的方式安装。1.配置YUM源(连接专门的YUM服务器):没有YUM服务器也可以将RHEL6.6的ISO文件传至服务端,并挂载:配置YUM源(本地)2.ansible依赖模块及安装包的安装:所有安装包地址:ansible2.3.2所有安装包地/Document/detail/tid/4046

5、77A安装setuptools-7.0B. 安装pycrypto-2.6.1安装包错解决:报错1:解决:yum install gcc报错2:解决:yum install python-devel最后pycrypto安装成功。C. 安装PyYAML模块(1)yaml-0.1.5(2)PyYAML-3.11D安装Jinja2模块(1)MarkupSafe-0.9.3(2)Jinja2-2.7.3E安装Paramiko模块(1)ecdsa-0.11(2)paramiko-1.15.1F安装ansible-stable-2.33.ansible客户端的需求被管理的服务器需要安装python2.4以上

6、的版本,如果python版本低于2.5,需要安装python-simplejson。生产环境大部分为Linux和AIX,少量的Windows,由于Windows的业务系统少量且非重要,这里暂时不通过ansible去管理windows客户端,linux系统基本都安装了python,所以只需要关注python版本;AIX基本都未安装python,所以需要批量安装python,后面将介绍方法。Linux python version2.5的安装simplejsonsimplejson-3.6.54.配置Ansible变量环境Ansible配置文件ini格式存储配置数据的,在ansible中,几乎所有

7、的配置项都可以通过ansible的playbook或者环境变量来重新赋值,在运行ansible命令时,命令将会按照预先设定的顺序查找配置文件,如下所示:(1)ANSIBLE_CONFIG:首先,ansible命令会检查该环境变量,及这个环境变量将指向的配置文件。(2)./ansible.cfg:其次,将会检查当前目录下的ansible.cfg配置文件。(3)/.ansible.cfg:再次,将会检查当前用户home目录下的ansible.cfg配置文件。(4 )/etc/ansible/ansible.cfg:最后,将会检查在用软件包管理工具安装ansible时自动产生的配置文件。在这里我们在

8、/etc/profile中,增加一行:在用户登录时,都设置该环境变量。由于是安装包安装,ansible的目录及相关文件都需要自己创建:修改/etc/ansible/ansible.cfg的内容:5.配置Ansible客户端主机环境cat /etc/ansible/hosts将生产所有服务器的IP地址按照以下格式加入hosts文件业务系统名称代码_x86ip x.x.x.xip x.x.x.xip x.x.x.xip x.x.x.xip x.x.x.x业务系统名称代码_aixip x.x.x.xip x.x.x.xip x.x.x.xip x.x.x.xip x.x.x.x这样的目的是为了区分不

9、同业务系统,不同操作系统类别,ansible在执行命令时,可以直接:去对该业务系统下的所有主机批量执行命令,也可以:对该业务系统下的所有x86主机批量执行命令,还可以:对所有x86主机批量执行命令。这一切都可以在你的掌控下,这里只是列举了我们的做法。6.配置Ansible ssh互信在ansible服务端生成ssh public和private key:将ssh public key下发到被管节点的.ssh目录:为了提高效率,可以将所有需要添加互信的client的ip地址编入文件/tmp/clienthosts.txt然后每个建立互信过程时,输入“yes”和client密码,这样下次服务端就可

10、以直接通过ssh连接客户端了。7.Ansible服务端与客户端连通性测试查看ansible版本:测试ansible服务端与客户端连通性:这时由于并非所有客户端都具备相应的条件,要么python未安装、要么python版本不符合要求,要么没有安装ssh等,会报如下错误:客户端python版本不符合要求。客户端未安装ssh客户端未安装python如果遇到这些报错,这里只需要按照下面的批量安装方式安装即可。8ansible连接客户端过程耗时过长问题在测试过程中,发现有一个问题非常困扰,就是创建ssh通道很慢,虽然ansible在同一个task里面是并行的控制多台受控端,但是每一个task都需要和受控

11、端创建ssh通道,非常影响效率,于是翻了下ansibel的官方网站,有说过openssh的controlpersist特性可以优化,其实就是持久化ssh socket,一次验证多次通信,并且只需要修改ansible ssh client的配置即可,但是这个特性需要比较新的openssh的版本。在解决问题之前,查看了下openssh的版本:这次需要将openssh版本升级到OpenSSH_6.7p1,OpenSSL版本不变,升级过程如下:(1)查看是否缺少依赖包:缺少了依赖包,可以通过YUM源直接安装这些缺少的包(2)上传安装包:openssh-6.7p1.tar.gz(3)备份ssh:(4)编

12、译安装新版本openssh(5)卸载旧版本openssh(6)安装新版本openssh(7)查看是否升级到了新版本(8)复制启动脚本到/etc/init.d、(9)将sshd加入开机自启动(10)启动sshd(11)添加openssh的controlmaster的配置验证,未持久化socket前,需要13秒持久化后,只需要1.5秒,满足需求,在进程数量调上去后,运行命令的并发速度还是不错的。9AIX操作系统python的批量安装(1)将AIX python的安装文件传至ansible服务端的/tmp目录:gdbm-1.8.3-2.aix5.1.ppc.rpmreadline-4.3-2.aix

13、5.1.ppc.rpmexpat-2.0.1-2.aix5.3.ppc.rpmpython-2.6.2-2.aix6.1.ppc.rpm(2)编辑文件/tmp/clienthosts_aix.txt将所有AIX的IP地址输入至该文件,并运行命令:(3)检查AIX客户端是否已经安装了python如果安装了python,版本也大于等于2.6,可以重新编辑/tmp/clienthosts_aix.txt将该ip地址去掉。(4)未安装python的AIX客户端开始安装:由于ansible服务端需要和安装了python的客户端才能通信,但是在客户端没有安装python前,可以通过ansibel的raw模

14、块直接通信,并安装python,用这种方式实现批量安装的目的。10.Linux批量安装simplejson由于Linux默认已经安装了python,这里只需要关注Linux的python版本即可,对于python版本2.5的,可以批量安装simplejson:(1)将simplejson-3.6.5.tar.gz传至ansible服务端/tmp目录(2)拷贝simplejson-3.6.5.tar.gz至需要安装的客户端(3)安装simplejson批量安装都是用类似的方法,这里也不再一一举例。11.ansible模块介绍:至此,整个生产环境ansible自动化运维体系的相关环境已经搭建完成,

15、可以开始尽情的表演了,不过要很好的运用ansible还需要掌握一些ansible的模块,下面简要介绍如下:(1)Setup:用来查看远程主机的一些基本信息这个模块还是很强大的,基本所有操作系统的信息、参数等都可以通过这个模块查到。(2)Ping:用来测试远程主机的运行状态(3)File:设置文件的属性比如创建文件符号链接:相关选项如下:force:需要在两种情况下强制创建软链接,一种是源文件不存在,但之后会建立的情况下;另一种是目标软链接已存在,需要先取消之前的软链,然后创建新的软链,有两个选项:yes|nogroup:定义文件/目录的属组mode:定义文件/目录的权限owner:定义文件/目

16、录的属主path:必选项,定义文件/目录的路径recurse:递归设置文件的属性,只对目录有效src:被链接的源文件路径,只应用于state=link的情况dest:被链接到的路径,只应用于state=link的情况state:directory:如果目录不存在,就创建目录file:即使文件不存在,也不会被创建link:创建软链hard:创建硬链接touch:如果文件不存在,则会创建一个新的文件,如果文件或目录已存在,则更新其最后修改时间absent:删除目录、文件或者取消链接文件(4)Copy:复制文件到远程主机比如将本地文件复制到客户端:相关选项如下:backup:在覆盖之前,将源文件备份

17、,备份文件包含时间信息。有两个选项:yes|nocontent:用于替代“src”,可以直接设定指定文件的值dest:必选项。要将源文件复制到的远程主机的绝对路径,如果源文件是一个目录,那么该路径也必须是个目录directory_mode:递归设定目录的权限,默认为系统默认权限force:如果目标主机包含该文件,但内容不同,如果设置为yes,则强制覆盖,如果为no,则只有当目标主机的目标位置不存在该文件时,才复制。默认为yesothers:所有的file模块里的选项都可以在这里使用src:被复制到远程主机的本地文件,可以是绝对路径,也可以是相对路径。如果路径是一个目录,它将递归复制。在这种情况下,如果路径使用“/”来结尾,则只复制目录里的内容,如果没有使用“/”来结尾,则包含目录在内的整个内容全部复制,类似于rsync。(5)Command:在远程主机上执行命令比如查看某个客户端的日期:值得注意的是,ansibel默认的模块是command,所以上面的命令可以简化为:(6)Shell:切换到某个shell执行指定的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论