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

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: nginxstate: present              # 确保 nginx 包是 'present'(已安装) 状态update_cache: yes           # 执行前更新 apt 缓存- name: Ensure nginx service is started and enabled # 第二个任务的名称ansible.builtin.service:name: nginxstate: started              # 确保服务是 'started'
http://www.lryc.cn/news/2401428.html

相关文章:

  • 【Elasticsearch】Elasticsearch 核心技术(二):映射
  • 【计算机网络】网络层协议
  • .NET Core接口IServiceProvider
  • 结构型设计模式之Proxy(代理)
  • 案例分享--汽车制动卡钳DIC测量
  • Redis Set集合命令、内部编码及应用场景(详细)
  • C++算法动态规划1
  • 【快速预览经典深度学习模型:CNN、RNN、LSTM、Transformer、ViT全解析!】
  • KaiwuDB在边缘计算领域的应用与优势
  • 如何避免二极管过载?
  • Vue.js组件开发系统性指南
  • React---day9
  • 设计模式 - 模板方法模式
  • 鸿蒙开发List滑动每项标题切换悬停
  • ubuntu开机自动挂载windows下的硬盘
  • C# 实现软件开机自启动(不需要管理员权限)
  • 使用 Golang `testing/quick` 包进行高效随机测试的实战指南
  • 32 C 语言字符处理函数详解:isalnum、isalpha、iscntrl、isprint、isgraph、ispunct、isspace
  • Qt实现一个悬浮工具箱源码分享
  • 线夹金具测温在线监测装置:电力设备安全运行的“隐形卫士”
  • 《TCP/IP 详解 卷1:协议》第4章:地址解析协议
  • Dify 离线升级操作手册(适用于无外网企业内网环境)
  • Windows下运行Redis并设置为开机自启的服务
  • 网络编程之网络基础
  • Spring AI(11)——SSE传输的MCP服务端
  • 计算机网络备忘录
  • Spring Boot论文翻译防丢失 From船长cap
  • [蓝桥杯]最优包含
  • NuxtJS入门指南:环境安装及报错解决
  • 在java 项目 springboot3.3 中 调用第三方接口(乙方),如何做到幂等操作(调用方为甲方,被调用方为乙方)? 以及啥是幂等操作?