一、SSH批量一键完成
1、一键创建及分发的秘钥:
#!/bin/bash
ssh-keygen -f ~/.ssh/id_rsa -P '' -q
for ip 61 31
do
sshpass -p123456 ssh-copy-id -i ~/.ssh/id_rsa.pub -o StrictHostKeyChecking=no 172.16.1.$ip
done
说明:
非交换式创建秘钥对
ssh-keygen -f ~/.ssh/id_rsa -P '' -q 本地创建秘钥对
命令参数讲解:
-f 输入秘钥文件 input_passphrase
-P '' old_passphrase
-q 静默、安静,不输出信息ssh keygen
-t dsa指定秘钥类型
ssh-copy-id #专业拷贝秘钥中的公钥文件
也可以这么写
sshpass 工具
这个脚本既不用确定yes,也不用输入密码直接把公钥推送到远端服务器
二、实例,测试无密码控制远程服务器
1、安装sshpass
yum install sshpass -y
<meta charset="utf-8">
三、ansible软件知识介绍
1、ssh秘钥认证项目+脚本批量管理。简单实用,看起来比较low,需要人工写脚本,
类似inotify。ansible有配置文件,可以多线程直接实现。不需要写脚本,类似sersync
2、批量管理工具历史
SSH+脚本 CFEngine Puppet saltstack ansible
08年以前 07-08年 10-13年 14-17(Python开发) 16-至今(Python开发)
3、为什么用ansible
简单、方便、容易学习、功能同样强大
ansible有配置文件,可以多线程直接实现。不需要写脚本,类似实时复制的sersync
4、Ansible是一个用来批量部署远程主机上服务的工具、这里“远程主机(remote host)”
是指任何可以通过ssh登录的主机,所以它既可以是远程虚拟机或物理机,也可以是本地主机。
Ansible通过ssh协议实现管理节点与远程节点之间的通信。理论上来说,只要能通过ssh登录到远程主机来完成的操作,都可以通过ansible实现批量自动化操作
涉及命令管理操作:复制文件、安装服务、服务启动停止管理、配置管理等等
5、为什么要用批量管理工具运维
提高效率,百度几万台服务器,阿里几十万台服务器
如何省钱?
SSD+SATA 热点存储
6、ansible特点
ansible基于Python语言实现,由parmiko和pyyaml两个关键模块
1)安装部署过程特别简单,学习曲线很平坦
2)不需要单独安装客户端,只是利用现有的SSHD服务即可
3)不需要服务端(no servers)
4)ansible playbook ,采用yaml配置,提高编排自动化任务
5)ansible 功能模块较多,对于自动化的场景支持丰富
第三方 https://www.cnblogs.com/gzxbkk/p/7515634.html
7、ansible 优点
1)轻量级,无需再客户端安装agent,更新时,只需在操作机上执行一次更新即可
2)批量任务执行可以写成脚本,而且不用分发到远程就可以执行
3)使用Python 编程,维护更简单,
4)支持sudo
四、实践安装Ansible
1、ansible实践环境准备
61(m01)=========>31(nfs01)
61(m01)=========>41(backup)
2、安装ansible
3、查看
4、配置文件备份配置说明
/etc/ansible/hosts 主机资产清单文件,用于定义被管理主机的认证信息
例如ssh登录用户名、密码以及key相关信息。如何配置inventory文件
1)、主机支持主机名通配以及正则表达式,例如
web [1:3].oldboy.com代表三台主机
2)、主机支持基于非标准的ssh端口,例如
web1.oldboyedu.com:6666
3)、主机支持指定变量,可对个别主机的特殊配置,如登录用户\密码
4)、主机组支持指定变量[group_name:vars],同时支持嵌套组[game:children]
五、Ansible的使用
1、语法
ansible oldboy -m command -a "df -h"
主机组 模块 参数
2、要想实现如上的结果,可以有如下两种方式
1)基于SSH秘钥认证的前提下(推送公钥到服务端):可以直接执行
2)如果没有做SSH秘钥认证(服务端没有公钥),可以把用户密码写到
3、常见参数说明及实践
4、ansible模块查看和帮助