背景
最近业务需要滚动更新,用ansible,然后就发现了一些ansible的用法,这里记录一下。
循环
一个典型循环
|
|
循环三次
问题: 如果想循环多个task怎么做
首先loop挪层数没法挪, 会报错
|
|
如果用role呢,demo如下
|
|
发现只执行了一次 其实这里最好的办法是include和include_role 用法参考如下demo
include_role写法
|
|
include写法
|
|
这里需要注意include这里其实也可以传变量,类似这样, 注意变量的问题,无论是-e命令行变量还是playbook变量,include和include_role,include等都是可以直接使用的
|
|
资产如何自刷新
这里需要介绍ansible本身其实有很多meta函数,建议大家找功能优先从官文搜索框搜索 https://docs.ansible.com/ansible/latest/collections/ansible/builtin/meta_module.html end_host 结束host这次的task end_play 结束整个playbook refresh_inventory 修改了/etc/ansible/hosts然后需要类似reload的操作, 这里基本逻辑是
|
|
这里需要注意,loop和when后面是不能再执行refresh_inventory的,那怎么做呢
分配
如何把一个task分派给特定主机 通过delegate_to, 但是注意include和include家族都不支持delegate_to,写了语法不会报错,但不会委派,但是include里面的内容可以被委派, 具体不再演示
|
|
这时候看输出, 有一个这样的箭头
|
|