我目前正在编写一个小的Ansible攻略,它的工作是在/etc/resolv.conf中的搜索列表中添加一个附加域。
要添加到搜索列表的第二个域必须包含部分目标主机的主机名。在剧本执行期间,我使用魔术变量{{ 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 }}任何帮助都将不胜感激。
发布于 2020-04-29 01:44:10
这几乎是一样的,你可以使用"{{ inventory_hostname[3:6] }}"来选择3到6个字符。
例如,此任务
- debug:
msg: "{{ inventory_hostname[3:6] }}"将输出
ok: [localhost] => {
"msg": "alh"
}https://stackoverflow.com/questions/61485408
复制相似问题