在两个标记之间替换文本

时间:2019-02-18 17:43:03

标签: ansible

我正在做一个ansible-playbook,该书应该替换2个标记/条之间的文本,但是我做不到。

---
- hosts: 127.0.0.1
  tasks:
  - name: insert/update configuration using a local file and validate it
    blockinfile:
            block: "{{ lookup('file', '/home/$USER/tmp/ssh_keys.template') }}"
            dest: "/home/$USER/tmp/ssh_keys"
            marker: "xidiot"
            marker_begin: "##### "
            marker_end "##### "

我需要ssh_keys.template的文件内容来替换标记之间的ssh_keys文件中的文本块(在ssh_key文件中存在):

##### xidiot START

##### xidiot END

运行此剧本后,ssh_keys.template的内容将放在文件ssh_keys的底部。

这是在结束标记“ ##### xidiot END”之后插入的块:

 xidiot
### xidiot ADM
key 1
key 2
key 3
### xidiot ADM END

### xidiot OPS
key 4
key 5
key 6
### xidiot OPS END

### xidiot AUTOMATION BEGIN
key 7
key 8
key 9
### xidiot AUTOMATION END

### OTHERS
key 10
key 11
key 12
### OTHERS END
 xidiot

请注意,模板文件中未显示开头和结尾的xidiot。模板文件以##### xidiot START开头 如果我从.yml文件中删除了标记marker_begin和marker_end并放置

# BEGIN ANSIBLE MANAGED BLOCK

# END ANSIBLE MANAGED BLOCK

而不是

放在ssh_keys文件中
##### xidiot

一切正常。

这是模板本身:

##### xidiot START
### xidiot ADM
key 1
key 2
key 3
### xidiot ADM END

### xidiot OPS
key 4
key 5
key 6
### xidiot OPS END

### xidiot AUTOMATION BEGIN
key 7
key 8
key 9
### xidiot AUTOMATION END

### OTHERS
key 10
key 11
key 12
### OTHERS END
##### xidiot END

1 个答案:

答案 0 :(得分:0)

只需使用带有键的变量而不是单独的文件,然后使用with_subelements遍历它们即可。

FlutterFragmentActivity