Ansible-playbook -如何在字符串中添加大写字母



我是新来的。我想用ansible简化我的网络任务。我想做的一件事是登录到所有的网络(Cisco)交换机,并显示带有描述包含某个字符串的接口。我计划使用cisco.ios.ios_command模块向交换机发送命令。交换机应该返回包含search_str的行

show interface description | include {{search_str}}

描述可以包含大写或小写字母。例如,它可以是"abc123"或";Abc123"或";ABC123"在交换机上配置。思科允许您使用正则表达式查找所有情况。命令变成这样,它将匹配所有的大小写。

show interface description | include [aA][bB][cC]123

现在我的挑战是如何转换"abc123"(aA) (bB) (cC) 123年"。"abc123"是一个变量,我将设置当我运行剧本与-e "search_str=abc123"选项。

我的尝试是首先使字符串成为一个列表,每个字符作为一个项目:{{ my_var | lower | list }}。它还让我的搜索字符串都是小写字母。"Abc123"成为"[a, b, c, 1, 2, 3]">

然后我尝试使用loop遍历每个字符并添加字符的大写字母。我实在写不好……我最好的尝试是这样的:

- name: add upper case characters
loop: "{{search_str}}"
ansible.builtin.set_fact:
search_str_converted: "{{ item + (item|upper) }}"

在上面的代码中,我还将添加"[]"作为变量中的字符串。如果这一步工作,然后我计划做一个join再把它变成一个字符串。

让我知道逻辑是否正确,请帮我添加大写字符

谢谢!Difan

下面的任务完成这项工作

- set_fact:
search_list: "{{ search_list|default([]) + [element] }}"
loop: "{{ search_str|list }}"
vars:
is_number: "{{ item is match('\d') }}"
double: "[{{ item|lower }}{{ item|upper }}]"
element: "{{ is_number|ternary(item, double) }}"
- set_fact:
search_regex: "{{ search_list|join }}"

最新更新