目录

一、创建 Ansible Inventory

核心定义

静态清单

清单验证命令

动态清单

二、管理 Ansible 配置文件

配置文件类型

ansible.cfg 核心配置段

配置优先级

连接配置

三、编写和执行 Playbook

Playbook 核心概念

YAML 编写规范

模块使用

Playbook 执行命令

四、实施 Multiple Plays

多 Play 编写

Play 级特权升级


一、创建 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

  • 常用模块copydnfserviceuserlineinfile

  • 慎用模块commandshellraw 非幂等操作。

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_userbecomebecome_method,覆盖全局配置,满足不同主机权限要求。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐