有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.onitroad.test替换成nginx.onitroad.com:
- replace:
path: /etc/hosts
regexp: '(\s+)nginx\.onitroad\.test(\s+.*)?$'
replace: 'nginx.onitroad.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
日期:2019-11-20 08:53:52 来源:oir作者:oir
