首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在主机上一个接一个地运行不可访问任务。

在主机上一个接一个地运行不可访问任务。
EN

Stack Overflow用户
提问于 2020-09-24 06:05:12
回答 1查看 124关注 0票数 0

我喜欢升级我的MongoDB,我创建了这样一个剧本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- hosts: all
  tasks:

  - name: Shutdown mongod service
    service:
      name: mongod
      state: stopped

  - name: Replace MongoDB binaries
    yum:
      name: mongod-org
      state: present

  - name: Start mongod service
    service:
      name: mongod
      state: started

问题是,ansible首先在所有主机上停止服务,这使得我的应用程序不可用,然后对all进行升级,最后在所有主机上再次启动服务。

如何为每个主机依次运行这些任务,即

service

  • replace binaries

  • start service

  • repeat
  1. 转到第一个主机
  2. ,在下一个主机上停止
  3. ,直到所有主机完成

我尝试过使用blockinclude_tasks,但结果总是这样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
TASK [Shutdown mongod service] ***********************************************
changed: [d-mipmdb-cfg-01]
changed: [d-mipmdb-cfg-03]
changed: [d-mipmdb-cfg-02]

TASK [Replace MongoDB binaries] ******************************************************************************
changed: [d-mipmdb-cfg-01]
changed: [d-mipmdb-cfg-03]
changed: [d-mipmdb-cfg-02]

TASK [Start mongod service] ******************************************************************************
changed: [d-mipmdb-cfg-03]
changed: [d-mipmdb-cfg-01]
changed: [d-mipmdb-cfg-02]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-24 06:10:44

https://docs.ansible.com/ansible/latest/user_guide/playbooks_strategies.html

默认情况下,Ansible与您在每次播放的hosts:字段中设置的模式中的所有主机并行运行。如果希望一次只管理几台机器,例如在滚动更新期间,可以使用serial关键字定义一次应该管理多少主机:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- name: test play
  hosts: webservers
  serial: 2
  gather_facts: False

  tasks:
    - name: first task
      command: hostname
    - name: second task
      command: hostname
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64048208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文