我现在遇到了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是否认为数字优先于字母而不是字母?
答案 0 :(得分:0)
为什么它应该是父母 - >孩子?
我猜它应按字母顺序排序。来自code:
results['group_names'] = sorted([ g.name for g in self.get_groups() if g.name != 'all'])