我们可以使用lineinfile模块在Ansible中添加基于匹配Regexp的新行吗?

问题描述 投票:0回答:1

基本上,我有一个包含接口信息的文本文件(即接口gigabit0 / 1/2,接口gigabit0 / 2/3)。我需要在每个接口命令后添加一个额外的块。它必须如下所示: -

interface gigabit0/1/2
shutdown
!
interface gigabit0/2/3
shutdown
!

我使用了一个已经存在的“lineinfile”模块来匹配正则表达式,并在匹配后添加一个新行。

---
- hosts: localhost
  tasks:
    - name: Ansible insert
      lineinfile:
        path: ./ha.txt
        line: |
              shutdown
              !
        insertafter: interface?\s[a-z]\w*/[0-9]/[0-9]
        state: present
      with_lines: cat ha.txt
ansible
1个回答
0
投票

使用replace。下面的剧本

tasks:
  - replace:
      path: ha.txt
      regexp: '(interface?\s[a-z]\w*/[0-9]/[0-9])'
      replace: |-
               \1
               shutdown
               !

与文件

> cat ha.txt
interface gigabit0/1/2
interface gigabit0/2/3

得到:

> cat ha.txt
interface gigabit0/1/2
shutdown
!
interface gigabit0/2/3
shutdown
!
© www.soinside.com 2019 - 2024. All rights reserved.