【RH294知识点汇总】第 2 章 《实施 Ansible Playbook》
本文介绍了Ansible的核心组件和基本操作,主要包括:1)Inventory管理,涵盖静态清单定义、验证命令和动态清单概念;2)配置文件管理,包括ansible.cfg的核心配置段、优先级和连接设置;3)Playbook编写规范,详细说明YAML格式要求、模块使用和执行命令;4)多Play实现方法,支持针对不同主机组执行独立任务。文章重点阐述了Ansible的基础配置和自动化任务实现方式,为系统
目录

一、创建 Ansible Inventory
核心定义
Ansible Inventory(主机清单)是管理自动化任务的基础,用于定义受控主机及其角色。每台主机可以归属于多个组,通过组来区分不同角色或环境。
静态清单
课程中主要使用 INI 格式,组用 [] 标识:
-
普通组:例如
[webservers]。 -
嵌套组:例如
[all:children],可包含多个子组。 -
主机范围:支持
[START:END]简写,如192.168.[4:7].[0:255],快速管理大规模主机。
清单验证命令
使用 ansible-navigator inventory 命令可以快速验证 Inventory:
| 命令 | 作用 |
|---|---|
ansible-navigator inventory -m stdout --list |
列出所有主机与组 |
ansible-navigator inventory -m stdout --graph 组名 |
展示组内主机结构 |
ansible-navigator inventory -m stdout --host 主机名 |
验证单台主机是否在清单中 |
动态清单
动态清单通过云平台、CMDB 或 LDAP 生成,适用于大规模、动态环境,本课程不深入,但可参考 DO374 进阶学习。
二、管理 Ansible 配置文件
配置文件类型
-
ansible.cfg:定义 Ansible 核心行为。
-
ansible-navigator.yml:配置
ansible-navigator工具行为,例如执行环境、artifact 控制等。
ansible.cfg 核心配置段
| 配置段 | 关键参数 | 作用 |
|---|---|---|
| [defaults] | inventory | 指定清单路径 |
| [defaults] | remote_user | 默认远程连接用户 |
| [defaults] | ask_pass | 是否提示 SSH 密码 |
| [privilege_escalation] | become | 启用特权升级 |
| [privilege_escalation] | become_method | 提权方式,如 sudo |
| [privilege_escalation] | become_user | 提权目标用户,如 root |
配置优先级
-
项目目录
ansible.cfg> 用户目录~/.ansible.cfg> 系统目录/etc/ansible/ansible.cfg。
连接配置
推荐使用 SSH 免密认证(ssh-copy-id),如果使用密码认证,需要关闭 playbook-artifact 功能以保证安全。
三、编写和执行 Playbook
Playbook 核心概念
-
Play:针对一组主机的任务列表。
-
Playbook:YAML 格式文件,可包含一个或多个 Play,确保 幂等性,即重复执行不会改变已处于目标状态的主机。
YAML 编写规范
-
使用 纯空格缩进,禁止 Tab。
-
Playbook 以
---开头,结构为:name → hosts → tasks。 -
注释使用
#,字符串支持引号或无引号,多行可用|或>。 -
字典与列表有固定格式,列表以
-开头。
模块使用
-
命名规范:FQCN(Fully Qualified Collection Name),如
ansible.builtin.user。 -
常用模块:
copy、dnf、service、user、lineinfile。 -
慎用模块:
command、shell、raw非幂等操作。
Playbook 执行命令
| 命令 | 作用 |
|---|---|
ansible-navigator run 剧本.yml -m stdout |
标准输出执行 |
ansible-navigator run 剧本.yml --syntax-check |
语法验证 |
ansible-navigator run 剧本.yml -C |
空运行,不修改主机 |
ansible-navigator run 剧本.yml -vvvv |
输出最高级别详讯,调试使用 |
四、实施 Multiple Plays
多 Play 编写
一个 Playbook 可包含多个 Play,每个 Play 针对不同 hosts 独立执行任务,实现复杂场景管理。
Play 级特权升级
每个 Play 内可单独配置 remote_user、become、become_method,覆盖全局配置,满足不同主机权限要求。
更多推荐
所有评论(0)