gpt4 book ai didi

ansible - 使用 Ansible lineinfile 模块注释掉一行

转载 作者:行者123 更新时间:2023-12-02 03:48:18 28 4
gpt4 key购买 nike

我很难相信没有任何东西可以涵盖这个用例,但事实证明我的搜索毫无结果。

我在 /etc/fstab 中有一行用于安装不再可用的驱动器:

//archive/Pipeline /pipeline/Archives cifs ro,credentials=/home/username/.config/cifs 0   0

我想要的是将其更改为

#//archive/Pipeline /pipeline/Archives cifs ro,credentials=/home/username/.config/cifs 0   0

我用的是这个

---
- hosts: slurm
remote_user: root

tasks:
- name: Comment out pipeline archive in fstab
lineinfile:
dest: /etc/fstab
regexp: '^//archive/pipeline'
line: '#//archive/pipeline'
state: present
tags: update-fstab

期望它只插入注释符号(#),但它替换了整行,我最终得到了

#//archive/Pipeline

有没有办法全局捕获该行的其余部分或仅插入单个注释字符?

 regexp: '^//archive/pipeline *'
line: '#//archive/pipeline *'

 regexp: '^//archive/pipeline *'
line: '#//archive/pipeline $1'

我正在尝试围绕 lineinfile 进行思考,从我读到的内容看来 insertafter 是我正在寻找的,但“insert after”不是我想要的?

最佳答案

您可以使用replace适用于您的案例的模块:

---
- hosts: slurm
remote_user: root

tasks:
- name: Comment out pipeline archive in fstab
replace:
dest: /etc/fstab
regexp: '^//archive/pipeline'
replace: '#//archive/pipeline'
tags: update-fstab

它将替换所有匹配 regexp 的字符串。

另一方面,

lineinfile 仅适用于一行(即使在文件中找到多个匹配)。它确保特定行不存在或存在已定义的内容。

关于ansible - 使用 Ansible lineinfile 模块注释掉一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39239602/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com