dat*_*kid 13 ansible ansible-playbook
我发现很难相信没有任何内容涵盖这个用例,但我的搜索结果证明没有结果.
我有一条线路/etc/fstab来装载一个不再可用的驱动器:
//archive/Pipeline /pipeline/Archives cifs ro,credentials=/home/username/.config/cifs 0 0
Run Code Online (Sandbox Code Playgroud)
我想要的是改变它
#//archive/Pipeline /pipeline/Archives cifs ro,credentials=/home/username/.config/cifs 0 0
Run Code Online (Sandbox Code Playgroud)
我正在使用它
---
- 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
Run Code Online (Sandbox Code Playgroud)
期望它只是插入注释符号(#),但它取代了整行,我最终得到了
#//archive/Pipeline
Run Code Online (Sandbox Code Playgroud)
有没有办法全局捕获行的其余部分或只插入单个注释char?
regexp: '^//archive/pipeline *'
line: '#//archive/pipeline *'
Run Code Online (Sandbox Code Playgroud)
要么
regexp: '^//archive/pipeline *'
line: '#//archive/pipeline $1'
Run Code Online (Sandbox Code Playgroud)
我试图围绕lineinfile并且从我所读到的内容看起来像insertafter是我正在寻找的,但"插入后"不是我想要的?
tec*_*raf 20
您可以将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
Run Code Online (Sandbox Code Playgroud)
它将替换匹配的所有匹配字符串regexp.
lineinfile另一方面,只能在一行上工作(即使在文件中找到多个匹配).它确保特定行不存在或与定义的内容一起出现.
Kon*_*rov 17
与state = present一起使用.如果设置,则行可以包含后向引用(位置和命名),如果正则表达式匹配,则将进行填充.
像这样:
- name: Comment out pipeline archive in fstab
lineinfile:
dest: /etc/fstab
regexp: '(?i)^(//archive/pipeline.*)'
line: '# \1'
backrefs: yes
state: present
Run Code Online (Sandbox Code Playgroud)
另请注意,我使用(?i)regexp选项,因为您的搜索表达式永远不会与Pipeline示例fstab中的大写字母P 匹配.
| 归档时间: |
|
| 查看次数: |
19170 次 |
| 最近记录: |