Ansible应用之批量免密
1.编写/etc/hosts 文件
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.9.29.106 master
10.9.29.105 node1
10.9.29.107 node2
2.编译ansible 主机清单 hosts.ini
Master端
[master]
master
[nodes]
node1
node2
[ansible]
[ansible:children]
master
nodes
3.发送公钥
send-pubkey.yml
---
- hosts: all
gather_facts: no
remote_user: root
vars:
ansible_ssh_pass: 1 #这里写root密码
tasks:
- name: Set authorized key taken from file
authorized_key:
user: root
state: present
key: "{{ lookup('file', '/root/.ssh/id_rsa.pub') }}"
/etc/ansible/ansible.cfg 打开以下注释
host_key_checking = False
ansible-playbook -i hosts.ini send-pubkey.yml
4.发送 /etc/hosts
cp /etc/hosts .
send-hosts.yml
---
- name: 同步所有节点的 /etc/hosts 文件 并且设置主机名
hosts: ansible
gather_facts: no
tasks:
- name: 同步 hosts 文件
copy:
src: hosts
dest: /etc/hosts
- name: 设置各自的主机名
shell:
cmd: hostnamectl set-hostname "{{ inventory_hostname }}"
register: sethostname
- name: 验证是否成功设置了主机名
debug:
var: sethostname.rc
...
ansible-playbook -i hosts.ini send-hosts.yml