父级的排序不一致:库存文件中的子组名称

时间:2016-11-29 15:17:18

标签: ansible ansible-playbook ansible-2.x

我现在遇到了ansible V 2.1.0中的典型问题。在下面的情况中,

[DEV:children]
DEV8
[DEV8]
thehost ansible_ssh_host=10.2.131.26 ansible_ssh_user=someuser1

现在,我跑的时候

{{hostvars[inventory_hostname].group_names, it outputs

TASK [debug]          ************************************************************
ok: [thehost] => {
"msg": [
"DEV",
"DEV8"
]
}

现在,对于其他一组机器

[PRODCTE:children]
CTE3
[CTE3]
thehost1 ansible_ssh_host=10.2.131.30 ansible_ssh_user=someuser2

output:
TASK [debug] *******************************************************************
ok: [thehost] => {
"msg": [
"CTE3",
"PRODCTE"
]
}

问题:

[PROD]
PRODA
[PRODA]
PROD1
[PROD1]
thehost2 ansible_ssh_host=10.2.3.33 ansible_ssh_user=someuser3

output:
TASK [debug]    *******************************************************************
ok: [thehost] => {
"msg": [
"PROD",
"PROD1"
"PRODA"
]
}

现在,如果要按字母顺序执行ansible代码,则无法实现一致性。输出必须始终保持一致。我的意思是,如果group_names [0]或group_names [1]按字母顺序显示不同组的不同值,则无法对剧本进行标准化。

无论如何,即使采取这种行为,我也想了解哪些因素能够输出这些价值?

如果按字母顺序排列,那么如何选择PROD1而不是PRODA? ansible是否认为数字优先于字母而不是字母?

1 个答案:

答案 0 :(得分:0)

为什么它应该是父母 - >孩子?

我猜它应按字母顺序排序。来自code

results['group_names'] = sorted([ g.name for g in self.get_groups() if g.name != 'all'])