Ansible 自动化介绍

发布于:2025-08-14 ⋅ 阅读:(17) ⋅ 点赞:(0)

在执行命令前,先明确 Ansible 的 “规则” 和 “目标”,

  • ansible.cfg(操作说明书)

  • inventory(地址簿)的作用

一、初始化服务器环境(准备 “员工电脑”)

 #1. 查看当前服务器 IP 信息
 [root@centos7 ~ 10:08:56]# ip -br a
 #拖入set-ansible-centos7.sh,以下为.sh内容
 ======================================================================
 #!/bin/bash
 ​
 # 使用说明
 if [ $# -eq 0 ];then
   echo "Usage: $0 10-14" && exit 1
 fi
 ​
 # 获取主机名
 domain=lyk.cloud
 if [ $1 -eq 10 ];then
   HOSTNAME=controller.$domain
 else
   HOSTNAME=node$[ $1%10 ].$domain
 fi
 ​
 # 设置主机名
 hostnamectl set-hostname $HOSTNAME
 ​
 ​
 # 设置网络
 interface=ens33
 nmcli connection modify $interface ipv4.method manual ipv4.addresses 10.1.8.$1/24 ipv4.dns 223.5.5.5 +ipv4.dns 223.6.6.6
 nmcli connection up $interface 2>/dev/null
 ​
 # 清屏,查看主机名
 clear
 hostname
 ip -br addr show $interface
 bash
 ​
 ======================================================================
 #2. 上传并处理环境配置脚本
 [root@centos7 ~ 10:09:15]# rz -E
 rz 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; done
 controller.lyk.lyk.cloud
 node1.lyk.cloud
 node2.lyk.cloud
 node3.lyk.cloud
 node4.lyk.lyk.cloud
 ​
 #验证是否可以在远程主机上执行 sudo 命令
 [lyk@controller ~ 11:40:05]$ for host in controller node{1..4}; do    ssh lyk@$host sudo id ; done
 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)
 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 无法工作,需要先安装

网站公告

今日签到

点亮在社区的每一天
去签到