使用ansible批量免密登录多个服务器
- 编辑/etc/ansible/hosts (或者使用自定义hosts)
#ansible_ssh_user 服务器登录账号 ansible_ssh_pass 服务器登录密码
#[cluster] 这是分组 使用ansible命令可以指定分组
#ahead_1 是自定义域名,需要自己在/etc/hosts中配置
[cluster]
ahead_1 ansible_ssh_user="root" ansible_ssh_pass="???"
ahead_2 ansible_ssh_user="root" ansible_ssh_pass="???"
ahead_3 ansible_ssh_user="root" ansible_ssh_pass="???"
- 编辑/etc/ansible/ansible.cfg)
#实现跳过 ssh 首次连接提示验证部分 不开启免密登录会失败
开启 host_key_checking = False
- 生成管理主机得私钥和公钥
ssh-keygen -t rsa -b 2048 -P '' -f /root/.ssh/id_rsa
- 编写palybook脚本 ssh.yml
# hosts 的值是第一步配置的分组名 all是全部 如果想指定某组。则填写对应名字
---
- hosts: cluster
gather_facts: no
tasks:
- name: install ssh key
authorized_key: user=root
key="{{ lookup('file', '/root/.ssh/id_rsa.pub') }}"
state=present
- 运行任务
ansible-playbook -i /etc/ansible/hosts ssh.yml