综合架构批量管理(高效运维)
1)远程服务概念介绍
作用说明:实现通过网络原理管理操作主机系统
实现方式:ssh(更加安全 传输的信息是密文信息) /telnet (不安全的 传输明文数据)
2)远程服务通讯原理
秘钥概念:
1)基于秘钥可以实现对数据加密解密处理
2)基于秘钥可以实现访问者身份认证
基于密码方式实现通讯原理:
A主机(客户端) ---- B主机(服务端SSH)
① 发送建立连接请求 ② 会将一个秘钥信息发送给客户端
③ 接收公钥信息并进行密码验证 ④ 接收用户建立连接请求
产生数据信息(加密处理—公钥) 响应数据信息进行发送(加密处理 — 私钥)
基于秘钥方式实现通讯原理:
A主机(客户端) ---- B主机(服务端SSH)
① 发送建立连接请求 ② 会将一个秘钥信息发送给客户端
③ 接收公钥信息并进行密码验证 ④ 接收用户建立连接请求
⑤ 创建新的秘钥文件(私钥/公钥) ⑥ 会接收到公钥文件信息
将创建好的公钥信息进行发送
=以后的连接请求=====
① 发送建立连接请求 ② 进行公钥质询过程(公钥 == 锁)
③ 利用自身私钥解密公钥 ④ 确认客户端身份实现连接建立
3)远程服务配置应用(基于秘钥)
如何基于秘钥建立连接:
第一个历程:客户端创建秘钥文件
[root@m01 ~]# ssh-keygen -t dsa
第二个历程:将公钥信息发送给其他主机
[root@m01 .ssh]# ssh-copy-id -i /root/.ssh/id_dsa.pub 172.16.1.71
编写批量管理脚本文件:
#!/bin/bash
for ip in {7,8,71}
do
echo -e "\033[33;1m==== 此时操作的主机是172.16.1.$ip ====\033[0m"
ssh 172.16.1.$ip "$1"
echo ""
done
4)批量管理服务介绍
ansible批量管理服务作用:
- 提高工作的效率 重复性完成工作
- 提高工作准确度 部署nginx nfs backup
- 减少维护的成本 批量管理100台数据库服务器 一个人
- 减少重复性工作 实习生/初级运维(了解ansible命令即可)
ansible批量管理服务功能:
1.可以实现批量系统操作配置
2.可以实现批量软件服务部署
3.可以实现批量文件数据分发
4.可以实现批量系统信息收集–资产管理
ansible批量管理服务特点:
1.管理端不需要启动服务程序( no server )
2.管理端不需要编写配置文件(/etc/ansible/ansible.cfg )
3.受控端不需要安装软件程序(libselinux-python )
4.受控端不需要启动服务程序( no agent)
5.服务程序管理操作模块众多( module )命令
6.利用剧本编写来实现自动化( playbook )脚本
ansible批量管理服务架构:
1.主机清单配置
2.软件模块信息
3.基于密钥连接主机
4.主机需要关闭Selinux
5.软件剧本功能
5)批量管理服务部署(配置)
第一个历程:安装服务程序
yum install -y ansible
第二个历程:编写配置文件
[root@m01 .ssh]# vim /etc/ansible/hosts ---主机清单配置文件
172.16.1.71
172.16.1.7
172.16.1.8
[root@m01 .ssh]# ansible all -m command -a "ip a s eth0"
部署过程排错思路:
1)检查基于秘钥远程是否正常
ssh 主机地址 --- 确认是否可以直接连接,无需输入密码
2)检查主机清单配置文件是否正确
3)检查执行命令是否正确
6)批量管理命令应用
主机清单配置文件 /etc/ansible/hosts
批量管理命令使用 ansible / ansible-playbook
如何编写剧本文件
ansible命令使用:
语法格式:ansible 管理主机信息 -m 模块信息 -a 模块指令信息
-----------------------------①-------------------②--------------③
① 管理主机信息
方法一:设置为all: 对主机清单中所有主机进行管理
方法二:设置具体IP地址: 对指定主机进行管理
方法三:设置多个IP地址: 对多个指定主机进行管理
方法四:设置主机组名称: 对主机组进行管理
② 设置不同应用模块
官方模块介绍:https://docs.ansible.com/ansible/latest/collections/
查询帮助信息:
ansible-doc -l ----查看确认是否有指定模块
ansible-doc 模块信息 ----获取模块使用帮助手册
③ 模块指令信息:
实现模块不同功能
command模块常用指令参数:
creates:判断一个文件是否存在,如果存在就不执行相应命令
removes:判断一个文件是否存在,如果存在就执行相应命令
chdir: 执行命令前,进行目录一个切换