我知道如何使用 ansible 替换模块替换文件中的字符串。我正在寻找的是替换特定的行。
我有一个文件,在几个地方都有相同的字符串,我只想替换它的一个实例。
有没有办法只替换 X 实例或给它一个特定的行来替换?
答案1
有没有办法只替换 X 实例或给它一个特定的行来替换?
如果是我,我会使用shell
模块和标准sed
调用来更改特定行。在下面的示例中,我sed
仅更改第四行。
---
- hosts: all
tasks:
- name: "Run sed via ansible"
shell: sed -i '4s/bike/car/' /home/maulinglawns/slask/sed_example
ansible playbook 之前的文件示例:
cat sed_example
bike plane
bike plane
bike plane
bike plane
bike plane
bike plane
bike plane
bike plane
bike plane
bike plane
运行剧本:
ansible-playbook sed_with_ansible.yml -i "localhost," -k
SSH password:
PLAY [all] *********************************************************************
TASK [setup] *******************************************************************
ok: [localhost]
TASK [Run sed via ansible] *****************************************************
changed: [localhost]
[WARNING]: Consider using template or lineinfile module rather than running
sed
PLAY RECAP *********************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0
剧本后的文件:
cat sed_example
bike plane
bike plane
bike plane
car plane
bike plane
bike plane
bike plane
bike plane
bike plane
bike plane
你可能能够使用该lineinfile
模块实现此目的,但我不知道有任何此类开关,并且在文档中找不到任何开关。