使用 Ansible 剧本
欢迎来到 Ansible 剧本指南。剧本是用 YAML 格式编写的自动化蓝图,Ansible 使用它来部署和配置清单中的节点。本指南将向您介绍剧本,然后介绍任务和剧本当中的不同用例,例如:
- 以提升的权限或以其他用户身份执行任务。
- 使用循环重复列表中项目的任务。
- 委派剧本以在不同的机器上执行任务。
- 运行条件任务并使用剧本测试评估条件。
- 使用块对任务集进行分组。
您还可以学习如何通过使用集合、创建可重用的文件和角色、包含和导入剧本以及使用标签运行剧本的选定部分来更有效地使用 Ansible 剧本。
使用 Playbook
Playbook 记录并执行 Ansible 的配置、部署和编排功能。它们可以描述您希望远程系统强制执行的策略,或者通用 IT 流程中的一系列步骤。
如果 Ansible 模块是您工作坊中的工具,那么 Playbook 就是您的操作手册,而您的主机清单则是您的原材料。
在基本层面上,Playbook 可用于管理远程机器的配置和部署。在更高级别上,它们可以按顺序执行涉及滚动更新的多层部署,并且可以将操作委托给其他主机,在此过程中与监控服务器和负载均衡器进行交互。
Playbook 被设计为人类可读的,并且是用基本的文本语言开发的。组织 Playbook 及其包含的文件有多种方法,我们将提供一些关于此的建议,以及如何充分利用 Ansible。
- 模板 (Jinja2)
- Jinja2 示例
- 使用过滤器操作数据
- 处理未定义的变量
- 为 true/false/null 定义不同的值(三元运算符)
- 管理数据类型
- 格式化数据:YAML 和 JSON
- 组合和选择数据
- 随机化数据
- 管理列表变量
- 从集合或列表选择(集合论)
- 计算数字(数学)
- 管理网络交互
- 哈希和加密字符串和密码
- 操作文本
- 操作字符串
- 管理 UUID
- 处理日期和时间
- 获取 Kubernetes 资源名称
- 测试
- 测试语法
- 测试字符串
- Vault
- 测试真值
- 比较版本
- 集合论测试
- 测试列表是否包含值
- 测试列表值是否为 True
- 测试路径
- 测试大小格式
- 测试任务结果
- 类型测试
- 查找
- 查找函数
- 查询/q 函数
- 模板中的 Python3
- 字典视图
- dict.iteritems()
- now 函数:获取当前时间
- undef 函数:为未定义变量添加提示
- 循环
- 比较循环
- 使用循环
- 确保 loop 的列表输入:使用 query 而不是 lookup
- 向循环添加控件
- 嵌套循环
- 从 with_X 迁移到 loop
- 控制任务的运行位置:委托和本地操作
- 不能委托的任务
- 委托任务
- 委托上下文中的模板
- 委托和并行执行
- 委托事实
- 本地 Playbook
- 条件
- 使用 when 的基本条件
- 调试条件
- 常用事实
- 块
- 使用块对任务进行分组
- 使用块处理错误
- 处理程序:在更改时运行操作
- 处理程序示例
- 通知处理程序
- 通知和循环
- 命名处理程序
- 控制处理程序的运行时间
- 定义任务何时更改
- 将变量与处理程序一起使用
- 角色中的处理程序
- 处理程序中的 include 和 import
- 作为处理程序的元任务
- 限制
- Playbook 中的错误处理
- 忽略失败的命令
- 忽略无法访问的主机错误
- 重置无法访问的主机
- 处理程序和失败
- 定义失败
- 定义“已更改”
- 确保 command 和 shell 的成功
- 中止所有主机上的 Play
- 控制块中的错误
- 设置远程环境
- 在任务中设置远程环境
- 使用特定于语言的版本管理器
- 重用 Ansible 工件
- 创建可重用的文件和角色
- 重用 Playbook
- 何时将 Playbook 转换为角色
- 重用文件和角色
- 将任务重用为处理程序
- 角色
- 角色目录结构
- 存储和查找角色
- 使用角色
- 角色参数验证
- 在一个 Play 中多次运行角色
- 使用角色依赖项
- 将模块和插件嵌入角色中
- 共享角色:Ansible Galaxy
- 模块默认值
- 模块默认组
- 交互式输入:提示
- 哈希 vars_prompt 提供的值
- 允许 vars_prompt 值中的特殊字符
- 使用变量
- 创建有效的变量名
- 简单变量
- 何时引用变量(YAML 陷阱)
- 布尔变量
- 列表变量
- 字典变量
- 组合变量
- 注册变量
- 引用嵌套变量
- 使用 Jinja2 过滤器转换变量
- 在何处设置变量
- 变量优先级:我应该把变量放在哪里?
- 使用高级变量语法
- 发现变量:事实和魔法变量
- Ansible 事实
- 关于 Ansible 的信息:魔法变量
- Playbook 示例:持续交付和滚动升级
- 什么是持续交付?
- 站点部署
- 可重用内容:角色
- 配置:组变量
- 滚动升级
- 管理其他负载均衡器
- 端到端的持续交付