首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Ansible中提取{{ inventory_hostname }}的一部分以在剧本中使用

在Ansible中提取{{ inventory_hostname }}的一部分以在剧本中使用
EN

Stack Overflow用户
提问于 2020-04-29 00:41:57
回答 1查看 1.7K关注 0票数 1

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

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

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

代码语言:javascript
复制
SERVER=$('hostname':3:3)
env=${SERVER:3:3}

..。而变量'env‘将等于'xyz’。

只要手动定义'xyz‘,该攻略就可以工作。

我知道Ansible有正则表达式过滤器,可以帮助做这样的事情,但是我找不到一个能做我需要的正则表达式。

为了完整起见,我在ansible中尝试了类似这样的东西:

代码语言:javascript
复制
{{ inventory_hostname|3:3 }}

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2020-04-29 01:44:10

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

例如,此任务

代码语言:javascript
复制
  - debug:
      msg: "{{ inventory_hostname[3:6] }}"

将输出

代码语言:javascript
复制
ok: [localhost] => {
    "msg": "alh"
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61485408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档