我在文件中有如下内容。
dataDir=/var/lib/zookeeper
4lw.commands.whitelist=mntr,conf,ruok,stat
syncLimit=2
我想使用 Ansible 读取dataDir的值并将其设置为变量。我编写了以下代码,但正则表达式和存储变量都有一些问题。
- name: Read zoo.cfg content
shell:
cmd: cat zoo.cfg
register: zoo_config_content
- set_fact:
my_var: "{{ zoo_config_content.stdout | regex_search('dataDir.*')}}"
- name: Print
debug:
var: my_var
Q1.) 如何改进正则表达式以仅获取/var/lib/zookeeper?
Q2.) 如何存储提取的值以用于其他任务?
您需要将一个组添加到您的正则表达式和指定要返回哪个组的第二个参数:
这将返回一个包含单个元素的数组,因此我添加
| first
了仅将一个元素直接作为字符串获取。结果:
如果配置文件位于 Ansible 机器上,您可以使用查找使其更容易: