在xml中插入一个文件块

时间:2017-08-14 19:59:25

标签: ansible ansible-2.x

我想使用Ansible将文件块插入XML。

Ex.xml

<t1> ${t1}/k</t1>
<v1 c="k.tm"/>

我需要在ex.xml

之间插入一段代码(即<t1> ${t1}/k</t1>之后)

有人可以为此提供帮助吗?

我尝试在文件中使用块,但结果就是这样,它在XML的末尾添加了代码块。

- name: add a block
  blockinfile:
    path: ex.xml
    marker: "test"
  block:
    <k1></k1>
    <K2></k2>
  insertafter: "^<t1> ${t1}/k</t1>"

1 个答案:

答案 0 :(得分:0)

insertafter参数是正则表达式,因此&#39; $&#39;角色不会直接匹配。你需要逃避它。

insertafter: "^<t1> \\${t1}/k</t1>"

其他一些说明......

如果您希望在使用换行符编写块时插入块,请在block之后添加一个管道。否则,您的整个块将被写入同一行

block: |
    <k1></k1>
    <K2></k2>

marker参数应该是xml注释。此外,您应该包含{mark}关键字,以便Ansible知道如果ex.xml中已存在相同的块,则不插入相同的块。

marker: "<!-- {mark} ANSIBLE MANAGED BLOCK -->"