Ansible 剧本精粹 - 编写你的第一个 Playbook - 详解
Ansible剧本精粹 - 编写你的第一个 Playbook
你对厨房里的助手发出的零散口头指令(“切个洋葱”、“烧开水”),那么就是如果说 Ansible Ad-Hoc 命令像Playbook 就是一份完整、详细、写在纸上的菜谱。它列明了所有需要的“食材”(变量),详细的“烹饪步骤”(任务),甚至还有一些“特殊处理程序”(处理器),可能指导任何人(或 Ansible)精确地烹制出一道(甚至一桌)美味佳肴(即完成困难的系统配置)。
Playbook 是 Ansible 完成“部署即代码 (Configuration as Code)”的核心。
Playbook 基础结构
Playbook 运用YAML (YAML Ain’t Markup Language)格式编写。YAML 以其简洁、人类可读性强而著称。你需要了解一些基本的YAML 语法:
- 缩进: YAML 使用空格(通常是 2 个或 4 个,但必须在同一层级保持一致)来表示层级关系,非常重要!
- 列表/数组: 以
-(短横线加空格) 开头。 - 字典/映射: 以
key: value(冒号后有空格) 的形式表示。
下面是一个最小化的 Playbook 结构示例,用于确保webservers组中的服务器都安装并启动了Nginx:
# my_nginx_playbook.yaml --- # YAML 文档开始的标志 (可选,但推荐) - name:Configure Nginx Web Servers# 这是第一个 "Play" (剧目) 的名称 hosts:webservers# 此 Play 针对 Inventory 中的 'webservers' 组 become: true # 表示需提权 (例如 sudo) 来执行任务 tasks: # 此 Play 包含的任务列表 - name:Ensure nginx package is present and updated# 第一个任务的名称 ansible.builtin.apt: # 使用的模块 (推荐使用 FQCN - 完全限定集合名称) name: nginx state:present# 确保 nginx 包是 'present'(已安装) 状态 update_cache: yes # 执行前更新 apt 缓存 - name:Ensure nginx service is started and enabled# 第二个任务的名称 ansible.builtin.service: name: nginx state:started# 确保服务是 'started'
浙公网安备 33010602011771号