我在使用ansible时遇到了一个特殊的问题。这个问题非常奇怪而且危险。我编写了一段代码,用于在文件的特定部分插入数据,即[database]
在 say之后添加行/etc/cinder/cinder.conf
。
问题是我注意到有时它会在 tag 之后正确添加内容[database]
,但有时它会因为看到文件中的一行而感到困惑# put ur infore here for [database]
,并在其下方添加我们所需的行而不是实际应该放置的位置。
- name: Adding Entries in "/etc/cinder/cinder.conf"
lineinfile:
dest: "/etc/cinder/cinder.conf"
insertafter: "{{ item.inserts }}"
state: present
line: "{{ item.lines }}"
with_items:
- { inserts: '\[database\]', lines: 'rpc_backend = rabbit' }
这种情况在生产环境中是相当危险的!如何正确添加数据?
答案1
为了避免在注释中匹配,请将正则表达式锚定到行的开头:
- { inserts: '^\[database\]', lines: 'rpc_backend = rabbit' }
答案2
您可以使用ini_file
模块general collection
:
- name: Adding Entries in "/etc/cinder/cinder.conf"
community.general.ini_file:
path: "/etc/cinder/cinder.conf"
section: database
option: rpc_backend
value: rabbit
backup: true
要安装该集合,请运行
$ ansible-galaxy collection install community.general
或将其添加到requirements.yaml
as
collections:
- name: community.general
version: 5.0.1
然后运行
$ ansible-galaxy install -r requirements.yaml