Ansible find replace不适用于2行

问题描述 投票:0回答:1
- name: Cassandra cassandra.yaml
  lineinfile:
    dest: "{{ home}}/conf/cassandra.yaml"
    state: present
    regexp: "{{ item.regexp }}"
    line: "{{ item.line }}"
#   backup: yes
 with_items:
 - { regexp: "data_file_directories:", line: "data_file_directories: \n               - {{ data_directory }}" }

在第一个文件第一次运行它看起来不错,但在第二次运行它继续添加新行。为了第二次运行需要做的事情看起来也不错。

 data_file_directories:
               - /mount1/data

第二轮

 data_file_directories:
               - /mount1/data
               - /mount1/data
               - /mount1/data

我想要一些像

data_file_directories:
               - /mount1/data
ansible
1个回答
0
投票

lineinfile - 顾名思义 - 是一个模块,用于确保某个行位于目标文件中;不行。


处理多行:

  • regexp module与matchgroup和backreference一起使用 - 确切的实现依赖于目标文件中的其他构造,
  • 使用blockinfile module - 确切的实现依赖于目标文件中的其他构造,
  • 或(最好)使用template module
© www.soinside.com 2019 - 2024. All rights reserved.