ansible 怎么把/etc/fstab文件中的/dev/mapper/centos-swap改成#/dev/mapper/centos-swap
时间: 2023-07-06 12:39:50 浏览: 206
可以使用 Ansible 的 `replace` 模块来实现这个需求。具体的 playbook 可以如下编写:
```yaml
- hosts: all
become: true
tasks:
- name: Comment out centos-swap in /etc/fstab
replace:
path: /etc/fstab
regexp: '^/dev/mapper/centos-swap'
replace: '#/dev/mapper/centos-swap'
```
这个 playbook 中的 `replace` 模块会在所有远程主机上执行。它会将 `/etc/fstab` 文件中以 `/dev/mapper/centos-swap` 开头的行替换成 `#/dev/mapper/centos-swap`,即在前面添加一个 # 注释掉。使用 `^` 符号表示匹配行首,这样可以避免误匹配到其他位置的字符串。
需要注意的是,为了修改 `/etc/fstab` 文件,需要使用 `become` 参数提升执行权限。
相关问题
ansible all -m shell -a "sed -i s/\/dev/mapper/centos-swap/\#/dev/mapper/centos-swap /etc/fstab"
这个命令会使用 Ansible 在所有远程主机上执行一个 shell 命令,将 /etc/fstab 文件中的 /dev/mapper/centos-swap 行注释掉。
具体来说,命令中的参数含义如下:
- `ansible all`:表示在 Ansible 的所有主机上执行命令。
- `-m shell`:表示使用 shell 模块,在远程主机上执行 shell 命令。
- `-a`:表示接下来的参数是要在远程主机上执行的命令。
- `"sed -i s/\/dev/mapper/centos-swap/\#/dev/mapper/centos-swap /etc/fstab"`:表示要在远程主机上执行的命令。其中,sed 命令用于编辑文件,-i 参数表示直接修改源文件,s 表示替换操作,/dev/mapper/centos-swap/ 表示被替换的字符串,\# 表示替换后的字符串(即在前面添加 # 注释掉),/etc/fstab 表示要编辑的文件路径。需要注意的是,在命令中使用了双引号,这是为了避免命令中的特殊字符被 shell 解释。
阅读全文