在Ansible中的regex_findall中使用变量,可以通过使用with_items循环和register模块来实现。下面是一个使用regex_findall的示例代码:
- name: 使用regex_findall匹配变量
hosts: localhost
gather_facts: false
vars:
my_variable: "Hello 123 World 456"
tasks:
- name: 使用regex_findall匹配变量
shell: echo "{{ my_variable }}"
register: result
- name: 使用regex_findall提取数字
debug:
msg: "{{ item }}"
with_items: "{{ result.stdout | regex_findall('[0-9]+') }}"
在这个示例中,我们定义了一个变量my_variable
,它包含了一个字符串"Hello 123 World 456"。然后使用shell模块的命令echo
将该变量的值输出给register模块的result
变量。
接下来,使用regex_findall过滤器来提取字符串中的数字,并将结果存储在名为item
的变量中。最后,使用debug模块打印每个匹配到的数字。
运行这个示例代码将输出:
TASK [使用regex_findall提取数字] *************************************************
ok: [localhost] => (item=123) => {
"msg": "123"
}
ok: [localhost] => (item=456) => {
"msg": "456"
}
这样就成功地从变量中提取了数字,并将其作为循环变量使用。你可以根据需要修改正则表达式来匹配不同的模式。