ansible - Ansible import_task 并使用串行语法执行任务主机一一
问题描述
我有一个角色任务,我希望 ansible 为每个服务器一个一个地执行所有任务。我找到了油门指令,但它与 2.9.0 ansible 版本兼容,我有 2.8.6 ansible 版本。例如,对 host1 执行 name1、name2,然后对 host2 执行 name1、name2 ...
主要的.yml
- name: Configure
import_tasks: "task_role.yml"
tags:
- task_role
任务角色.yml
---
- name: name1
---
- name: name2
---
库存文件
[serveur]
host1
host2
host3
问题是语法,我无法在 task_role.yml 上添加任务指令,所以我如何使用没有任务指令的串行指令。
解决方案
您可以使用串行模块使其一次在一台服务器上运行
- name: test play
hosts: webservers
serial: 3
gather_facts: False
tasks:
- name: first task
command: hostname
- name: second task
command: hostname
在此示例中,您可以看到数字设置为 3,因此它将一次在 3 个服务器中运行 playbook。输出将如下所示:
PLAY [webservers] ****************************************
TASK [first task] ****************************************
changed: [web3]
changed: [web2]
changed: [web1]
TASK [second task] ***************************************
changed: [web1]
changed: [web2]
changed: [web3]
PLAY [webservers] ****************************************
TASK [first task] ****************************************
changed: [web4]
changed: [web5]
changed: [web6]
TASK [second task] ***************************************
changed: [web4]
changed: [web5]
changed: [web2]
PLAY RECAP ***********************************************
web1 : ok=2 changed=2 unreachable=0 failed=0
web2 : ok=2 changed=2 unreachable=0 failed=0
web3 : ok=2 changed=2 unreachable=0 failed=0
web4 : ok=2 changed=2 unreachable=0 failed=0
web5 : ok=2 changed=2 unreachable=0 failed=0
web6 : ok=2 changed=2 unreachable=0 failed=0
在您的情况下,我了解您希望将其设置为“1”,以便一次在一台服务器上运行。有关更多信息,您还可以查看此链接,该链接会将您重定向到我从中获取信息的官方 Ansible 页面。
推荐阅读
- java - 使用 Java 从 GitHub 下载资产
- html - 将列表的宽度调整为包含的链接而不是包含的子列表
- mysql - mysql公用表表达式中的语法错误
- c# - 如何检查checkedlistbox c# winforms中的范围?
- intellij-idea - IntelliJ 不断索引,当 src 文件处于焦点时
- django - Django 3.1,我没有收到 User 和 Profile 模型的 RelatedObjectDoesNotExist 错误
- vb6 - 同步 VB6 显然是异步的!碰撞
- mysql - Ejabberd 正在使用所有可用的 CPU,如何调试
- c# - 如何禁用复选框而不禁用 vb.net 或 c# 中的树子节点视图?
- google-cloud-platform - 如何收回在 Google Cloud Platform 上调整 VM 实例的大小?