使用ansible.buildin.lineinfile在块的末尾插入行



我正在尝试将几个配置项添加到默认的containerd配置文件中。这是该文件的一个片段。

[plugins."io.containerd.grpc.v1.cri".containerd.default_runtime]
runtime_type = ""
runtime_engine = ""
runtime_root = ""
privileged_without_host_devices = false
[plugins."io.containerd.grpc.v1.cri".containerd.untrusted_workload_runtime]
runtime_type = ""
runtime_engine = ""
runtime_root = ""
privileged_without_host_devices = false
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes]
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
runtime_type = "io.containerd.runc.v1"
runtime_engine = ""
runtime_root = ""
privileged_without_host_devices = false
[plugins."io.containerd.grpc.v1.cri".cni]

我想在[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]块的末尾插入以下两行。

[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
SystemdCgroup = true

我已经用以下代码将它们插入到块的开头。它很乱,我正在手动计算我想避免的空白。有更好的方法吗?

---
- name: Replace line in file
hosts: control
gather_facts: false
tasks:
- name: Replacing first line
ansible.builtin.lineinfile:
path: /root/config.toml
insertafter: '^(s+)[plugins.+w.runc]'
line: '          [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]'
- name: Replacing second line
ansible.builtin.lineinfile:
path: /root/config.toml
insertafter: '^(s+)[plugins.+w.runc.options]'
line: '            SystemdCgroup = true'

我尝试使用backrefs,但最终替换而不是添加。

似乎还没有合乎逻辑的方法来做到这一点。最好的解决方案似乎是使用模板(似乎是首选方式(或使用insertbefore

最新更新