如何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