ansible适合的系统有哪些

ansible适合的系统有哪些,第1张

为什么要收购一款IT自动化工具?自动化可以满足业务线在速度和简洁性方面日益增加的需求,其中包括:在部署基础设施即服务(IaaS)和平台即服务(PaaS)云的过程中为云原生应用程序提供支持:IT自动化工具可以极大地提高云部署的速度,减少手工 *** 作所带来的人为错误;在DevOps实践过程中为敏捷应用程序开发提供支持:采用DevOps方法需要一个让开发人员能够尽早及经常发布的工具链。而在任何DevOps工具链中,IT自动化工具都是一个关键所在,因为它们可以在很短的时间内 *** 作对复杂应用程序架构和大量应用程序实例所做的大量变更;在IT流程自动化过程中为服务编排提供支持:Red Hat的云管理平台CloudForms依赖于这样一款自动化工具来组合应用程序的每一层。为什么选择了Ansible?对于这个问题,Red Hat从两个方面进行了说明。在产品层面,Ansible符合Red Hat希望通过开放式开发提供无障碍设计和模块化架构的目标,主要体现在:Ansible易于使用:这从下面的两个例子可见一斑。一是,Ansible的playbook使用人类可读的YAML代码编写,简化了自动化流程的编写和维护;二是,Ansible使用标准的SSH连接来执行自动化流程,不需要代理,更容易融入已有的企业IT环境;Ansible是模块化的:Ansible提供了400多个模块,可以用于扩展该产品的功能。这是Red Hat希望在其管理产品中提供的一个重要功能;Ansible是一个非常受欢迎的开源项目:在GitHub上,Ansible有将近13000颗星和4000个分支。另据Redmonk统计,Hacker News提及Ansible的次数飞速增长。在资产组合方面,Ansible符合Red Hat希望提供多层架构、多层一致性和多供应商支持的目标,主要体现在:Ansible支持多层部署:按照设计,Ansible通过VM和容器为多层应用程序的部署和配置提供支持。这意味着组织可以将同一应用程序的不同组件自动部署到运行效率最高的层上。比如,Ansible可以同时在Vmware vSphere服务器虚拟环境中管理VM和客户 *** 作系统,在OpenStack IaaS云上部署和管理实例,在OpenShift PaaS云上部署应用程序。Ansible为架构的多个层次带来一致性:借助Ansible,可以通过编程 *** 作计算架构中从基础设施到应用程序之间的每一层。比如,Ansible可以自动化包括网络、存储、OS、中间件和应用程序层在内的所有配置工作。Ansible支持异构IT环境:Ansible可以自动配置来自许多供应商的各种技术,而不只是Red Hat的技术。比如,Ansible既支持Linux,也支持Windows;Ansible使IT组织可以管理各种ISV和IHV技术,从F5 Big-IP和Citrix NetScaler网络控制器到Amazon Web服务和Google云。Ansible如何匹配到Red Hat的管理策略中?在Red Hat当前的管理资产组合中,Red Hat CloudForms将继续在所支持的架构层次上提供整体编排和策略执行功能。Ansible将按照CloudForms自助服务配置门户的请求自动在每个架构层次上准备、配置基础设施资源和应用程序。Red Hat Satellite将根据Ansible的自动化工作流程在每个架构层次上准备、配置Red Hat系统。在Hackr News上,许多网友都对项目创建者mpdehaan2表示了祝贺,认为他及其联合创始人理应从这次收购中获得一份丰厚的回报。网友jerrac就表示:是的,那绝对是他应得的……没有什么东西能比得上项目创建者直接提供帮助了,那真得增强了人们对产品的信心。这一观点很有代表性。有多名网友都对mpdehaan2在Ansible社区建设上所投入的精力表示了赞赏和感谢,因为他在HN、博客、推特等的讨论中一直很活跃。网友agentgt则指出,Red Hat收购Ansible还有一个非常重要的原因,就是将Ansible项目中的部分人才带回Red Hat,因为他们中有许多人以前就在Red Hat工作。另外,在回答网友的质疑时,Red Hat员工eLobato写道:我们已经开源了所有收购的项目,我不知道具体是什么原因让你认为它不会开源,FAQ上只是说将会有一个时间表,就像以前ManageIQ那样。

在playbook执行过程中,ansible收集facts变量是很耗时的一个步骤,如果我们确定play中没有用到fact变量信息,可以直接将其关闭,关闭获取 facts 很简单,只需要在 playbook 文件中加上“ gather_facts: no ”即可。
我们可以给play单独添加一个 setup 模块,并通过 gather_subset 参数严格控制 facts 的收集种类,这样既拿到了我们需要的fact变量又提高了 ansible 的执行效率, gather_subset 参数的默认值为all。

forks用来设置同一时刻与目的主机连接数,也可以理解为主机并行数,默认值比较保守为5。在生产中,多数情况下我们会更改这个参数。如果控制节点的CPU和网络性能够用,设置几十上百个也是可以的
在ansiblecfg设置forks的全局默认值:

ansible使用ssh协议和被管控主机通信,开启长连接后会有一个established的连接
openssh56 以后的版本支持了 multiplexing ,如果管控机命令行 执行ssh -V得到的版本号大于56 就可以设置长连接

开启「 pipelining 」特性实际上是通过 减少ssh连接次数 ,从而 缩短ansible执行时间 。
在 部署大规模服务器或引用模块非常多 时,开启「pipelining」特性会给ansible带来显著的性能提升。

/etc/ansible/ansiblecfg 的 pipelining 参数设置为 True 即可,该参数默认值是False。

缺点: 如果我们要开启pipelining特性,要么 playbook 不使用 sudo 越权功能,要么取消 sudo 的「 requiretty 」特性。

Strategy

strategy的作用范围是一个play,通过设置不同参数,控制一个play内所有任务的执行策略。

设置方法为更改ansiblecfg里的strategy参数,默认值为linear,可选参数为free
linear :

free :

如果未为poll指定值,则默认轮询值为10秒
异步时间限制没有默认值。如果不使用'async'关键字,则任务将同步运行,这是Ansible的默认设置。

在异步执行任务时,需要注意那些有依赖性的任务。对于那些对资源要求占有排它锁的任务,如yum,不应该将Poll的间隔设置为0。如果设置为0,很可能会导致资源阻塞。

总结来说,大概有以下一些场景需要使用到ansible的异步特性:

当然也有一些场景不适合使用异步特性:

异步优化
参考链接

原文地址: Ansible系列-基础篇-Ansible 常见模块的使用

上一篇中简单尝鲜了几个模块,本篇整理下实际中用到的模块及其用法Demo,总计有19个模块,分别为
ping、setup、debug、user、group、authorized_key、shell、script、command、service、systemd、copy、template、synchronize、file、lineinfile、yum、cron

ping 模块主要是验证 管理节点 和 目标节点 之间的连通性,是否正常配置好了对应账号的ssh免密登录

上一篇中配置的时候提到ansible facts 收集目标主机信息,也可以使用 setup 模块。

这个模块的好处就是让了解到 Ansible 都有哪些内置的变量,这些变量在我们后续写playbook的时候,在role templates 中配置很有帮助,

举个列子,Ansible 批量部署 zabbix agent,每个agent的配置文件中的 ListenIP 和 Hostname 我们就可以使用facts中的变量 ansible_default_ipv4address 和 ansible_hostname

另外一旦知道知道都有哪些变量的时候,下次我们就可以再收集信息展示的时候,加参数通过filter来过滤我们想看的变量就可。比如

顾名思义,就是我们想调试输出一些结果的时候,比如上面提到的我想知道目标主机的IP地址

这里有两种用法,一种是 msg 输出,需要带 {{ variable-name }} , 另外一种是 var 用法,直接写变量名即可,不用添加 {{ }}

远程管理用户/用户组

主要用来给目标主机用户配置公钥,默认到目标用户家目录的ssh目录的authorized_keys文件 没有则创建authorized_keys文件

这里是把 shell 和 script、command放到一起做对比,其实还有个 raw

其中 command 执行单一命令不能使用管道符、重定向符等,raw 类型command,可以使用管道符等;

shell 和 script 类似,都可以执行脚本,却别在于script执行的脚本在ansible管理机上,而shell执行的脚本必须先放到目标节点上去,才能执行;

另外shell执行可以使用环境变量,bash等,但是script只是执行脚本,不能带 bash

都是用来管理服务器上的服务,区别在于Service服务管理用于centos6及以前的系统,而systemd命令应用于centos7系统

核心参数 name\state\enabled

把管理节点的文件copy到目标节点,并配置相关属性

template 的作用和copy一样,区别在于源文件是jinja2格式,文件中可以配置 Ansible变量,然后在目标节点上替换成对应的目标值

另外一个需要住的就是在roles中,copy默认是从files目录获取文件,template默认是 templates 文件夹获取模板文件

主要用于目录、文件的同步,基于 rsync实现,主要是有 push 和 pull 两种方式, 如果是push 推送,则src是管理节点,dest是目标节点;如果是pull拉取,则src是目标节点,dest是管理节点

在目标节点创建文件或目录,删除文件或目录,修改文件或目录的权限等;核心参数有:path、state、owner、group、mode、recurse

在文件中添加、修改、删除一行记录,在实践中用的很多,这里做简单介绍,后续有单独文章详细介绍

顾名思义,就是我们在Centos下进行yum安装,核心参数主要关注: name 需要安装的软件名、state 软件的状态(present、absent、removed、latest)和 enablerepo 特殊情况指定yum源

管理Linux定时任务,核心参数说明
name 定时任务的名称、 state 任务的状态、minute/hour/day/month/weekday 分别设定任务执行的时间配置、user指定是哪个用户配置任务,默认是管理员


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zz/13444226.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-07
下一篇 2023-08-07

发表评论

登录后才能评论

评论列表(0条)

保存