Ansible实现N+服务器的免密配置及用户分权
场景一、实现密钥对的推送及更新
1、Ansible的安装
yum -y install ansible
[root@ANSIBLEM1 ~]# vim /etc/ansible/ansible.cfg
# 将[defaults]里面的 host_key_checking = False 和 remote_port = 22 前的#去掉,ssh在首次连接出现检查keys 的提示,通过设置,不会有这些提示
remote_port = 22
host_key_checking = False
2、hosts清单的配置
# 服务器上创建ansible用户
vim /etc/ansible/hosts
[all]
192.168.100.12
192.168.100.13
[ssh_key]
192.168.100.12
192.168.100.13
# 主机列表中的ansible_ssh_user和ansible_ssh_pass变量,指向当前的key可以验证当前的登录信息
3、自动推送剧本
按照目前的环境 应该是 已经推送过一遍公钥的,所有服务器上面都使用的同一个公钥,实现密钥对更新,将生成的私钥更新到 对应服务器的authorized_keys,直接顶替掉旧的公钥,并且将生成的私钥配置到ansbile的ssh-file验证路径下,保管好私钥即可
配置剧本
创建操作目录
mkdir /playbook & cd /playbook
vim ssh-key.yaml
---
- hosts: all
remote_user: root
tasks:
- name: 推送公钥
copy: 'src=/root/.ssh/id_rsa.pub dest=/root/.ssh/authorized_keys'
配置ansible.cfg,指向私钥路径,才能与hosts中的服务器进行通讯(所以私钥更新后也要在路径中指向新的私钥)
咱们为了在一条路径下完成所有操作 这里将文件的位置放到playbook中
vim /etc/ansible/ansible.cfg
再编辑一个脚本方便一些
vim key.sh
#!/bin/bash
mv /root/.ssh/id_rsa /playbook/key
这样就可以了 需要更新密钥时,先使用ssh-keygen 生成私钥和公钥,再使用ansible将公钥推送到服务器群,最后将私钥移动到ansible的配置目录,自己再保留就可以了。
场景二、用户权限问题
避免新的运维人员再不熟悉公司业务的情况下权限过高,所以再权限分配的过程中最好给到适中权限而非root
1、创建一个devops新用户
useradd devops
passwd devops
su devops
2、在devops用户下生成密钥对
ssh-keygen
3、返回root用户,编写剧本
su root
vim /playbook/devops.yaml
---
- hosts: ssh_key
remote_user: root
tasks:
- name: 创建devops用户
user:
name: devops
shell: /bin/bash
create_home: yes
state: present
tasks:
- name: 推送devops的公钥
authorized_key: user=devops key="{{ lookup('file', '/home/devops/.ssh/id_rsa.pub') }}" state=present
vim devops.sh
#!/bin/bash
mv /home/devops/.ssh/id_rsa /playbook/dpkey
Ansible实现N+服务器的免密配置及用户分权
https://www.gmqgmq.cn//archives/ssh-key