我目前正在编写一个小型 Ansible 剧本,其工作是在 /etc/resolv.conf 的搜索列表中添加一个附加域。
要添加到搜索列表的第二个域必须包含目标主机的主机名的一部分。我在剧本执行期间使用神奇变量 {{ inventory_hostname }} 获取每个目标主机的主机名。
然后,我需要从 {{ inventory_hostname }}(例如“xyz”)中提取字符 4 - 6,以便添加到搜索列表的第二个域是 xyz.foo.bar。在 bash 中,可以通过以下方式获得:
SERVER=$('hostname':3:3)
env=${SERVER:3:3}
Run Code Online (Sandbox Code Playgroud)
...变量“env”将等于“xyz”。
只要手动定义“xyz”,该剧本就可以工作。
我知道 Ansible 有正则表达式过滤器,可以帮助解决类似的问题,但是我无法找出满足我需要的正则表达式。
为了完整起见,我在 ansible 中尝试过类似的操作:
{{ inventory_hostname|3:3 }}
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激。
小智 5
几乎是一样的,你可以用它"{{ inventory_hostname[3:6] }}"来选择字符3到6。
例如这个任务
- debug:
msg: "{{ inventory_hostname[3:6] }}"
Run Code Online (Sandbox Code Playgroud)
会输出
ok: [localhost] => {
"msg": "alh"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3458 次 |
| 最近记录: |