mcpField
I
infrahub-managing-objects

infrahub-managing-objects

github.com/opsmill云与 DevOps27151 次安装1 天前更新
代码仓库

关于 infrahub-managing-objects

infrahub-managing-objects 是为 Infrahub 基础设施数据文件提供指导的技能,面向需要创建或维护对象 YAML 的团队。它涵盖模式映射、关系与层级数据、文件组织,以及在分支上验证和加载。

主要功能

  1. 01指导对象 YAML 文件格式
  2. 02根据模式映射属性与关系
  3. 03组织层级和组件子对象
  4. 04规划文件命名与加载顺序
  5. 05在分支上验证并加载对象

适用场景

  1. 01为设备和位置创建对象数据
  2. 02跨文件引用相关对象
  3. 03配置层级位置或租户组
  4. 04排查对象加载和引用错误

安装

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

$npx skills add https://github.com/opsmill/infrahub-skills --skill infrahub-managing-objects

安装后在 Claude Code 中输入/infrahub-managing-objects确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

examples.md
reference.md
validation.md
rules/
_sections.md
_template.md
children-components.md
children-hierarchy.md
format-structure.md
organization-load-order.md
patterns-common.md
range-expansion.md
value-attributes.md
value-generic-relationships.md
value-profiles-templates.md
value-relationships.md
workflow-branch-first.md

详细介绍

对象创建器

概览

提供创建 Infrahub 对象(数据)文件的专业指导。 对象是 YAML 文件,用于为架构节点填充实际的 基础设施数据,例如设备、位置、组织、 模块等。

项目上下文

现有架构文件: !find . -name "*.yml" -path "*/schemas/*" -o -name "*schema*" -name "*.yml" 2>/dev/null | head -10

现有对象文件: !find . -name "*.yml" -path "*/objects/*" 2>/dev/null | head -20

如果调用时带有参数(例如,/infrahub:managing-objects DcimDevice spine-01), 将第一个参数用作类型,其余参数用作对象详情。

适用场景

  • 为基础设施对象创建新的数据文件
  • 填充设备、位置、组织或其他架构节点
  • 设置层级数据(位置树、租户组)
  • 跨文件引用相关对象
  • 管理组件子项(接口、模块)
  • 组织对象文件,以确保按正确顺序加载
  • 更新现有数据文件中的属性值或关系链接
  • 调试对象加载失败或引用解析错误的问题

规则类别

优先级类别前缀描述
CRITICAL分支优先加载workflow-加载到分支,而非默认分支
CRITICAL文件格式format-apiVersion、kind、spec 结构
CRITICAL值映射value-属性、下拉选项、引用
HIGH子项children-层级/组件嵌套
MEDIUM范围range-顺序扩展接口
MEDIUM组织organization-命名、加载顺序、多文档
LOW模式patterns-扁平列表、设备、Git 仓库

此技能依赖的架构功能

对象文件引用架构定义的结构;缺少 架构设置会在同步时导致“对象加载失败”或 “未找到引用”错误。在填充数据之前,请先验证上游架构:

如果对象……架构必须……参见
跨文件引用另一个对象在目标节点上定义 human_friendly_id(结构决定引用是标量还是列表)../infrahub-managing-schemas/rules/display-human-friendly-id.md
位于位置/父级树中使用包含 parent/children 的层级泛型,并使用完整类型的对等引用../infrahub-managing-schemas/rules/hierarchy-setup.md
设置 Dropdown 属性值将下拉选项 choices 声明为包含 name 的对象(而非裸字符串);对象引用选项的 name../infrahub-managing-schemas/rules/attribute-defaults-and-types.md
内联拥有组件子项父级的 Component 关系和子级的 Parent 关系必须共用同一标识符,且子级需要 optional: false../infrahub-managing-schemas/rules/relationship-component-parent.md
将作为工件流水线的目标具体节点必须 inherit_from: CoreArtifactTarget(在节点上设置,而不是在泛型上)../infrahub-managing-schemas/rules/extension-artifact-target.md

如果缺少其中任何一项,就必须先更新架构, 对象才能加载——这是架构迁移,而非对象修复。

对象文件基础

---
apiVersion: infrahub.app/v1
kind: Object
spec:
  kind: <NodeKind>          # Schema node kind (e.g., DcimDellServer)
  data:
    - <attribute>: <value>  # List of object instances

apiVersion、kind: Object、spec.kind 和 spec.data 始终为必填项。每个 spec 块仅针对一种节点类型。

工作流

创建对象数据文件时,请遵循以下步骤:

  1. 计划加载到分支,而不是默认分支 — 写入文件前,确定要将这些数据加载到哪个专用分支, 并在交接加载命令时说明该分支。加载到默认分支 (未指定 --branch 时的目标分支,通常为 main, 但可以重命名)会将未经审核的数据写入事实来源;如果 在那里批量加载出错,就只能逐个删除对象,而不能直接 丢弃分支。请阅读 rules/workflow-branch-first.md。 默认分支仅适用于本地的一次性实例。
  2. 阅读架构 — 确定目标节点类型、 其属性、关系,以及它是否包含组件子节点或层级父节点。
  3. 规划文件结构 — 阅读 rules/format-structure.md,了解 必需的 YAML 结构;阅读 rules/organization-load-order.md,了解 文件命名和加载顺序约定。
  4. 映射属性值 — 使用正确的值格式设置每个属性。请阅读 rules/value-attributes.md,了解属性映射;阅读 rules/value-relationships.md,了解关系引用。如果对象应继承 Profile 中的共享默认值,或根据 Object Template 创建,请阅读 rules/value-profiles-templates.md。 若要标记溯源信息或锁定 一个值,请将其写为 value + 元数据映射 — 参见 ../infrahub-common/metadata-lineage.md (请记住,source 仅用于溯源;锁定需要 owner + is_protected)。
  5. 处理子节点 — 如果节点包含组件 子节点或层级嵌套,请阅读 rules/children-components.md 和 rules/children-hierarchy.md。
  6. 验证并加载到分支 — 检查 YAML 语法, 确保被引用的对象已存在或已在更早加载的文件中定义,然后针对 你的分支(--branch)进行验证和加载。请参阅 validation.md,了解命令和 加载前检查清单。

参考资料

评论

支持 Markdown