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

Ansible主机清单:自动化管理的核心基石

Ansible 主机清单(Inventory)是 Ansible 识别目标主机 / 设备的 “地址簿”,本质是一个配置文件(文本 / INI/YAML 格式),用于集中定义需要管理的所有节点(服务器、网络设备、虚拟机等),并支持分组、变量配置,是 Ansible 执行批量操作的基础。

一、核心定义

  • 本质:存储目标节点信息的配置文件(默认路径 /etc/ansible/hosts,也可自定义路径);
  • 核心内容:目标节点的 IP 地址 / 主机名、SSH 连接参数(端口、用户名、密钥)、分组、变量(环境、角色、自定义参数等);
  • 核心定位:Ansible 与目标节点的 “桥梁”——Ansible 所有批量操作(如执行命令、部署应用、配置管理)都必须通过清单识别目标对象。

二、核心作用(5 点关键)

1. 集中管理目标节点,避免重复指定

无需在每次执行 Ansible 命令时手动罗列目标主机(如 ansible 192.168.1.10 192.168.1.11 -m ping),只需在清单中定义所有节点,后续通过 “分组名” 或 “all”(所有节点)批量操作。

示例:清单中定义 3 台 Web 服务器,执行命令时直接用分组名 webservers

bash

ansible webservers -m yum -a "name=nginx state=installed"  # 批量安装 Nginx

2. 支持节点分组,实现差异化批量操作

按业务场景(如 Web 服务、数据库、测试环境、生产环境)对节点分组,可针对不同分组执行不同操作,适配复杂环境的管理需求。

示例清单(INI 格式):

# 按业务角色分组
[webservers]
192.168.1.10  # Web 服务器1
192.168.1.11  # Web 服务器2[databases]
192.168.1.20  # 数据库主节点
192.168.1.21  # 数据库从节点# 按环境分组(嵌套分组,用 :children 声明)
[dev:children]
webservers
databases[prod]
192.168.2.10
192.168.2.20
  • 操作开发环境所有节点:ansible dev -m ping
  • 仅操作数据库节点:ansible databases -m systemd -a "name=mysql state=started"

3. 配置连接参数,简化 SSH 登录

在清单中直接定义目标节点的 SSH 连接信息(无需手动配置 ~/.ssh/config),避免每次连接时输入端口、用户名、密钥路径等。

示例:指定 SSH 端口、用户名、密钥:

[webservers]
192.168.1.10 ansible_ssh_port=2222 ansible_ssh_user=admin ansible_ssh_private_key_file=/root/.ssh/admin.key
192.168.1.11 ansible_ssh_user=root  # 默认端口22,使用密码登录(执行时需输入密码)
  • 核心连接变量:ansible_ssh_port(SSH 端口)、ansible_ssh_user(登录用户)、ansible_ssh_private_key_file(密钥路径)、ansible_ssh_pass(密码,不推荐明文,建议用 ansible-vault 加密)。

4. 定义自定义变量,实现差异化配置

在清单中为节点 / 分组定义变量(如应用版本、资源规格、环境标识),后续在 Playbook 中直接引用变量,无需硬编码,适配多环境复用。

示例:为分组定义变量:

[webservers]
192.168.1.10
192.168.1.11# 为 webservers 分组定义变量(所有节点共享)
[webservers:vars]
nginx_version=1.24  # Nginx 安装版本
app_env=dev         # 环境标识
max_workers=4       # Nginx 工作进程数[databases:vars]
mysql_version=8.0
data_dir=/data/mysql

在 Playbook 中引用变量:

- name: 安装 Nginxhosts: webserverstasks:- name: 安装指定版本 Nginxyum:name: nginx-{{ nginx_version }}  # 引用清单中的变量state: installed

5. 支持动态清单,适配动态环境

对于云服务器(AWS、阿里云)、容器集群(K8s)等 “节点 IP 不固定” 的动态环境,可通过 动态清单脚本(Python/Shell 编写)实时从云厂商 API 或 K8s 集群获取节点信息,无需手动维护静态清单。

示例:动态清单脚本逻辑:

  1. 调用阿里云 API 获取 ECS 实例列表;
  2. 按实例标签(如 tag:env=prod)分组;
  3. 输出 Ansible 可识别的 JSON 格式节点信息;
  4. 执行命令时指定动态清单脚本:ansible all -i dynamic_inventory.py -m ping

三、清单格式(2 种常用)

1. INI 格式(默认,简洁易读)

适合小型环境,结构如上述示例,核心规则:

  • 分组名用 [分组名] 包裹;
  • 节点行可直接跟变量(键值对);
  • 分组变量用 [分组名:vars] 包裹;
  • 嵌套分组用 [父分组名:children] 包裹。

2. YAML 格式(推荐,支持复杂结构)

适合大型环境,支持更灵活的分组、变量嵌套,需在清单文件头部声明 ---

四、核心总结

  • 主机清单是什么:Ansible 管理目标节点的 “地址簿”,存储节点地址、连接参数、分组、变量;
  • 核心作用:集中管理节点、分组批量操作、简化 SSH 连接、支持变量复用、适配动态环境;
http://www.dtcms.com/a/593270.html

相关文章:

  • 专做高中知识的网站腾讯朋友圈广告代理
  • 「日拱一码」146 SVR调参注意事项与技巧
  • 谷歌云大规模分布式存储系统:定义、特性与技术挑战解析
  • 山东省住房和城乡建设厅服务网站百度网络公司
  • 网站平台需要做无形资产吗 怎么做网站里做个子网页怎么做
  • 在 AEDT 中对用于模拟的作业进行排队
  • FastAPI × Loguru:从“能跑”到“可运维”的日志实战
  • 怎样设立网站网站开发 策划是干嘛的
  • 【大数据技术04】数据可视化
  • qml 网站开发宝塔网站301重定向怎么做
  • 《数据结构:从0到1》-09-队列
  • 安徽建站模板广州市网站制作
  • Vue 项目实战《尚医通》,完成医院科室业务,页面自动滚动到指定位置,笔记22
  • 国产化Word处理控件Spire.Doc教程:使用Java将RTF文件转换为PDF的全面教程
  • Redis 生产环境安全基线配置指南:从风险分析到实操加固
  • java使用poi-tl模版+vform自定义表单生成word,使用LibreOffice导出为pdf,批量下载为压缩文件
  • 济南专业的网站建设公司wordpress快速发布
  • 帝国cms手机网站模板保洁公司开发app
  • 【必收藏】RAG技术全景图:从NaiveRAG到AgenticRAG的演进与工程实践指南
  • 构建AI智能体:九十、图解大模型核心三大件 — 输入编码、注意力机制与前馈网络层
  • 任意模型×任意加速器×任意云,红帽用开放混合解锁企业AI深水区
  • DETR:新一代目标检测范式综述
  • AI浏览器通过模拟人类用户行为绕过付费墙
  • HMSiR-Amide-BG,是一种酶靶向荧光标记分子
  • 大模型-详解 Vision Transformer (ViT) (2)
  • 汽车之家联合HarmonyOS SDK,深度构建鸿蒙生态体系
  • 福州网站设计哪里建站wordpress鼠标停留
  • 2025年IEEE TEVC SCI1区TOP,多解旅行商问题的层次遗传算法,深度解析+性能实测
  • 企业级即时通讯和涉密即时通讯有哪些区别?
  • 在VUE内使用beforeinstallprompt接口安装PWA添加到桌面