当前位置: 首页 > news >正文

Ansible 环境配置(基于 RHEL 9)

Ansible 环境配置(基于 RHEL 9)

一、Ansible 概述

1. 核心定义与功能

  • 定位:开源自动化运维工具,基于 Python 开发,采用无代理架构,通过 SSH/WinRM 实现远程主机管理。
  • 核心功能:批量系统配置、程序部署、命令执行、配置管理、工作流 / 网络自动化,支持应用全生命周期编排。
  • 优势:跨平台无代理、YAML 剧本易读、支持版本控制、动态清单、可与 Jenkins / 红帽卫星等工具集成。

2. 核心组成结构

组件

功能描述

Core Modules

Ansible 自带模块,覆盖系统管理、软件部署等基础场景

Custom Modules

用户自定义扩展模块,补充核心模块功能缺口

Plugins

扩展功能(如日志记录、邮件通知)

Playbooks

YAML 格式剧本,定义主机需执行的任务与模块

Connection Plugins

连接远程主机的插件,默认使用 SSH

Host Inventory

主机清单,记录受管主机的 IP、端口、密码等信息

3. 执行模式

  • Ad-hoc(点对点模式):单条命令快速执行(如批量 ping 主机、安装软件)。
  • Playbook(剧本模式):通过 YAML 文件定义复杂任务流,为主要管理方式。

二、环境部署前置准备(RHEL 9)

1. 基础环境规划

主机角色

主机名

IP 地址

用途

控制节点(树主机)

ansible.example.com

192.168.100.100(与物理机通信)、192.168.122.1(与 KVM 虚拟机通信)

部署 Ansible,管理所有被控节点

被控节点

master.example.com

192.168.122.100

主被控节点,用于批量分发配置

被控节点

node1.example.com

192.168.122.10

克隆节点 1

被控节点

node2.example.com

192.168.122.20

克隆节点 2

被控节点

node3.example.com

192.168.122.30

克隆节点 3

被控节点

node4.example.com

192.168.122.40

克隆节点 4

被控节点

node5.example.com

192.168.122.50

克隆节点 5

2. 控制节点(ansible.example.com)基础配置

(1)配置 IP 与主机名
# 1. 配置网卡 IP(192.168.100.100/24)nmcli connection modify ens160 ipv4.addresses 192.168.100.100/24 ipv4.gateway 192.168.100.254 ipv4.dns 114.114.114.114 ipv4.method manual connection.autoconnect yesnmcli connection up ens160# 2. 修改主机名hostnamectl hostname ansible.example.com
(2)配置本地 YUM 源
  • 创建 YUM 配置文件:
vim /etc/yum.repos.d/server.repo
  • 写入以下内容(RHEL 9 分 BaseOS 与 AppStream 仓库):
[aa]name=aa1baseurl=file:///mnt/BaseOSenabled=1gpgcheck=0[bb]name=bb1baseurl=file:///mnt/AppStreamenabled=1gpgcheck=0
  • 挂载系统镜像到 /mnt:
mount /dev/cdrom /mnt # 若需开机自动挂载,可添加到 /etc/fstab
(3)安装 KVM 相关工具(用于创建被控节点虚拟机)
# 安装虚拟化工具组yum -y group install "Virtualization Client" "Virtualization Hypervisor" "Virtualization Tools"# 重启并设置 libvirtd 服务开机自启systemctl restart libvirtdsystemctl enable libvirtd
(4)允许 root 远程 SSH 登录
# 编辑 SSH 配置文件vim /etc/ssh/sshd_config# 修改以下参数PermitRootLogin yes# 重启 SSH 服务systemctl restart sshdsystemctl enable sshd
(5)将RHEL 9.2 镜像上传到树主机中

三、被控节点(虚拟机)创建与配置

1. 创建 master 虚拟机

  1. 通过 virt-manager 图形工具创建虚拟机:
    • 镜像选择 RHEL 9.2 系统镜像;
    • 创建 root 用户并勾选 “允许 root SSH 登录”;
    • 创建普通用户 student;
    • 配置 IP 为 192.168.122.100,主机名为 master.example.com。

2. 克隆 node1-node5 虚拟机

  1. 在 virt-manager 中右键克隆 master 虚拟机,共克隆 5 台(命名为 node1-node5);
  2. 分别配置每台节点的 IP 与主机名(以 node1 为例):
# 1. 修改主机名hostnamectl set-hostname node1.example.com# 2. 编辑网卡配置文件(删除 UUID,修改 IP)vi /etc/NetworkManager/system-connections/enp1s0.nmconnection# 修改内容:ipv4.addresses=192.168.122.10/24# 删除 uuid 字段(避免冲突)# 3. 重启网络nmcli connection NetworkManagernmcli connection up enp1s0

按上述步骤配置 node2-node5,IP 分别为 192.168.122.20/30/40/50。

四、跨主机通信与权限配置

1. 配置主机名解析(控制节点与被控节点)

(1)控制节点(ansible)配置 hosts
vim /etc/hosts# 添加以下内容192.168.122.1 ansible.example.com ansible192.168.122.100 master.example.com master192.168.122.10 node1.example.com node1192.168.122.20 node2.example.com node2192.168.122.30 node3.example.com node3192.168.122.40 node4.example.com node4192.168.122.50 node5.example.com node5
(2)分发 hosts 文件到所有被控节点
# 1. 发送到 masterscp /etc/hosts root@master:/etc/hosts# 2. 从 master 批量发送到 node1-node5ssh root@master "for i in node{1..5}
>do scp /etc/hosts root@\$i:/etc/hosts
>done"

2. 配置 SSH 免密登录(root 与 student 用户)

(1)master 节点生成密钥并分发(root 用户)
# 1. 登录 master 并生成密钥(一路回车默认即可)ssh root@masterssh-keygen# 2. 分发公钥到 node1-node5(root 用户)for i in node{1..5}
>do ssh-copy-id -i ~/.ssh/id_rsa.pub root@$i
>done# 3. 分发公钥到 node1-node5(student 用户)for i in node{1..5}
>do ssh-copy-id -i ~/.ssh/id_rsa.pub student@$i
>done
(2)master 节点 student 用户配置免密
# 1. 切换到 student 用户su - student# 2. 生成密钥ssh-keygen# 3. 分发公钥到 node1-node5(root 与 student)for i in node{1..5}
>do ssh-copy-id -i ~/.ssh/id_rsa.pub root@$i
>donefor i in node{1..5}
>do ssh-copy-id -i ~/.ssh/id_rsa.pub student@$i
>done

3. 配置普通用户 sudo 提权(所有被控节点)

(1)在 master 节点创建 sudo 配置文件
vim /etc/sudoers.d/student# 添加以下内容(允许 student 免密执行所有命令)student ALL=(ALL) NOPASSWD: ALL
(2)分发 sudo 配置到 node1-node5
for i in node{1..5}; doscp /etc/sudoers.d/student root@$i:/etc/sudoers.d/done

五、Ansible 服务部署与配置

1. 控制节点(ansible)配置网络 YUM 源

(1)安装 httpd 服务并部署 YUM 源文件
# 1. 安装 httpdyum -y install httpd# 上传 ansible-automation-platform 相关包到/var/www/html/# 3. 重启 httpd 并设置开机自启systemctl restart httpdsystemctl enable httpd# 4. 关闭防火墙与 SELinux(避免端口拦截)systemctl stop firewalldsystemctl disable firewalldsetenforce 0vim /etc/selinux/configSELINUX=disabled
(2)被控节点(master/node1-node5)配置网络 YUM 源
# 1. 登录 master 编辑 YUM 配置ssh student@mastervim /etc/yum.repos.d/server.repo# 2. 写入以下内容(指向控制节点的 httpd 源)[aa]name=aa1baseurl=http://ansible.example.com/rhel9/BaseOSenabled=1gpgcheck=0[cc]name=cc1baseurl=http://ansible.example.com/rhel9/AppStreamenabled=1gpgcheck=0[dd]name=dd1baseurl=http://ansible.example.com/ansible-automation-platformenabled=1gpgcheck=0# 3. 安装基础工具(vim、命令补全)sudo yum -y install vim bash-completion net-tools# 4. 也可以将YUM 配置分布到 node1-node5for i in node{1..5}; doscp /etc/yum.repos.d/server.repo student@$i:/etc/yum.repos.d/ssh student@$i "sudo yum -y install vim bash-completion net-tools"done

2. 安装 Ansible(master 节点,student 用户)

# 1. 切换到 student 用户su - student# 2. 安装 ansible 核心组件sudo yum -y install ansible-core ansible-navigator

3. 配置 Ansible(master 节点,student 用户)

(1)创建 Ansible 工作目录
#因为我们的ansible目录下没有以上的一些目录和文件
#需要创建(在/home/student/ansible目录下):
cd /home/student/ansible主机清单:
touch inventory
角色目录:
mkdir roles
模块目录:
mkdir collections
(2)生成并编辑 Ansible 配置文件
# 1. 生成默认配置文件(--disabled 表示注释所有默认配置)(在/home/student/ansible目录下执行)ansible-config init --disabled > ansible.cfg# 2. 编辑配置文件(vim ansible.cfg),修改以下关键参数[inventory]inventory = /home/student/ansible/inventory # 主机清单路径[defaults]remote_user = student # 远程执行用户roles_path = /home/student/ansible/roles # 角色目录host_key_checking = False # 关闭 SSH 主机密钥检查collections_path = /home/student/ansible/collections # 集合目录[privilege_escalation]become = True # 开启提权become_ask_pass = False # 提权无需密码become_method = sudo # 提权方式(sudo)become_user = root # 提权目标用户(root)
(3)配置主机清单(inventory 文件)
vim /home/student/ansible/inventory# 写入以下内容node1node2node3node4node5

六、环境验证

在 master 节点的 ansible 工作目录下,执行 ping 测试(验证所有节点连通性):

cd /home/student/ansibleansible all -m ping

  • 若所有节点返回 SUCCESS,表示 Ansible 环境配置成功;
  • 若失败,检查 SSH 免密、hosts 解析、sudo 提权配置是否正确。
http://www.dtcms.com/a/349989.html

相关文章:

  • 文件权限详解
  • Allegro-过孔篇(普通VIA,盲埋孔)
  • SOME/IP-SD报文中 Entry Format(条目格式)-理解笔记1
  • 新的 macOS 安装程序声称能够快速窃取数据,并在暗网上销售
  • 第四章:大模型(LLM)】07.Prompt工程-(12)评估prompt的有效性
  • 【LIN】2.LIN总线通信机制深度解析:主从架构、五种帧类型与动态调度策略
  • maven-default-http-blocker (http://0.0.0.0/)
  • Gemini CLI 与 MCP 服务器:释放本地工具的强大潜力
  • Swiper属性全解析:快速掌握滑块视图核心配置!(2.3补充细节,详细文档在uniapp官网)
  • 飞牛影视桌面客户端(fntv-electron)使用教程
  • 无人机航拍数据集|第20期 无人机公路损伤目标检测YOLO数据集3771张yolov11/yolov8/yolov5可训练
  • 一键终结Win更新烦恼!你从未见过如此强大的更新暂停工具!
  • 云手机挂机掉线是由哪些因素造成的?
  • 指纹云手机×Snapchat Spotlight:动态GPS+陀螺仪仿生方案
  • 102. 二叉树的层序遍历
  • 指令集架构ISA是什么?
  • toRefs 和 toRef 的区别和用法
  • 计算机实习经历包装/编写
  • 使用阿里云实现短信注册
  • 通过URI Scheme实现从Web网页上打开本地C++应用程序(以腾讯会议为例,附完整实现源码)
  • 从 “能对话” 到 “会思考”:通用人工智能离我们还有多远?
  • 【LeetCode 热题 100】416. 分割等和子集——(解法一)记忆化搜索
  • 函数指针与回调函数(c++)
  • 厚铜pcb的工艺流程与制造工艺
  • AI创业公司:Freya 金融语音AI Agent
  • 猴车安全新保障:AI摄像机智能监测人员乘坐合规性
  • 算法 --- 双指针
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段(19):文法复习+单词第7回1
  • 【C++高并发内存池篇】ThreadCache 极速引擎:C++ 高并发内存池的纳秒级无锁革命!
  • 【51单片机固定按键占空比】2022-11-12