blog
blog copied to clipboard
Ansible 修改文件
trafficstars
使用 Ansible 修改远程机器的文件内容,本节演示目的:
修改 192.168.0.66 机器上的 /etc/network/interface 文件中的网关和 DNS 为:192.168.0.1
代码:https://github.com/penglongli/ansible-sample/tree/master/sample-2
第一步 新建 inventory 文件:
$ cat inventory
[server]
# New client's inet ip
192.168.0.66
[server:vars]
# New client's user/pass
ansible_ssh_user=ubuntu
ansible_ssh_pass=123456
ansible_become=true
ansible_become_method=sudo
ansible_become_user=root
ansible_become_pass=123456
相关参数含义:
[server]
192.168.0.66
# server 组的 IP 地址,可以写成多个
ansible_ssh_user Ansible 基于 SSH 链接的用户名
ansible_ssh_pass Ansible 基于 SSH 链接的密码
ansible_become Ansible 链接到主机后是否使用 root 权限
ansible_become_user 远程主机 root 用户名
ansible_become_pass 远程主机 root 用户密码
第二步 新建 playbook.yml 文件:
$ cat mirror.yml
---
- hosts: server
tasks:
- name: Change interface's GW
lineinfile:
dest: /etc/network/interfaces
state: present
regexp: '.*gateway.*'
line: ' gateway 192.168.0.1'
- name: Change interface's DNS
lineinfile:
dest: /etc/network/interfaces
state: present
regexp: '^dns-nameservers.*'
line: 'dns-nameservers 192.168.0.1 114.114.114.114'
- name: restart network
command: systemctl restart networking
修改 /etc/network/interfaces 文件中的网关地址和 DNS 地址
关于 lineinfile 可参见文档:http://docs.ansible.com/ansible/latest/lineinfile_module.html
第三步 建立 ansible.cfg 文件
$ cat ansible.cfg
[defaults]
host_key_checking=false
第四步 执行命令
$ ansible-playbook -i inventory playbook.yml