如何filter/trim ansible中的特定变量值
how to filter/trim a particular variable value in ansible
我有一个要求,我必须在 ansible 中 extract/filter 特定长度的字符串。例如:-
我的节点机器具有以下主机名:- jpujenkins、jpunessus。
所以实际上我们会有变量。
{{ ansible_hostname }} --> jpujenkins.
{{ ansible_hostname }} --> jpunessus
但我想从所有节点主机名中删除前三个字母 'jpu'。
期望的输出:- jenkins,nessus
JENKINS,NESSUS 也可以大写吗?
您可以使用 regex_replace
Ansible 过滤器来满足您的需求。
https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html#regular-expression-filters
例如,我的主机名是 ip-192-168-1-65
。
---
- hosts: all
tasks:
- debug: msg="{{ ansible_hostname | regex_replace('^ip-', '') }}"
当我执行剧本时,它 returns 主机名 '^ip-'
部分被替换为空字符串 ''
.
TASK [debug] *********************************************************************************************************************************************************************
Tuesday 28 April 2020 11:18:24 +0300 (0:00:07.281) 0:00:07.498 *********
ok: [localhost] =>
msg: 192-168-1-65
我有一个要求,我必须在 ansible 中 extract/filter 特定长度的字符串。例如:-
我的节点机器具有以下主机名:- jpujenkins、jpunessus。
所以实际上我们会有变量。
{{ ansible_hostname }} --> jpujenkins.
{{ ansible_hostname }} --> jpunessus
但我想从所有节点主机名中删除前三个字母 'jpu'。
期望的输出:- jenkins,nessus
JENKINS,NESSUS 也可以大写吗?
您可以使用 regex_replace
Ansible 过滤器来满足您的需求。
https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html#regular-expression-filters
例如,我的主机名是 ip-192-168-1-65
。
---
- hosts: all
tasks:
- debug: msg="{{ ansible_hostname | regex_replace('^ip-', '') }}"
当我执行剧本时,它 returns 主机名 '^ip-'
部分被替换为空字符串 ''
.
TASK [debug] *********************************************************************************************************************************************************************
Tuesday 28 April 2020 11:18:24 +0300 (0:00:07.281) 0:00:07.498 *********
ok: [localhost] =>
msg: 192-168-1-65