mcpField
A
ansible-playbook

ansible-playbook

github.com/realsigridjin云与 DevOps9444 次安装41 周前更新
代码仓库

关于 ansible-playbook

用于编写、组织和排查 Ansible Playbook、角色与清单的参考技能,强调幂等的期望状态配置,并提供模块模式、变量优先级、错误处理和验证命令。

主要功能

  1. 01Playbook 与角色结构指南
  2. 02清单和变量优先级参考
  3. 03全限定模块名用法
  4. 04处理器与错误处理示例
  5. 05语法、试运行和清单检查

适用场景

  1. 01创建可复用的 Ansible 角色
  2. 02排查 YAML 或模块参数问题
  3. 03将 Shell 任务改写为 Ansible Playbook
  4. 04验证清单和 Playbook 变更

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/realsigridjin/hello-ansible-skills --skill ansible-playbook

安装后在 Claude Code 中输入/ansible-playbook确认已加载。

详细介绍

Ansible Playbook 开发

概述

Ansible playbook 声明期望的系统状态,而不是命令式命令。核心原则是幂等性:多次运行同一个 playbook 会产生相同结果,不会造成意外更改。

适用场景

  • 创建新的 playbook 或角色
  • 编写清单文件
  • 调试 YAML 语法错误
  • 排查模块参数问题
  • 了解变量优先级
  • 将 Shell 脚本转换为 Ansible

快速参考

项目结构
project/
├── ansible.cfg          # Configuration
├── inventory            # Host definitions
├── group_vars/          # Group variables
├── host_vars/           # Host-specific vars
├── roles/               # Reusable roles
└── playbooks/           # Playbook files
必要的 ansible.cfg
[defaults]
inventory = ./inventory
roles_path = ./roles
host_key_checking = False
stdout_callback = yaml

[privilege_escalation]
become = True
become_method = sudo
模块模式
操作模块关键参数
创建目录ansible.builtin.filestate: directory、mode、owner
复制文件ansible.builtin.copysrc、dest、mode
模板ansible.builtin.templatesrc、dest、.j2 中的变量
安装软件包ansible.builtin.packagename、state: present
管理服务ansible.builtin.servicename、state、enabled
运行命令ansible.builtin.commandcmd、注册结果、设置 changed_when
变量优先级(从低到高)
  1. 角色默认值(defaults/main.yml)
  2. 清单 group_vars
  3. 清单 host_vars
  4. Playbook 变量
  5. 角色变量(vars/main.yml)
  6. 任务变量
  7. 额外变量(-e)
处理程序
tasks:
  - name: Update config
    ansible.builtin.template:
      src: app.conf.j2
      dest: /etc/app.conf
    notify: Restart app

handlers:
  - name: Restart app
    ansible.builtin.service:
      name: app
      state: restarted
错误处理
- block:
    - name: Risky operation
      ansible.builtin.command: /opt/app/upgrade.sh
  rescue:
    - name: Handle failure
      ansible.builtin.debug:
        msg: "Upgrade failed, rolling back"
  always:
    - name: Cleanup
      ansible.builtin.file:
        path: /tmp/upgrade.lock
        state: absent

常见错误

错误修复方法
使用简短模块名称始终使用 FQCN:ansible.builtin.copy,而不是 copy
硬编码值将其提取为 defaults/main.yml 中的变量
命令缺少 changed_when添加 changed_when: "'created' in result.stdout"
忘记刷新处理程序在需要时使用 meta: flush_handlers,并确保在依赖任务之前执行
YAML 缩进错误使用 2 个空格,切勿使用制表符
未加引号的字符串中包含冒号为包含 : 的值加上引号

验证命令

ansible-playbook --syntax-check playbook.yml  # Check YAML
ansible-playbook --check playbook.yml         # Dry run
ansible-playbook --check --diff playbook.yml  # Show file changes
ansible-inventory --list                       # Verify inventory
ansible-inventory --host hostname             # Check host vars

评论

支持 Markdown