关于 infrahub-managing-objects
infrahub-managing-objects 是为 Infrahub 基础设施数据文件提供指导的技能,面向需要创建或维护对象 YAML 的团队。它涵盖模式映射、关系与层级数据、文件组织,以及在分支上验证和加载。
主要功能
- 01指导对象 YAML 文件格式
- 02根据模式映射属性与关系
- 03组织层级和组件子对象
- 04规划文件命名与加载顺序
- 05在分支上验证并加载对象
适用场景
- 01为设备和位置创建对象数据
- 02跨文件引用相关对象
- 03配置层级位置或租户组
- 04排查对象加载和引用错误
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ opsmill/ infrahub-skills --skill infrahub-managing-objects安装后在 Claude Code 中输入/infrahub-managing-objects确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
examples.mdreference.mdvalidation.mdrules/_sections.md_template.mdchildren-components.mdchildren-hierarchy.mdformat-structure.mdorganization-load-order.mdpatterns-common.mdrange-expansion.mdvalue-attributes.mdvalue-generic-relationships.mdvalue-profiles-templates.mdvalue-relationships.mdworkflow-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 块仅针对一种节点类型。
工作流
创建对象数据文件时,请遵循以下步骤:
- 计划加载到分支,而不是默认分支 —
写入文件前,确定要将这些数据加载到哪个专用分支,
并在交接加载命令时说明该分支。加载到默认分支
(未指定
--branch时的目标分支,通常为main, 但可以重命名)会将未经审核的数据写入事实来源;如果 在那里批量加载出错,就只能逐个删除对象,而不能直接 丢弃分支。请阅读 rules/workflow-branch-first.md。 默认分支仅适用于本地的一次性实例。 - 阅读架构 — 确定目标节点类型、 其属性、关系,以及它是否包含组件子节点或层级父节点。
- 规划文件结构 — 阅读 rules/format-structure.md,了解 必需的 YAML 结构;阅读 rules/organization-load-order.md,了解 文件命名和加载顺序约定。
- 映射属性值 — 使用正确的值格式设置每个属性。请阅读
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)。 - 处理子节点 — 如果节点包含组件 子节点或层级嵌套,请阅读 rules/children-components.md 和 rules/children-hierarchy.md。
- 验证并加载到分支 — 检查 YAML 语法,
确保被引用的对象已存在或已在更早加载的文件中定义,然后针对
你的分支(
--branch)进行验证和加载。请参阅 validation.md,了解命令和 加载前检查清单。
参考资料
- reference.md -- 对象文件格式 规范
- validation.md --
infrahubctl object validate/object load命令、常见加载错误、加载前检查清单 - examples.md -- 来自生产仓库的 15 个完整对象 示例模式
- ../infrahub-common/infrahub-yml-reference.md -- .infrahub.yml 项目配置
- ../infrahub-common/marketplace-reference.md -- 如果这些对象所填充的架构来自 marketplace,请复用它,而不是重新建模
- ../infrahub-common/metadata-lineage.md
-- 值元数据(
source、owner、is_protected): 设置溯源信息/所有权,以及为何source不会 控制编辑权限 - ../infrahub-common/rules/ -- 所有技能共享的规则 (git 集成、缓存)
- ../infrahub-common/rules/workflow-information-priority.md
-- 优先使用技能内容;遇到确实缺少的信息时(例如删除节点),如何查阅
docs.infrahub.app - ../infrahub-managing-schemas/SKILL.md -- 这些对象所遵循的架构定义
- rules/ -- 按类别 前缀划分的单项规则
评论
支持 Markdown