如何使用Ansible查替换文件中的字符串

时间:2019-11-20 08:53:52  来源:igfitidea点击:

有100多个虚拟机中的sshd_config文件需要替换IP地址,如何使用Ansible实现?
如何使用Ansible替换100个服务器中的文件内容?

Ansible如何替换文件中匹配的字符串

语法如下:

- replace:
    path: /path/to/file
    regexp: 'regular expression for search'
    replace: 'replace-word'
    backup: yes

例如,将/etc/app.conf文件中的所有foo替换成bar:

- replace:
    path: /etc/app.conf
    regexp: 'foo'
    replace: 'bar'
    backup: yes

将nginx.theitroad.test替换成nginx.theitroad.com:

- replace:
    path: /etc/hosts
    regexp: '(\s+)nginx\.theitroad\.test(\s+.*)?$'
    replace: 'nginx.theitroad.com'
    backup: yes

将sshd_config中的192.168.3.1替换成192.168.2.1,然后重新加载sshd服务:

# sshd.yml
          - replace:
                  dest: /etc/ssh/sshd_config
                  regexp: '192.168.3.1'
                  replace: '192.168.2.1'
                  backup: yes
                  validate: '/usr/sbin/sshd -t'
          - service:
                  name: sshd
                  state: reloaded

然后运行ansible

$ ansible-playbook -i hosts sshd.yml