gpt4 book ai didi

regex - 在 Ansible 中提取 {{ inventory_hostname }} 的一部分以在 playbook 中使用

转载 作者:行者123 更新时间:2023-12-03 08:45:56 25 4
gpt4 key购买 nike

我目前正在编写一个小型 Ansible 剧本,其工作是在/etc/resolv.conf 的搜索列表中添加一个附加域。

要添加到搜索列表的第二个域必须包含目标主机的部分主机名。我在 playbook 执行期间使用神奇变量 {{ inventory_hostname }} 获取每个目标主机的主机名。

然后,我需要从 {{ inventory_hostname }}(例如“xyz”)中提取字符 4 - 6,以便添加到搜索列表的第二个域是 xyz.foo.bar。在 bash 中,可以通过以下方式获得:

SERVER=$('hostname':3:3)
env=${SERVER:3:3}

...变量“env”将等于“xyz”。

只要手动定义“xyz”,剧本就可以工作。

我知道 Ansible 有正则表达式过滤器,可以帮助解决类似的问题,但是我无法找出满足我需要的正则表达式。

为了完整起见,我在 ansible 中尝试过类似的操作:

{{ inventory_hostname|3:3 }}

任何帮助将不胜感激。

最佳答案

几乎是一样的,你可以使用"{{ inventory_hostname[3:6] }}"来选择字符3到6。

例如这个任务

  - debug:
msg: "{{ inventory_hostname[3:6] }}"

将输出

ok: [localhost] => {
"msg": "alh"
}

关于regex - 在 Ansible 中提取 {{ inventory_hostname }} 的一部分以在 playbook 中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61485408/

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