《Ansible 运维管理平台部署维护与调优常见问题及技巧.docx》由会员分享,可在线阅读,更多相关《Ansible 运维管理平台部署维护与调优常见问题及技巧.docx(6页珍藏版)》请在第壹文秘上搜索。
1、Ansible是基于一致性、安全性、高可靠性设计的轻量级自动化工具,功能强大、部署便捷、描述清晰。对于管理员、开发者、IT经理等都容易上手,学习曲线较低,能够快速理解、掌握Ansible的自动化体系,满足不同技术级别的用户需求。本文分享了在Ansible部署、维护、调优中常见的一些难点解决办法和技巧,帮助大家更快的掌握使用方法。1、AnSible运维管理平台部署都可以部署在哪些系统上?对系统配置有哪些具体要求?对管理主机的要求:目前,只要机器上安装了Python2.6或PythOn2.7(WindOWS系统不可以做控制主机),都可以运行AnSibM主机的系统可以是RedHat,Debian,C
2、entOSQSX,BSD的各种版本,等等。自2.0版本开始,Ansible使用了更多句柄来管理它的子进程,对于OSX系统,需要增加ulimit值才能使用15个以上子进程,方法Sudolaunchctllimitmaxfiles10242048,否则可能会看见TOOmanyoPenfne”的错误提示。AnSible每个版本里面有详细的设备列表你可以参考目前常用的支持RedHa3Ubuntu,SUSE,WindoWS(AnSibIe需要Winrm),AlX(需要安装Python),HPUX(需要安装PythOn)网络设备CiSCo,Huawei;防火墙目前只能连接操作需要模块支持CiSCO的,华为
3、的目前没看到模块。2、无法访问外网如何快速安装AnSible?是否有打包好的依赖包?Ansible软件安装的方式较多,非常灵活,可以满足各种环境的部署需求。一般可以直接用源码进行安装,包括从GitHUb源码库安装方式、TAR包安装、制作RPM包安装等。也可用操作系统软件包管理工具进行安装,包括YUM安装(适合FedOra、RHEL.CentOS).APT安装(适合UbUnu1)、HOmebreW安装(适合MaCoSX)、PlP安装等。其中大部分安装方式需要服务端连通公网,在无法连接外部互联网的条件下,可以通过TAR包的安装方式,快速搭建AnSibIe整套环境,所有安装包的下载地址为:yumdo
4、wnload把需要的包下载到一个目录。然后把这个目录做成yum本地源。可以mount操作系统安装盘dvd版镜像iso文件,找到软件包目录然后将yum源设置为该目录。3、在编排程序执行,软件安装等过程中,AnSiblePlayboOk与ShelI脚本,各自的特点有哪些?【问题描述】有时候遇到IinUX系统批量安装程序,部分程序是公司内部开发人员编写,会倾向写She11,再通过批量工具执行脚本。在什么情况下会选择使用ansible工具?目前使用的是2.9.9版本,实际使用过程发现,ansible解决了大文件批量远程复制效率低的问题,以前老版本在上传IG的大文件非常慢?最大的三个不同:1、AnSib
5、Ie内置了大量的模块,这些模块是声明式的(Declarative),只需使用这些模块描述被管节点期望达到的状态。而SheIl脚本是命令式,声明式相比命令式更智能,例如分别使用Shell脚本和AnSibIePIayboOk启动某个服务,然后再完成其他事情。如果在启动时发现这个服务已经启动,监控端口己经被占用,Shell脚本将异常退出,返回非0,导致后面的脚本中断执行,但使用Playbook将不会遇到这样的问题。2、AnSible内置模块都是等幕性的(Idempotent)0等幕性对于自动化维护是非常重要的特性,这样在被管节点上多次执行AnsiblePlaybook也能达到同样效果。相对于直接执行
6、操作系统SheIl脚本的方式是巨大的改进,操作系统脚本再执行一次可能就会产生不同的、非预期的结果。而AnSibIe具有鼎等性的特点,无论执行多少次,只要你的操作系统是同一个版本,那么安装出来的环境绝对是一样的,这样也就保证了应用所处的底层环境的一致性,而不会造成同一个版本的应用在不同的机器上运行出现不同的效果的问题。3、AnSibleRole功能,可以使用ansiblerole来简化PlaybOOk的编写且易于用,这点是SheIl脚本非常难以做到的。例如我们想要在主机A、B、C上部署JDKI.7的环境,主机D、E、F上部署JDKI.8的环境,而又想在A、B上安装Nginx;C、D上部署TomC
7、at;E、F上部署MySQL,这时候使用Ansible工具是最佳的。对于这种情况只需要新建5个roles,分别是:JDKI.7、JDK1.8Nginx、TomcatMySQLo对于A、B主机,安装JDKL7和NginX的es,C主机安装JDKI.7和TOmCat的roles;D主机安装JDKl.8和TomCat的角色,E、F主机安装JDKI.8和MySQL的角色。换句话讲,AnSibIe就是对于各种环境的搭积木式组合,你需要什么环境,我就给你装上什么环境,对于系统管理员来讲,不必再去每一台机器上根据需求名单一个一个安装,不仅效率低、劳动成本高、而且容易出错,造成环境的不一致。playbook,
8、就像你坐镇指挥台指挥大家打仗,发布号令即可,最后执行的结果坐等就有报告。shell,就像你跑到步兵阵营,一个一个告诉他们一会儿怎么操作,然后再跑到骑兵阵营一个一个告诉他们怎么操作。执行结果你还需要一个一个记录,自己汇总。4、AnSible批量管理主机时选择长连接还是短连接?选择长连接时资源占用高不高?用长连接效率高,加快AnSible的执行速度,尤其是批量管理的主机上千上万时。而且长连接可以复用,对受管主机的开销就是一个连接的开销。开源版本的是无连接方式,每次创建SSh连接。企业版本支持MQ,是长连接方式。5、关于执行Ansible查看任务进度:在执行需要长时间等待的命令时,如何显示实时任务的
9、状态。Ansibleplaybook执行任务时会显示当前任务执行到哪儿的127.replace:,-hostnameoverride三(bost-nameIquote(- ath,/etc/kubernetes/kubelet,.regexp:-api-serverahttp:/127.0.0.1:8080*.replace:-api-servrshttp:ho沁)|8喇),Th:,ZetcZkubernetesZkubelet,.regexp:,KUBCLETePORT,.replace:,KU6ELET-P0RT,path:,ZetcZkubernetesZkubelet,regexp:*
10、regstry.access.redhat.co/rhel7/podinfrastructure:Iatest.replace:docker.lo/xiaotech/pod-infrastrcture:latestrootansbleroles1cat./hostsk8s*ansible.tar.9ZMin.ymlroles/Jroottaansibleroles”catk8snode/vars/aain.yamlpost:asterTrT3ansH11eroles1.I三种方式:1、直接在PIaybOok中通过“vars:变量名”的方式声明变量,并通过“变量名”的方式使用己声明的变量的方式来
11、带入master节点的IP地址信息。2、在roles中用Var变量文件的方式(您的方式)。3、引用inventory文件中定义的主机变量。9、AnSible能否自定义功能?【问题描述】AnSibIe在使用过程中,可能会有部分功能无法满足要求,能否根据实际情况,进行自行定义?ANSIBLE很强大,能够支持自定义模块和自定义插件,来满足我们的实际需要,实现现有模块和插件无法达到的效果。Ansible自定义模块:模块是Ansible的核心引擎,Ansible中的模块就是传输给远程主机并执行的那点代码。它们可以使用远程主机可以执行的任何语言实现。Ansible的核心开发团队维护的Ansible核心模块大概有150多个,涵盖了云、命令、数据库、文件、网络、包、源控制、系统、工具、Web设施等等。另外,还有100多个其他额外模块,主要由社区贡献者维护,它们扩展了这些类别的很多功能。真正神奇就发生在模块代码内部,它们接受传入的参数,然后建立预期的结果。而且AnSibIe能够提供一种简单的机制来利用来自Ansible外部的自定义模块。Ansible自定义插件使用场景举例:1)除Parami