首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可能-按照我想要的顺序与主机打交道

可能-按照我想要的顺序与主机打交道
EN

Stack Overflow用户
提问于 2017-02-28 18:57:11
回答 3查看 14.3K关注 0票数 14

运行攻略时,Ansible随机将节点设置为第一、第二和第三。

代码语言:javascript
复制
TASK [setup] ********
ok: [node-p02]
ok: [node-p03]
ok: [node-p01]

我如何配置Ansible以确保它以排序的顺序与主机一起执行?示例:

代码语言:javascript
复制
TASK [setup] ********
ok: [node-p01]
ok: [node-p02]
ok: [node-p03]

Serial: 1不是一个选项,因为它减慢了游戏的速度,而我的攻略意味着在一个游戏中有3个节点。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-09-03 16:49:48

适用于Ansible 2.4及更高版本:

这现在是默认行为,ansible将按照inventory文件中提到的顺序播放主机。Ansible还提供了一些内置的方法,你可以用order来控制它:

代码语言:javascript
复制
- hosts: all
  order: sorted
  gather_facts: False
  tasks:
    - debug:
        var: inventory_hostname

order的可能值为:

  • inventory:默认值。顾名思义,顺序由inventory
  • reverse_inventory:提供,这与inventory
  • reverse_sorted: order
  • shuffle:
  • 提供的顺序相反排序:主机按名称的字母顺序排序主机按名称的字母顺序反向排序每次运行

时,主机随机排序

来源:https://docs.ansible.com/ansible/latest/user_guide/playbooks_intro.html#hosts-and-users

票数 17
EN

Stack Overflow用户

发布于 2017-03-01 17:27:13

编辑:最好的解决方案是在dubesanswer中,但这个解决方案给了你更多的自由,以防特定的操作必须应用于主机列表,或者你不能使用Ansible 2.4。

从Ansible 2.2开始,您可以使用ansible_play_hostsansible_play_batch并对其执行sort操作:

代码语言:javascript
复制
---
- hosts: "{{ ansible_play_hosts | sort() }}"

来自ansible doc

ansible_play_hosts是当前实演中仍处于活动状态的所有主机的完整列表。

ansible_play_batch提供了一组主机名列表,这些主机名列在该游戏的当前“批处理”范围内。批量大小由serial定义,未设置时等同于整个播放(与ansible_play_hosts相同)。

票数 6
EN

Stack Overflow用户

发布于 2017-02-28 23:21:28

我认为另一种可能性是使用hosts中的确切主机名作为列表,而不是组。然而,其他答案更符合Ansible方法。

代码语言:javascript
复制
 ---    
 - hosts:
     - node-p01
     - node-p02
     - node-p03
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42506865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档