gpt4 book ai didi

ansible - 检测 inventory_hostname 的最后三个字符是奇数还是偶数

转载 作者:行者123 更新时间:2023-12-02 21:04:58 25 4
gpt4 key购买 nike

我有一个用例,我需要根据 Ansible playbook 中的主机名(无论是奇数还是偶数)分配不同的服务器。例如,如果服务器是奇数:

host: myhost-001.example.com server: myserver-003.example.com

如果它不是奇数,那么它必须是偶数,所以我会分配一个不同的服务器:

host: myhost-002.example.com server: myserver-002.example.com

有什么想法吗?

最佳答案

有趣的问题。您可以使用 jinja 过滤器来做到这一点:

{{ 'myhost-002.example.com'|regex_replace('(myhost-)(?P<id>\d\d\d)(\.example\.com)', '\\g<id>')|int is divisibleby 2 }}

让我们对此进行分解解释一下:

'myhost-002.example.com'

首先,我假设主变量采用上面的形式。

|regex_replace('(myhost-)(?P<id>\d\d\d)(\.example\.com)', '\\g<id>')

我使用命名参数进行正则表达式替换,仅保留 id 参数,在上面的示例中我假设它是三个数字 \d\d\d。这应该返回'002'

|int is divisibleby 2

然后我检查上面的整数是否能被 2 整除,以确定是奇数还是偶数。

测试:

ansible localhost -m debug -a "msg={{ 'myhost-002.example.com'|regex_replace('(myhost-)(?P<id>\d\d\d)(\.example\.com)', '\\g<id>')|int is divisibleby 2 }}"

localhost | SUCCESS => {
"msg": true
}

有用的链接:Ansible Jinja2 filters

关于ansible - 检测 inventory_hostname 的最后三个字符是奇数还是偶数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36584886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com