penglongli / blog

18 stars 1 forks source link

Ansible 修改文件 #40

Open penglongli opened 6 years ago

penglongli commented 6 years ago

使用 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