我有以下 Ansible 变量:
test_entries:
"
test-auth-ip=192.168.1.22
test-auth-serv=example1.com
test-auth-net=192.168.1.254
test-auth-blabla=test123
"
Run Code Online (Sandbox Code Playgroud)
我还有一个文本文件,其中包含以下行:
test-auth-str1=null
test-auth-str2=null
test-auth-serv=null
test-auth-net=0.0.0.0
test-auth-str3=null
test-auth-str4=null
Run Code Online (Sandbox Code Playgroud)
我希望能够替换文件中与变量中的行匹配的任何行,直到“=”符号。(正则表达式:^test-auth(.*?=))
我读了 Ansible 文档。用于“lineinfile”和“替换”功能。但是,我找不到如何使用正则表达式逐行匹配。
预期结果
test-auth-str1=null
test-auth-str2=null
test-auth-serv=example1.com
test-auth-net=192.168.1.254
test-auth-str3=null
test-auth-str4=null
Run Code Online (Sandbox Code Playgroud)
尝试
test_entries:
test-auth-ip : 192.168.1.22
test-auth-serv : example1.com
test-auth-net : 192.168.1.254
test-auth-blabla : test123
Run Code Online (Sandbox Code Playgroud)
然后在你的任务中 -
- replace:
path: /your/file
regexp: '^{{ item.key }}=.*$'
replace: '{{ item.key }}={{ item.value }}'
with_dict: "{{ test_entries }}"
Run Code Online (Sandbox Code Playgroud)
我还经常使用一组匿名字典,以及我命名的属性而不是key和value。主要区别在于它允许您控制顺序(这在这里似乎并不重要)并跳过key&value关键字。
| 归档时间: |
|
| 查看次数: |
7560 次 |
| 最近记录: |