我有一个有很多不同的文件。它看起来像这样:
- file: url: filestore://20180205/group2/test123.xml sha1: b856565abe4d9416323d82fce9005db29e9a6c57 dest_folder: group-2 ensure: present - file: url: filestore://20180213/group2/othertest.xml sha1: ec9d3d82232c05f7b49a034dcec9ea83f5c1981a dest_folder: group-2 ensure: present
现在我需要用新数据更改url和sha1行。 我可以使用lineinfile模块更改url行,因为我知道文件的组和名称,但我不知道sha1值。
那么如何更改sha1线?
我试过这样:
---
- name: regex Test
hosts: localhost
become: no
tasks:
- name: regex two lines
lineinfile:
dest: /tmp/testdatei
regexp: 'group2/test123.xml'
line: ' url: filestore://gpv/hal/20180213/group2/test1'
- name: regex two lines
lineinfile:
dest: /tmp/testdatei
regexp: 'group2/test123.xml
sha1: '
line: ' sha1: test'
Ansible在文件末尾添加新的sha1行,不要用当前的sha1行替换它。
答案 0 :(得分:0)
使用ansible replace module
- name: regex two lines
replace:
dest: /tmp/testdatei
regexp: '^(\s*url: ).*group2/test123.xml\n(\s*sha1: ).*$'
replace: '\1filestore://gpv/hal/20180213/group2/test1\n\2test'
backup: yes
答案 1 :(得分:0)
我现在找到了一个解决方案。
---
- name: replace url and hash
replace:
path: /tmp/testdatei
regexp: 'test1\n[^\n]+'
replace: 'FileName\nsha1hash'
- name: regex url
lineinfile:
dest: /tmp/testdatei
regexp: 'FileName'
line: ' url: filestore://gpv/hal/{{current_date}}/{{group_name}}/{{file_name}}'
- name: regex hash
lineinfile:
dest: /tmp/testdatei
regexp: 'sha1hash'
line: ' sha1: {{sha1var.stdout}}'
我这样做了,因为必须正确相同。