首页 > 其他分享 >ansible高级操作 serial滚动更新

ansible高级操作 serial滚动更新

时间:2024-06-10 21:22:10浏览次数:12  
标签:异步 滚动 name 任务 ansible async serial 执行

1.异步操作和轮询

默认情况下,剧本中的任务会一直处于打开状态,直到任务在每个节点上完成。
这样可以会造成阻塞和超时,因此我们可以使用异步模式一次运行所有任务,然后轮询直到它们完成为止。
Ansible本身就是采用的多线程来操作多个主机节点,可以使用-P来异步操作。
现在所说的异步操作和轮询是针对单个任务来说的。

(1)超时

如果你想避免因为连接超时问题导致任务执行失败,可以指定poll轮询次数,
这样就不会因为一次没连上就报错。

复制代码
---
- hosts: all
  tasks:
    - name: "默认长时间运行操作,最多等待45秒,轮询5次"
      command: /bin/sleep 15
      async: 45
      poll: 5
复制代码

async是异步时长,如果没有指定就是同步操作。
poll代表轮询次数,默认值15.

执行结果:

(2)并发

如果poll为0,Ansible启动任务之后会立即转到下一个任务,这样就会并发执行任务。
通过指定poll为0,可以来异步运行任务。
如果使用--forks来执行异步任务,效率会更高。

如果希望异步任务执行并稍后检查,可以这样

复制代码
- name: 'YUM - async task'
  yum:
    name: docker-io
    state: present
  async: 1000
  poll: 0
  register: yum_sleeper

- name: 'YUM - check on async task'
  async_status:
    jid: "{{ yum_sleeper.ansible_job_id }}"
  register: job_result
  until: job_result.finished
  retries: 30
复制代码

 

2.滚动更新

你现在有100个节点,你想分批次操作,比如一次操作10台,就可以使用serial参数来定制。
现在我有两个节点:

常规方式来执行任务:
serial1.yaml

复制代码
---
- hosts: all
  gather_facts: False
  tasks:
    - name: task one
      command: hostname
    - name: task two
      command: hostname
复制代码

执行结果:

执行一次,执行了两个任务。
现在添加serial=1,在此查看结果:

我们发现,现在是分两次执行了。

我们不仅可以指定没批执行的数量,还可以指定比率。
  serial: "30%"
还可以指定一个列表:
  serial:
  - 1
  - 5
  - 10
第一批1台,第二批执行5台,这样循环着来。
当然可以将多个批次使用百分比列出:
  serial:
  - "10%"
  - "20%"
  - "100%"
混合定义也是可以的:
  serial:
  - 1
  - 5
  - "20%"

这个功能有什么用了,现在有10个任务,常规做法是所有的机器执行完task1之后,再执行task2,
如果task2有问题,那么这批操作不就作废吗,如果第一批只执行一台,那么就立刻检测出task2任务的异常了。
这样可以大大提高效率。

 

3.最大故障率

默认情况下,只要批处理中存在尚未失败的主机,Ansible就将继续执行。
我们可以通过max_fail_percentage参数来指定故障了。
  max_fail_percentage: 30
如果10台中有3台出现问题,操作即结束。

4.跑一次

在某些情况下,可能只需要对一批主机运行一次任务,可以通过run_one参数来实现。
  run_once: true
该指令强制任务在当前批次的第一个主机上执行任务,然后将所有结果同步给同一批次的其它主机。

5.本地剧本

如果要在本机上执行剧本,只需要:
  ansible-playbook playbook.yml --connection=local
或者在剧本中指定:
  - hosts: 127.0.0.1
    connection: local

标签:异步,滚动,name,任务,ansible,async,serial,执行
From: https://www.cnblogs.com/cheyunhua/p/18241048

相关文章

  • C++全栈聊天项目(21) 滚动聊天布局设计
    滚动聊天布局设计我们的聊天布局如下图最外层的是一个chatview(黑色),chatview内部在添加一个MainLayout(蓝色),MainLayout内部添加一个scrollarea(红色),scrollarea内部包含一个widget(绿色),同时也包含一个HLayout(紫色)用来浮动显示滚动条。widget内部包含一个垂直布局Vlayout(黄......
  • 封装el-select滚动底部加载更多
    封装el-select滚动底部加载更多vue2实现el-select下拉列表滚动加载更多数据父组件页面使用<template><LoadMoreSelectv-model="selectValue":fetchOptions="fetchStockLocationData"keyField="Cid"labelField="Code"valu......
  • 执行 flux bootstrap 时 ansible 超时
    我正在使用HyperledgerBevel管理HyperledgerFabric2.2网络。到目前为止,它一直运行正常,但我在执行游戏本时没有尝试执行一些维护操作。ansible-playbookplatforms/shared/configuration/site.yaml-e"@./build/network-iprd-qa.yaml";这个方法曾经有效,但现在当fl......
  • Android RecyclerView 获取当前滚动到的Item项
    背景:RecyclerView 左右滑动时,需要获取当前显示在页面上的选项卡步骤:1.RecyclerView  添加addOnScrollListener,回调中可以直接获取对应ItemIndexxxxRecyclerView.addOnScrollListener(newRecyclerView.OnScrollListener(){ @Override publicvoidonScrollStateChang......
  • Android 水平滚动List 一项Item占满一页宽 设定单次滑动一次切换一次Item
    背景:水平滚动的List,一项Item占满页面宽度,相当于数量不定的选项卡,每个选项卡占满一页,左右滑动时,如何限制一次只能滑动一个Item步骤:1.水平滚动布局linearLayoutManager=newLinearLayoutManager(this);linearLayoutManager.setOrientation(LinearLayoutMana......
  • 前端菜鸡流水账日记 -- checkbox二级菜单滚动条设置
    下午好哇,今天二更咯,这次想说的是一个ElemenuUI中的一个组件--checkbox多选框,管网的地址是https://element.eleme.cn/#/zh-CN/component/installation,关于这个的具体的写法,感兴趣的小伙伴可以去管网看看,很快就能找到的我今天要记录的是关于他的二级菜单当盒子的内容过多时,超......
  • uniapp-two-day-two之基础内容and滑动组件和滚动栏
    基础内容又是码农无聊的一天,今天也就上了一节早课,下课想学习的服了结果玩了半天手机,终于是在下午学上了,真的是很难控制自己。闲聊结束。text标签text中有上面这几个属性,其中在我看来selectable是挺重要的一个属性,是吧现在不都说是cv工程师吗?可不就是这个来组成了我们工程师......
  • 序列化器(Serializers)踩坑记录
    1、data数据不能加'.values()'deflistParticulars(self,request,*args,**kwargs):particulars=xmind_particulars.objects.all()#不能加values()serializer=ParticularsSerializer(particulars,many=True)returnAPIRespones('......
  • 裁剪的3种方式,CSS 如何隐藏移动端的滚动条?
    在移动端开发中,经常会碰到需要横向滚动的场景,例如这样的但很多时候是不需要展示这个滚动条的,也就是这样的效果,如下你可能想到直接设置滚动条样式就可以了,就像这样::-webkit-scrollbar{display:none;}目前来看好像没什么问题,但在某些版本的iOS上却无效(具体待测试),滚......
  • 弹窗中的vxe-table的横向滚动条不灵敏
    问题:弹窗是基于el-dialog封装的,里面嵌套了vxe-table,开发过程中没发现不灵敏最近才发现切换点击详情弹窗时有时候点击空白点不中,拖中也拖动不了定位问题:1.可能是z-index层级问题造成了遮挡,F12调整层级没效果2.当F12调整时.el-scrollbar__bar.is-horizontal里面有个样式positi......