Anu*_*shA 4 regex regular-expressions ansible ansible-playbook
我在文件中有如下内容。
dataDir=/var/lib/zookeeper
4lw.commands.whitelist=mntr,conf,ruok,stat
syncLimit=2
Run Code Online (Sandbox Code Playgroud)
我想使用 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
Run Code Online (Sandbox Code Playgroud)
Q1.) 如何改进正则表达式以仅获取/var/lib/zookeeper?
Q2.) 如何存储提取的值以在另一个任务中使用?
您需要将一个组添加到您的正则表达式和指定要返回的组的第二个参数:
- set_fact:
my_var: "{{ zoo_config_content.stdout | regex_search('dataDir=(.+)', '\\1') | first }}"
Run Code Online (Sandbox Code Playgroud)
这将返回一个包含单个元素的数组,所以我添加| first
了一个元素作为字符串直接获取。
结果:
ok: [localhost] => {
"my_var": "/var/lib/zookeeper"
}
Run Code Online (Sandbox Code Playgroud)
如果配置文件驻留在 Ansible 机器上,您可以使用查找使其更容易:
ok: [localhost] => {
"my_var": "/var/lib/zookeeper"
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11521 次 |
最近记录: |