SuperAPI AI 工具集

ansible-playbook

部署与运维

查看项目

更新于 10-16 02:10

技能介绍

项目定位

Ansible Playbook Development 面向使用 Ansible 进行基础设施自动化的场景。Playbook 以声明期望系统状态的方式工作,而非执行命令式指令。其核心原则是幂等性:多次运行同一 playbook 应产生相同结果,且不带来非预期变更。

适用场景

资料列出的适用场景包括:创建新的 playbook 或 role;编写 inventory 文件;调试 YAML 语法错误;排查模块参数问题;理解变量优先级;将 shell 脚本转换为 Ansible。

项目结构

资料给出的典型结构包含:ansible.cfg(配置)、inventory(主机定义)、group_vars(组变量)、host_vars(主机专属变量)、roles(可复用角色)、playbooks(playbook 文件)。

基础配置

示例 ansible.cfg 的 [defaults] 段包含 inventory、roles_path、host_key_checking、stdout_callback 等项;[privilege_escalation] 段包含 become 与 become_method。

常用模块模式

资料列出若干操作与对应模块及关键参数:创建目录用 ansible.builtin.file(state: directory、mode、owner);复制文件用 ansible.builtin.copy(src、dest、mode);模板用 ansible.builtin.template(src、dest、.j2 中的变量);安装软件包用 ansible.builtin.package(name、state: present);管理服务用 ansible.builtin.service(name、state、enabled);执行命令用 ansible.builtin.command(cmd、register 结果、set changed_when)。

变量优先级

从低到高依次为:Role defaults(defaults/main.yml)、Inventory group_vars、Inventory host_vars、Playbook vars、Role vars(vars/main.yml)、Task vars、Extra vars(-e)。

Handler

资料示例展示通过任务中的 notify 触发 handler,handler 中使用 ansible.builtin.service 以 state: restarted 重启应用。

错误处理

示例使用 block、rescue、always 结构:block 中执行风险操作,rescue 中处理失败并输出信息,always 中执行清理(如删除 /tmp/upgrade.lock)。

常见错误与修正

资料列出的常见错误与修正包括:使用短模块名应改为 FQCN(如 ansible.builtin.copy,而非 copy);硬编码值应提取到 defaults/main.yml 的变量中;命令任务缺少 changed_when 应补充(如 changed_when: "'created' in result.stdout");忘记 flush handler 时可在依赖任务前使用 meta: flush_handlers;YAML 缩进错误应使用 2 个空格而非 tab;未加引号字符串中包含冒号时应为值加引号。

验证命令

资料提供:ansible-playbook --syntax-check playbook.yml(检查 YAML);ansible-playbook --check playbook.yml(dry run);ansible-playbook --check --diff playbook.yml(显示文件变更);ansible-inventory --list(验证 inventory);ansible-inventory --host hostname(检查主机变量)。

限制与缺失信息

资料未提供该技能的安装命令、具体支持平台、收费方式或价格信息,也未给出更多扩展章节内容。