【发布时间】:2019-11-22 12:11:02
【问题描述】:
我一直在尝试很多 lineinfile 和替换示例,但我无法让它工作。
我有以下几行:
deb-src http://httpredir.debian.org/debian buster main
deb http://security.debian.org/debian-security buster/updates main
deb-src http://security.debian.org/debian-security buster/updates main
我希望它们看起来像这样:
deb-src http://httpredir.debian.org/debian buster main contrib
deb http://security.debian.org/debian-security buster/updates main contrib
deb-src http://security.debian.org/debian-security buster/updates main contrib
我尝试使用 Ansible 这样做;
- name: Add contrib repository
lineinfile:
dest: /etc/apt/sources.list
backup: yes
state: present
regexp: '^(deb (.*)$)'
backrefs: yes
line: '\1 contrib'
check_mode: no
哪种方法可行,但在第二次运行后显示为,例如
deb http://security.debian.org/debian-security buster/updates main contrib contrib
所以它会在每次运行时不断添加单词。
显然这些行并不是在每个系统上都保持原样,但它们确实以 deb 或 deb-src 开头
谢谢!
【问题讨论】:
-
lineinfile: This is primarily useful when you want to change a single line in a file only.尝试使用replace模块