我们可以给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指定是哪个用户配置任务,默认是管理员
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)