Ansible 自动化介绍
在执行命令前,先明确 Ansible 的 “规则” 和 “目标”,
ansible.cfg
(操作说明书)inventory
(地址簿)的作用
一、初始化服务器环境(准备 “员工电脑”)
#1. 查看当前服务器 IP 信息[root@centos7 ~ 10:08:56]# ip -br a#拖入set-ansible-centos7.sh,以下为.sh内容======================================================================#!/bin/bash# 使用说明if [ $# -eq 0 ];thenecho "Usage: $0 10-14" && exit 1fi# 获取主机名domain=lyk.cloudif [ $1 -eq 10 ];thenHOSTNAME=controller.$domainelseHOSTNAME=node$[ $1%10 ].$domainfi# 设置主机名hostnamectl set-hostname $HOSTNAME# 设置网络interface=ens33nmcli connection modify $interface ipv4.method manual ipv4.addresses 10.1.8.$1/24 ipv4.dns 223.5.5.5 +ipv4.dns 223.6.6.6nmcli connection up $interface 2>/dev/null# 清屏,查看主机名clearhostnameip -br addr show $interfacebash======================================================================#2. 上传并处理环境配置脚本[root@centos7 ~ 10:09:15]# rz -Erz waiting to receive.[root@centos7 ~ 10:12:37]# ls -l set-ansible-centos7.sh -rw-r--r-- 1 root root 552 8月 12 10:12 set-ansible-centos7.sh# 简化脚本使用(创建 “快捷方式”)[root@centos7 ~ 10:12:51]# mv set-ansible-centos7.sh /usr/local/bin/sethost[root@centos7 ~ 10:13:36]# chmod +x /usr/local/bin/sethost -第一行:把脚本移动到系统默认的 “命令目录”(/usr/local/bin),并改名为sethost,以后直接输入sethost就能调用,不用再输完整路径,类似 “把程序放到桌面快捷方式”。-第二行:给脚本添加 “可执行权限”(+x),让系统允许运行这个脚本,否则脚本只是个普通文本,无法执行。#vm虚拟机克隆# 克隆虚拟机后,分别在每台机器上执行:-首选项D:\AAA云计算\ansible-克隆一台 controller node1 node2 node3 node4 controller:sethost 10 node1:sethost 11 node2:sethost 12 node3:sethost 13 node4:sethost 14
二、验证服务器配置(检查 “员工电脑” 是否就绪)
#循环连接 10.1.8.11 到 10.1.8.14 的主机,并执行 hostname 命令查看主机名,验证主机名配置是否正确for host in 10.1.8.{11..14};do ssh $host hostname;done#将本地的 /etc/hosts 文件批量复制到 10.1.8.11 到 10.1.8.14 的 /tmp 目录下for host in 10.1.8.{11..14};do scp /etc/hosts $host:/tmp/hosts;done
三、配置免密登录(给 “员工” 配钥匙,不用每次敲门)
[lyk@controller ~ 11:23:06]$ ls .ssh#1.创建.ssh 目录并设置权限为 700,这是 SSH 要求的安全权限#为什么要权限 700:SSH 协议要求这个目录必须 “私密”,否则会认为不安全,拒绝使用密钥登录[lyk@controller ~ 11:20:39]$ \mkdir -m 700 .ssh[lyk@controller ~ 11:23:06]$ ls .ssh#2. 生成 SSH 密钥对(制作 “钥匙和锁”)[lyk@controller ~ 11:23:12]$ ssh-keygen -t rsa -f .ssh/id_rsa -N ''-生成 RSA 类型的 SSH 密钥对:-t rsa:指定加密算法为 RSA-f .ssh/id_rsa:指定密钥文件路径和名称-N '':设置空密码,避免每次使用密钥时输入密码#3. 批量分发公钥(给所有 “员工” 装自己的锁)[lyk@controller ~ 11:26:07]$ for host in controller node{1..4}; do sshpass -p 123 ssh-copy-id lyk@$host; done-批量将公钥复制到各主机,实现免密登录:-循环处理 controller 和 node1 到 node4-sshpass -p 123:使用密码 123 自动登录-ssh-copy-id:将本地公钥复制到远程主机的~/.ssh/authorized_keys 文件中# 验证免密登录[lyk@controller ~ 11:39:40]$ for host in controller node{1..4}; do ssh lyk@$host hostname; donecontroller.lyk.lyk.cloudnode1.lyk.cloudnode2.lyk.cloudnode3.lyk.cloudnode4.lyk.lyk.cloud#验证是否可以在远程主机上执行 sudo 命令[lyk@controller ~ 11:40:05]$ for host in controller node{1..4}; do ssh lyk@$host sudo id ; doneuid=0(root) gid=0(root) 组=0(root)uid=0(root) gid=0(root) 组=0(root)uid=0(root) gid=0(root) 组=0(root)uid=0(root) gid=0(root) 组=0(root)uid=0(root) gid=0(root) 组=0(root)
四、安装 Ansible(部署 “自动化管理工具”)
控制节点
[lyk@controller ~ 11:48:40]$ sudo yum install -y ansible作用:在控制节点(controller)上安装 Ansible 软件,相当于 “在自己电脑上装一个能同时指挥所有员工的管理软件”。-y参数:自动回答 “yes”,安装过程中不用手动确认,一键完成。
受管节点
[lyk@node1 ~ 11:26:07]$ yum list python作用:在受管节点(比如 node1)上查看是否安装了 Python,因为 Ansible 通过 Python 脚本和远程机器通信,相当于 “确认员工电脑上是否装了能接收命令的软件”。实际用途:如果没有 Python,Ansible 无法工作,需要先安装