前言
利用ansible 自动化运维工具实现批量推送公钥。
1、安装Ansible服务端
- yum安装
yum install epel-release
yum install ansible -y
- 查看安装版本
# ansible --version
ansible 2.9.6
配置文件路径config file = /etc/ansible/ansible.cfg
查询模块路径configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/site-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.5 (default, Aug 7 2019, 00:51:29) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]
二、playbook 批量推送
- 首先配置不检测对方主机公钥
# vim ansible.cfg
[defaults]
host_key_checking = False #取消注释
- 执行命令生成公钥
ssh-keygen
- 编写playbook文件
# cat send-pubkey.yml
- hosts: all
remote_user: root # 连接远程主机的用户,密码就是文件中设置好的 ansible_ssh_pass 的值
vars_files:
- foo.yml # 设置用户名密码 由于我是root用户且密码全为 1 ansible_ssh_pass: 1
tasks:
- name: Set authorized key taken from file
authorized_key: # 发送公钥的模块
user: root # 给这个用户发送公钥
state: present
key: "{{ lookup('file', '/root/.ssh/id_rsa.pub') }}" # 发送本地用户的公钥路径
- 编辑foo.yml文件 设置密码
# vim foo.yml
ansible_ssh_pass: 1
#这里我是密码全为1 ,如果不是 请自行百度: 多主机且密码不一样时如何书写yml文件
- 编辑资产文件hosts
# vim hosts
[webserver]
...
[dbserver]
...
- 执行
ansible-playbook -i hosts send-pubkey.yml
- 验证
ansible all -i hosts -m ping
*#注意以上配置文件放在同一个目录下执行
网友评论