欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > DOCX文档下载  

    Ansible 运维管理平台部署维护与调优常见问题及技巧.docx

    • 资源ID:1163705       资源大小:33.90KB        全文页数:6页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Ansible 运维管理平台部署维护与调优常见问题及技巧.docx

    Ansible是基于一致性、安全性、高可靠性设计的轻量级自动化工具,功能强大、部署便捷、描述清晰。对于管理员、开发者、IT经理等都容易上手,学习曲线较低,能够快速理解、掌握Ansible的自动化体系,满足不同技术级别的用户需求。本文分享了在Ansible部署、维护、调优中常见的一些难点解决办法和技巧,帮助大家更快的掌握使用方法。1、AnSible运维管理平台部署都可以部署在哪些系统上?对系统配置有哪些具体要求?对管理主机的要求:目前,只要机器上安装了Python2.6或PythOn2.7(WindOWS系统不可以做控制主机),都可以运行AnSibM主机的系统可以是RedHat,Debian,CentOSQSX,BSD的各种版本,等等。自2.0版本开始,Ansible使用了更多句柄来管理它的子进程,对于OSX系统,需要增加ulimit值才能使用15个以上子进程,方法Sudolaunchctllimitmaxfiles10242048,否则可能会看见"TOOmanyoPenfne”的错误提示。AnSible每个版本里面有详细的设备列表你可以参考目前常用的支持RedHa3Ubuntu,SUSE,WindoWS(AnSibIe需要Winrm),AlX(需要安装Python),HPUX(需要安装PythOn)网络设备CiSCo,Huawei;防火墙目前只能连接操作需要模块支持CiSCO的,华为的目前没看到模块。2、无法访问外网如何快速安装AnSible?是否有打包好的依赖包?Ansible软件安装的方式较多,非常灵活,可以满足各种环境的部署需求。一般可以直接用源码进行安装,包括从GitHUb源码库安装方式、TAR包安装、制作RPM包安装等。也可用操作系统软件包管理工具进行安装,包括YUM安装(适合FedOra、RHEL.CentOS).APT安装(适合UbUnu1)、HOmebreW安装(适合MaCoSX)、PlP安装等。其中大部分安装方式需要服务端连通公网,在无法连接外部互联网的条件下,可以通过TAR包的安装方式,快速搭建AnSibIe整套环境,所有安装包的下载地址为:yumdownload把需要的包下载到一个目录。然后把这个目录做成yum本地源。可以mount操作系统安装盘dvd版镜像iso文件,找到软件包目录然后将yum源设置为该目录。3、在编排程序执行,软件安装等过程中,AnSiblePlayboOk与ShelI脚本,各自的特点有哪些?【问题描述】有时候遇到IinUX系统批量安装程序,部分程序是公司内部开发人员编写,会倾向写She11,再通过批量工具执行脚本。在什么情况下会选择使用ansible工具?目前使用的是2.9.9版本,实际使用过程发现,ansible解决了大文件批量远程复制效率低的问题,以前老版本在上传IG的大文件非常慢?最大的三个不同:1、AnSibIe内置了大量的模块,这些模块是声明式的(Declarative),只需使用这些模块描述被管节点期望达到的状态。而SheIl脚本是命令式,声明式相比命令式更智能,例如分别使用Shell脚本和AnSibIePIayboOk启动某个服务,然后再完成其他事情。如果在启动时发现这个服务已经启动,监控端口己经被占用,Shell脚本将异常退出,返回非0,导致后面的脚本中断执行,但使用Playbook将不会遇到这样的问题。2、AnSible内置模块都是等幕性的(Idempotent)0等幕性对于自动化维护是非常重要的特性,这样在被管节点上多次执行AnsiblePlaybook也能达到同样效果。相对于直接执行操作系统SheIl脚本的方式是巨大的改进,操作系统脚本再执行一次可能就会产生不同的、非预期的结果。而AnSibIe具有鼎等性的特点,无论执行多少次,只要你的操作系统是同一个版本,那么安装出来的环境绝对是一样的,这样也就保证了应用所处的底层环境的一致性,而不会造成同一个版本的应用在不同的机器上运行出现不同的效果的问题。3、AnSibleRole功能,可以使用ansiblerole来简化PlaybOOk的编写且易于用,这点是SheIl脚本非常难以做到的。例如我们想要在主机A、B、C上部署JDKI.7的环境,主机D、E、F上部署JDKI.8的环境,而又想在A、B上安装Nginx;C、D上部署TomCat;E、F上部署MySQL,这时候使用Ansible工具是最佳的。对于这种情况只需要新建5个roles,分别是:JDKI.7、JDK1.8>Nginx、Tomcat>MySQLo对于A、B主机,安装JDKL7和NginX的es,C主机安装JDKI.7和TOmCat的roles;D主机安装JDKl.8和TomCat的角色,E、F主机安装JDKI.8和MySQL的角色。换句话讲,AnSibIe就是对于各种环境的搭积木式组合,你需要什么环境,我就给你装上什么环境,对于系统管理员来讲,不必再去每一台机器上根据需求名单一个一个安装,不仅效率低、劳动成本高、而且容易出错,造成环境的不一致。playbook,就像你坐镇指挥台指挥大家打仗,发布号令即可,最后执行的结果坐等就有报告。shell,就像你跑到步兵阵营,一个一个告诉他们一会儿怎么操作,然后再跑到骑兵阵营一个一个告诉他们怎么操作。执行结果你还需要一个一个记录,自己汇总。4、AnSible批量管理主机时选择长连接还是短连接?选择长连接时资源占用高不高?用长连接效率高,加快AnSible的执行速度,尤其是批量管理的主机上千上万时。而且长连接可以复用,对受管主机的开销就是一个连接的开销。开源版本的是无连接方式,每次创建SSh连接。企业版本支持MQ,是长连接方式。5、关于执行Ansible查看任务进度:在执行需要长时间等待的命令时,如何显示实时任务的状态。Ansibleplaybook执行任务时会显示当前任务执行到哪儿的<»6、AnSible告警通知功能除了邮件,现在支持微信方式吗?用AnSibIe调用脚本驱动微信接口,微信接口需要开发。7、关于AnSibIemySql模块执行添加权限,然后mysql查看用户权限却失败?【问题描述】在创建mysql用户时使用mysql模块,结果权限却没有执行上nane:Configetcy.cflineinfile:destetcfstate*presentlineite),rith-ites:-*characterset-server-titf8"naweservicestartmysqlservice:ane-ariadbenabledyesState-Startednaae:createadatabase1ysqljlb:IUgin.host:-U7,e.e,l,loginMu$er:-root-logi112port:"356"e:"keystone"encoding:-utf8*state:-present”naae:createdatabaseuserMygqlJJser:logn-user:rootnane:keystone用mysqLuser模块授权是没问题的,您可以用SeleCt*frommysq1.user看到实际用户权限己经授予的。只是您查看用户授权的命令有些许问题,要用ShoWgrantSfor;去查看,因为您通过模块去授权默认的主机是localhost8、如何使用Ansible使用变量在一个被控节点中,往一个文件中写入另一个被控节点的IP?【问题描述】在自己写ansible部署K8s的playbook时,master节点为192.168.23.20node节点为192.168.23.21192.168.23.22在编写node节点时要插入master的信息,由于无法做到以变量的方式把master节点ip信息插入到node节点的etckuberneteskubelet文件中,最后以var变量的方式解决。请问如何使用ansible使用变量在一个被控节点中,往一个文件中写入另一个被控节点的IP?(rootansibleroles*catk8s-node/tasks/set.config.yal*name:setfileconfigreplace:path:,(ite.path),regexp:'ite.regexp),replace:,te.replace),with-ites:- (path:,ZetcZkubernetesZconfig,reexp:'127.0.0.1',replace:,(host,backup:yes)- (path:,ZetcZkubernetesZkubelet',regexp:-address-127.,replace:-addre*.G',backup:yes)(path:'ZetcZkubernetesZkubelet,regexp:'"hostnaBe-override>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:*regstry.access.redhat.co«/rhel7/podinfrastructure:Iatest'.replace:'docker.lo/xiaotech/pod-infrastrcture:latest'rootansbleroles1«cat./hostsk8s*ansible.tar.9ZMin.ymlroles/Jroottaansibleroles”catk8snode/vars/aain.yamlpost:asterTrT3ansH11eroles1.I三种方式:1、直接在PIaybOok中通过“vars:变量名”的方式声明变量,并通过“变量名”的方式使用己声明的变量的方式来带入master节点的IP地址信息。2、在roles中用Var变量文件的方式(您的方式)。3、引用inventory文件中定义的主机变量。9、AnSible能否自定义功能?【问题描述】AnSibIe在使用过程中,可能会有部分功能无法满足要求,能否根据实际情况,进行自行定义?ANSIBLE很强大,能够支持自定义模块和自定义插件,来满足我们的实际需要,实现现有模块和插件无法达到的效果。Ansible自定义模块:模块是Ansible的核心引擎,Ansible中的模块就是传输给远程主机并执行的那点代码。它们可以使用远程主机可以执行的任何语言实现。Ansible的核心开发团队维护的Ansible核心模块大概有150多个,涵盖了云、命令、数据库、文件、网络、包、源控制、系统、工具、Web设施等等。另外,还有100多个其他额外模块,主要由社区贡献者维护,它们扩展了这些类别的很多功能。真正神奇就发生在模块代码内部,它们接受传入的参数,然后建立预期的结果。而且AnSibIe能够提供一种简单的机制来利用来自Ansible外部的自定义模块。Ansible自定义插件使用场景举例:1)除ParamikO、本机SSH、LocalWinrm连接方式外,希望AnSible基于新的通信方式与远程主机交互;2)除Ansible内置的With_items、with_fileglob循环体外,希望有新的遍历方式;3)除了AnSible内置的host_vars、group_vars等变量调用方式外,希望有新的变量定义方式;4)除了Ansible的内置的Jinja2模板渲染、to_yaml、tojson等过滤器外,希望有新的过滤器;5)定义新的回调机制,即捕获响应事件后自定义新的响应形式。Ansible的功能自定义可以通过两个方法来解决:方法:自定义脚本,如果自定义功能比较简单,可以通过操作系统脚本方式来实现的话,可以通过自定义一个Shell脚本,并通过ansible的SeriPt模块进行调用。以实现自定义功能方法2:自定义模块,这个会稍微复杂一点。ansible是通过python语言开发的,并且支持通过Pylhon语言自定义模块。不过这一点需要具有一定的编程知识。10、Ansible是否可以主动侦测网络拓扑中新增加设备,并根据不同的操作系统进行主动添加监控运维对象性能指标?这个AnSibIe没法做,AnSible管理的对象必须要支持OPENSSH、满足PYTHON版本要求、且要提前建立SSH互信,主动侦测设备接入并探测到操作系统类型没办法进行。但可以通过流程来驱动,例如流程平台的设备新增,信息自动录入CMDB,然后Ansible和CMDB联动,发现了这个设备,可以自动地通过默认的用户密码与之建立互信,然后采集数据。11、技巧分享:利用ssh-agent来提升Ansible管控的安全性默认情况下,Ansible会使用中控端操作系统上安装的原生SSH客户端来实现与远端主机的通信。在之前我们会建立中控端与远端主机的SSH互信,首先利用ssh-keygen来生成一对私钥和公钥,再利用ssh-copy-id将公钥下发到远端主机,中控端则可以利用私钥免密地与远端主机通信。然而这样一来,如果私钥文件泄露了,其他服务器使用这个私钥同样能够免密地和远端主机通信。这时我们可以采用加密的SSH私钥来增强私钥的安全性,在用ssh-kengen生成私钥时,输入加密密码。当私钥和公钥配对前,会强制要求输入这个私钥密码。然而这样一来又会带来另一个新问题,ansible管控了成千上万个远端主机,不可能每次都要输入私钥密码来执行任务。这时,我们就要用到SShagent了,它有以下几个优点:1、SShagent让加密的SSH私钥的管理变得更加容易,通过它能够实现免私钥密、免远端主机密码去登录远端主机。使用方法:我们只需在中控端通过“ssh-agent”命令来启动sshagent,然后通过“ssh-add私钥路径/私钥文件名”来添加私钥至ssh-agent,第一次需要输入加密私钥的密码。在添加私钥时,可能会出现"Couldnotopenaconnectiontoyourauthenticationagent”的报错,这时需要运行wssh-agentbash,命令来解决。最后我们可以使用“ssh-add-L”命令来查看添加到agent中的所有私钥。2、如果之前我们使用了ansible来管理不同的SSH私钥,使用sshagent可以简化ansible的配置文件,而不必在主机上明确指定ansible_ssh_private_key_file.»这样一方面加强了ansible利用ssh私钥的安全性,另一方面也避免了因私钥密码的设置带来的不便利性,同时也增强了私钥的管控的统一性。12、技巧分享:使用AnSiblerole简化Playbook编写,且易于复用PIaybOOk是AnSible的主要管理方式,也是ansible功能强大的关键所在,playbook通过多个task集合完成一类功能,这类功能的复杂度可以低,低到一个简单的操作也可以用PIaybOOk去实现,也可以非常高,编制出非常匏杂的功能逻辑。然而,如果在复杂任务下,仅用一个playbook剧本去实现整个复杂逻辑将变得很难,且非常不容易维护,也没办法将这个狂杂playbook更用到其他类似功能实现中去。这时就要用到ansiblerole的方式来管理PIaybOok了,通过它来将更杂任务分解为比较小的部分,将原来匏杂的PEybOok分割为多个文件,大大简化第杂PIaybOok的编写。Ansiblerole可以看成是一台或者多台主机的某些事情,分开进行playbook编写,通过规范化的目录结构来重新整理复杂playbook,例如我们需要部署一个nginx+was+mysql数据库,我们可以设计以下目录格式:rootervscapinginx_was_mysql#treedeploy_nginx_was_mysql.yamlhostsrolesbase_instal1files1-RHEL.repotasks,main,yamltemplates,ntp.conf.j2mysql.installEtasks,main,yamltemplates,f.j2nginx_instal1Etasks,main,yamltemplates,nqinx.cfg.j2WaSJnStaTltfiles,Wasinstall.shtasks,main,yamlvans1all其中deploy_nginx_was_mysql.yaml是roles的入口文件,例如:-name:installntpdserviceandinitbaseenvironmentforallhostshosts:allroles:-base_instal1-name:installmysqlhosts:mysqlroles:-mysql-install-name:installwashosts:wasroles:-was_install-name:installnginxhosts:nginxroles:-nqinx_install这里就可以根据hosts文件中定义的不同主机组来引用不同的roles进行相关的配置部署,并通过:ansible-playbook-ihostsdeploy_nginx_was_mysql.yaml来调用。hosts文件中定义了nginx、mysql和was主机组相关信息。vars目录下的文件中定义PlaybOOk中需要引用到的变量。roles目录下则编制了base_install、mysqlJnstallWaS_install、nginx_install等四个不同roles的PIayboOk、配置模板和文件等内容。通过这样分拆的方式,一个复杂的PlayboOk大大简化、清晰化,而且es目录下的所有子roles都可以复用到其他项目中去使用,我们的任务就是编写一个个小型的playbook,最后再用role的方式去整合,形成一个大的复杂的功能逻辑。使用Ansible实现自动化运维的一些技巧最近一年才有机会在生产环境上使用AnSible。用的过程中,想把一些小技巧记录下来,避免自己忘记。如果能帮助到其他同学就更好了。如果有同学指出有更好的方法,就更更好了。技巧1:校验你的模板文件是否正确通常我们会使用templatemodule来生成应用的配置,比如生成Nginx的配置或者SUdoerS配置。而像SUdOerS文件内的配置错误可能直接导致无法登录。所以,我们希望在生成这些配置文件后能校验一下它的正确性。如果校验失败,直接停止,不生成该配置文件。而templatemodule有一个属性Validate就是为了实现这一需求的:-template:src:"user-sudoers"dest:'7etc/sudoers.d/abc"VaIidate:ViSUdO-Cf%s校验Nginx配置文件的文件:-name:COPythenginXfnetemplate:src:nginx.conf.j2destetcnginxnginx.confvalidatez'7usrsbinnginx-t-c%s"notify:-restartnginx校验Prometheus配置文件:-name:COPyPrOmetheUSCOnfigtemplate:Srciprometheus.yml.j2dest:'7etcprometheus.yml"Validate:"PrOmtooICheCkCOnfig%s”notify:reloadprometheusconfig校验Logstash配置文件:-nameztemplateconfigstemplate:src:"logstash-filter.confdest:'7optlogstashconf,validate:"logstash-t-f%s"environment:JAVA_HOME:""#logstash命令需要JAVA_H0ME环境变量技巧2:使用host变量解决分布式系统中的id问题在部署ZookeePer时,通常会部署3台组成集群,同时每台ZoOkeePer都需要在配置一个myid的文本文件,而这个文件中只放id。而id是要求每台机器都是不同的。这时host变量派上用场了。定义host变量有两种方式:第一种:直接在inventory文件中定义zk192.168.1.1Imyid=I192.168.1.12myid=2192.168.1.13myid=3第二种:在host_vars目录中定义这种方式笔者认为可维护性更高group_varshostvars192.168.1.11192.168.1.12192.168.1.13hosts#cat192.168.1.1Imyid:1不推荐两种方式都使用,因为变量的作用域问题会把你搞晕技巧3:在执行Sheil时需要某个环境变量某个shell需要一个临时变量,可以使用environment实现-name:install|Buildcommonsdaemon.shell:"./configure&&makechdir=/opt/pinpoint/"environment:-JAVA.HOME:""技巧4:Jinjia2语法:去除最后的逗号以下方式会生成:a,a,a,a,注意最后的逗号我们是不需要的:%forfinfiles%)a,%endfor%)这时,我们可以这样:%forfinfiles%)a%-ifnotloop.last-%J%endif%)%endfor%)技巧5:利用host变量解决机器连接方式的不统一的问题机器标准化要求每台机器的SSh连接方式及管理员用户名及密码都是一样的。但是事实中,面对老机器,常常做不过。所以,我们的AnSible脚本必须能做到不同的机器可以使用不同的连接方式、管理员用户名和密码。利用host变量就可以实现了。举个例子,当前的文件内容如下:group_varshostvars192.168.1.11192.168.1.12192.168.1.13hosts#cat192.168.1.11ansible_ssh_user:abcansible_become_method:sudoansible_ssh_private_key_file:/users/abc/id_rsa#cat192.168.1.l2ansible_ssh_user:bcdansible_become_method:sudoansible_ssh_pass:1234567#cat192.168.l.l3ansible_ssh_user:bcdansible_become_method:suansible_ssh_private_key_file:/users/bcd/id_rsaansible_ssh_pass:1234567小结常识和技巧之间的界限很模糊。总之,希望对读者有帮助。

    注意事项

    本文(Ansible 运维管理平台部署维护与调优常见问题及技巧.docx)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开