How to find and replace text/IP address with Ansible

How to find and replace text/IP address with Ansible

To find and replace text or an IP address with Ansible, you can use the replace module. Here is an example playbook that demonstrates how to use the replace module to find and replace the IP address 192.168.0.1 with the IP address 192.168.1.1 in a file called config.txt:

---
- hosts: localhost
  tasks:
    - name: Replace IP address in config.txt
      replace:
        path: /path/to/config.txt
        regexp: '192\.168\.0\.1'
        replace: '192.168.1.1'
Source:w‮‬ww.lautturi.com

Save the playbook as replace.yml and run it with the following command:

ansible-playbook replace.yml

This will search the config.txt file for all occurrences of the IP address 192.168.0.1 and replace them with the IP address 192.168.1.1.

You can also use the find and xargs modules to search for and replace text or an IP address in multiple files. Here is an example playbook that demonstrates how to use the find and xargs modules to search for and replace the IP address 192.168.0.1 with the IP address 192.168.1.1 in all files in the /etc directory:

---
- hosts: localhost
  tasks:
    - name: Find and replace IP address in files
      find:
        paths: /etc
        patterns: "*"
      register: found_files
    - name: Replace IP address in found files
      xargs:
        cmd: sed -i "s/192\.168\.0\.1/192.168.1.1/g"
        argv: "{{ found_files.files }}"

Save the playbook as replace.yml and run it with the following command:

ansible-playbook replace.yml

This will search all files in the /etc directory for the IP address 192.168.0.1 and replace it with the IP address 192.168.1.1.

Keep in mind that the replace module is destructive, meaning it will modify the original files. It is a good idea to make backups of the files you want to modify before running the playbook.

Created Time:2017-10-16 14:38:46  Author:lautturi