蓝鲸配置平台 bk-cmdb 云主机接入实战:调用 add_cloud_host_to_biz 接口将云主机批量导入业务空闲机
后端企业应用运维【免费下载链接】bk-cmdb蓝鲸智云配置平台(BlueKing CMDB)项目地址https://gitcode.com/gh_mirrors/bk/bk-cmdb点击查看免费下载导读本文以蓝鲸智云配置平台BlueKing CMDB仓库目录bk-cmdb官方 API 文档 add_cloud_host_to_biz 为骨架完整讲解新增云主机到业务空闲机模块这一云主机管理专用接口的请求参数、字段含义、请求/返回示例并结合 host_server 场景服务的 Go 源码cloud_host.go剖析其底层处理流程参数校验、云主机标识写入、新增/更新分类、事务化批量创建与空闲机转移。读完本文你将掌握该接口的完整调用姿势并理解一批主机同时成功或同时失败的原子性保证是如何在源码中实现的。一、接口概述定位、版本与权限该接口用于将云主机批量导入到指定业务的空闲机模块是云主机管理专用接口与普通主机导入接口相互独立。功能新增云主机到业务空闲机模块。版本要求v3.10.19自该版本起提供。所需权限业务主机编辑权限。接口路由源码在 service_initfunc.go 的initCloudHost中注册HTTP 方法为POST路径为/createmany/cloud_hosts。源码注释明确标注dedicated for cloud host management, do not use them for other use云主机管理专用请勿用于其他用途。该接口与配套的删除云主机接口DELETE /deletemany/cloud_hosts共同组成云主机生命周期管理闭环。二、请求参数详解接口请求同时包含通用鉴权参数bk_app_code、bk_app_secret、bk_username、bk_token与业务参数。2.1 接口参数字段类型必选描述bk_biz_idint是业务IDhost_infoarray是新增的云主机信息数组长度最多为 200一批主机仅可同时成功或同时失败数量上限 200对应源码常量BKWriteOpLimit 200定义于 definitions.go。参数结构体 AddCloudHostToBizParam 的Validate方法会对bk_biz_id 0、host_info为空、host_info超过 200 条分别返回校验错误。批次原子性一批主机仅可同时成功或同时失败由事务机制保证详见第四部分源码剖析。2.2 host_info 字段主机信息中管控区域ID、内网IP、云厂商、云主机实例ID为必填字段其余字段为主机模型中定义的属性按需填写。字段表如下字段类型必选描述bk_cloud_idint是管控区域IDbk_host_inneripstring是IPv4 格式的主机内网IP多个IP之间用逗号分隔bk_cloud_vendorarray是云厂商bk_cloud_inst_idarray是云主机实例IDbk_addressingstring否寻址方式云主机的寻址方式都是 staticbk_host_namestring否主机名也可以为其它属性operatorstring否主要维护人也可以为其它属性bk_commentstring否备注也可以为其它属性import_fromstring否主机导入来源以 api 方式导入为 3bk_asset_idstring否固资编号bk_created_atstring否创建时间bk_updated_atstring否更新时间bk_created_bystring否创建人bk_updated_bystring否更新人bk_cloud_host_statusstring否云主机状态bk_cpuint否CPU 逻辑核心数bk_cpu_architecturestring否CPU 架构bk_cpu_modulestring否CPU 型号bk_diskint否磁盘容量GBbk_host_outeripstring否主机外网IPbk_host_innerip_v6string否主机内网 IPv6bk_host_outerip_v6string否主机外网 IPv6bk_isp_namestring否所属运营商bk_macstring否主机内网 MAC 地址bk_memint否主机内存容量MBbk_os_bitstring否操作系统位数bk_os_namestring否操作系统名称bk_os_typestring否操作系统类型bk_os_versionstring否操作系统版本bk_outer_macstring否主机外网 MAC 地址bk_province_namestring否所在省份bk_service_termint否质保年限bk_slastring否SLA 级别bk_snstring否设备 SNbk_statestring否当前状态bk_state_namestring否所在国家bk_bak_operatorstring否备份维护人关于字段类型的小提示文档将bk_cloud_vendor与bk_cloud_inst_id标记为array但从实现看源码 cloud_host.go 的parseCloudHostInfo使用util.GetStrByInterface将其按字符串解析官方测试用例host_test.go中也是直接传字符串如1、000000001。实际调用时传入字符串即可。2.3 云主机属性模型说明bk_cloud_vendor、bk_cloud_inst_id、bk_cloud_host_status是随云主机管理能力一并内置的主机属性由升级脚本 add_cloud_host_attr.go 在升级时写入主机模型属性组为 baseInfo预置属性IsPre truebk_cloud_inst_id云主机实例ID单字符类型bk_cloud_vendor云厂商枚举类型bk_cloud_host_status云主机状态枚举取值包括1未知、2启动中、3运行中、4停止中、5已停止、6已销毁见同一文件中的cloudInstStatusEnum。三、请求参数示例{ bk_app_code: esb_test, bk_app_secret: xxx, bk_username: xxx, bk_token: xxx, bk_biz_id: 123, host_info: [ { bk_cloud_id: 0, bk_host_innerip: 127.0.0.1, bk_cloud_vendor: 2, bk_cloud_inst_id: 45515, bk_host_name: host1, operator: admin, bk_comment: comment }, { bk_cloud_id: 0, bk_host_innerip: 127.0.0.2, bk_cloud_vendor: 2, bk_cloud_inst_id: 45656, bk_host_name: host2, operator: admin, bk_comment: comment } ] }四、返回结果与参数说明4.1 返回结果示例{ result: true, code: 0, message: , permission: null, request_id: e43da4ef221746868dc4c837d36f3807, data: { ids: [ 1, 2 ] } }4.2 response 字段说明字段类型描述resultbool请求成功与否。true请求成功false请求失败codeint错误编码。0 表示 success0 表示失败错误messagestring请求失败返回的错误信息dataobject请求返回的数据permissionobject权限信息request_idstring请求链 id4.3 data 字段说明字段类型描述idsarray创建成功的主机 ID 数组data.ids的顺序与请求参数host_info中的主机顺序一一对应对于本次新建的主机返回新生成的bk_host_id对于命中已有主机而执行更新逻辑的主机则返回其既有bk_host_id。该重排逻辑位于 cloud_host.go通过createIndexMap与updateParamMap将新建 ID 与更新 ID 按原始下标回填。五、源码级实现剖析一次调用背后发生了什么接口处理器为 cloud_host.go 中的AddCloudHostToBiz完整流程分为四步5.1 第一步参数预处理preprocessAddCloudHostParam对应源码 cloud_host.go调用input.Validate()做结构级校验业务ID合法、主机数组非空且不超过 200 条为每一台主机写入云主机标识字段bk_cloud_host_identifier true常量定义于 definitions.go其作用是标记该主机为不允许跨业务转移的云主机后续TransferHostAcrossBusiness等跨业务操作会据此拒绝汇总所有bk_cloud_id去重后查询bk_cc_base_plat表确认管控区域均真实存在否则报参数非法错误。5.2 第二步新增/更新分类classifyHosts对应源码 cloud_host.go以genExistHostParams构造查询条件按以下三组键判断主机是否已存在云厂商 云主机实例IDbk_cloud_vendorbk_cloud_inst_id唯一键格式vendor-instID管控区域 内网IPbk_cloud_idbk_host_innerip管控区域 内网 IPv6bk_cloud_idbk_host_innerip_v6。已存在的主机进入更新集合updateParamMap不存在的主机进入新建集合needCreateHosts。这正是该接口天然具备幂等性的原因重复导入同一批云主机不会产生重复数据而是转化为对既有主机的属性更新。5.3 第三步事务化执行AutoRunTxn对应源码 cloud_host.go通过CoreService().Txn().AutoRunTxn将两个写操作包裹在统一事务中updateCloudHost对更新集合中的主机逐台校验其确实属于目标业务调用GetDistinctHostIDByTopology再生成更新审计日志并执行UpdateInstanceaddCloudHostToBiz对新建集合中的主机执行创建与归属转移。这就是文档所述一批主机仅可同时成功或同时失败的实现根基——事务内任一环节失败整批写入回滚不会出现部分成功部分失败的数据状态。5.4 第四步新建主机 转移到空闲机模块addCloudHostToBiz对应源码 cloud_host.go内部依次执行定位空闲机模块按bk_biz_idbk_default 1DefaultResModuleFlag定义于 definitions.go查询该业务的空闲机模块 ID若结果不为 1 条则报参数错误批量创建主机实例调用CoreService().Instance().CreateManyInstance创建主机模型实例若返回结果中存在Repeated重复或Exceptions异常项则整体失败转移到空闲机模块构造TransferHostToInnerModule请求调用Host().TransferToInnerModule将新建主机挂入空闲机模块完成新增到业务空闲机的语义生成并保存审计日志调用auditlog.NewHostAudit生成AuditCreate类型的审计日志并落库保证每一步变更可追溯。5.5 客户端调用入口若在 bk-cmdb 内部以 Go 代码调用该接口可使用 apimachinery 客户端方法hostServer.AddCloudHostToBizapis.go其内部向/createmany/cloud_hosts发起POST请求并解析返回的CreateBatchResult。六、测试用例验证接口行为的边界保证官方集成测试 host_test.go 覆盖了该接口的主要行为是理解接口语义的最佳佐证测试场景预期结果说明正常导入两台云主机到空闲机返回 2 个 host ID可用SearchHostWithBiz按内网IP 查到对应主机新建路径再次导入同一台云主机同 vendorinstID不产生重复主机原主机属性如bk_host_name被更新更新路径 / 幂等性将云主机转移到资源池失败云主机不允许移入资源池跨业务转移云主机失败云主机不允许跨业务转移bk_cloud_host_identifier标识生效向不存在的业务导入失败业务校验部分主机缺少云厂商/实例ID整批失败必填字段校验 批次原子性同 vendorinstID 主机导入到另一业务失败云主机唯一性约束bk_cloud_inst_id字段建索引见 hostbase.go 的cloudInstID索引未传bk_biz_id或host_info失败参数结构校验七、使用注意事项小结必填字段bk_cloud_id、bk_host_innerip、bk_cloud_vendor、bk_cloud_inst_id四项缺一不可且内网IP与内网IPv6 至少填写其一批次上限单次host_info不超过 200 条超出会返回CCErrCommXXExceedLimit错误码 1199035见 errInfo.go幂等导入重复提交同一批云主机不会重复创建而是更新既有主机属性可放心用于定时同步场景专用接口该接口仅供云主机管理使用请勿将其用于普通物理机/虚拟机导入导入后主机带有bk_cloud_host_identifier标识无法移入资源池或跨业务转移版本与权限需要 v3.10.19 版本且调用方需具备对应业务的主机编辑权限。延伸阅读接口英文文档见 add_cloud_host_to_biz.md配套的删除云主机接口实现见 cloud_host.go 的DeleteCloudHostFromBiz云主机属性模型升级逻辑见 add_cloud_host_attr.go。赞分享后端企业应用运维【免费下载链接】bk-cmdb蓝鲸智云配置平台(BlueKing CMDB)项目地址https://gitcode.com/gh_mirrors/bk/bk-cmdb点击查看免费下载相关推荐蓝鲸 CMDB 新增云主机到业务空闲机模块接口实战add_cloud_host_to_biz蓝鲸 CMDB 新增云主机到业务空闲机模块接口实战add_cloud_host_to_biz 导读 本文围绕蓝鲸配置平台bk cmdb为云主机管理场景专后端企业应用运维蓝鲸配置平台bk-cmdb云主机管理专用接口新增云主机到业务空闲机模块蓝鲸配置平台bk cmdb云主机管理专用接口新增云主机到业务空闲机模块 导读 本文基于蓝鲸智云配置平台BlueKing CMDB仓库 bk cmdb后端企业应用运维蓝鲸 CMDBbk-cmdbadd_host_to_business_idle 接口实战批量添加主机到业务空闲机蓝鲸 CMDBbk cmdbadd_host_to_business_idle 接口实战批量添加主机到业务空闲机 本文是一篇围绕蓝鲸配置平台BlueKi后端企业应用运维创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

管理者必读的人才管理书籍推荐

管理者必读的人才管理书籍推荐

如果要推荐一本值得管理者学习的人才管理书籍的话,我的答案是《经理人参阅:人才管理》这本经典中的经典。企业为什么总觉得缺人才?很多时候,问题并不在于市场上没有合适的人。企业招到一个员工并不算太难,难的是这个人…

2026/10/13 10:27:01 阅读更多 →
【NLP基础算法实现 1.1】Strided Tensor 内存布局(Strided Tensor Memory Layout)

【NLP基础算法实现 1.1】Strided Tensor 内存布局(Strided Tensor Memory Layout)

【1.1】Strided Tensor 内存布局(Strided Tensor Memory Layout)本文位置:第 1 章 → 1.1 前置阅读:无(本专栏开篇)|代码仓库:code/ch01_math/0101_strided_tensor/ 读完本文&#x…

2026/10/13 10:27:01 阅读更多 →
小白程序员也能进阶大模型,高薪岗位等你来!

小白程序员也能进阶大模型,高薪岗位等你来!

本文讨论了AI行业的发展趋势,指出虽然核心算法岗竞争激烈,但AI大模型应用开发工程师因其高薪、市场需求大、门槛适中而成为热门选择。文章强调,随着各行各业对AI的投入增加,AI大模型应用开发的需求将持续增长,为普通人…

2026/10/13 10:25:58 阅读更多 →

最新新闻

本科生级Deepfake检测:双路可解释模型设计与端侧部署

本科生级Deepfake检测:双路可解释模型设计与端侧部署

1. 项目概述:为什么一个“假脸检测”毕业设计值得花半年时间深挖 最近在某高校实验室带几个本科生做毕设,翻看开题报告时,“deepfake假脸检测”这个标题出现了不下七次。不是因为学生跟风——恰恰相反,他们中多数人第一次听说deep…

2026/10/13 11:08:24 阅读更多 →
MySQL 数据类型选型全解析:从 INT 到 TIMESTAMP 的避坑实战

MySQL 数据类型选型全解析:从 INT 到 TIMESTAMP 的避坑实战

做后端开发的这几年,我见过太多人在建表时把注意力放在字段注释上,却对 MySQL 数据类型选型一笔带过。等线上出了性能问题、精度问题、主键溢出问题,再回头看那段 DDL,才意识到字段类型根本不是“随便选一个能存就行”的小事。这篇…

2026/10/13 11:08:24 阅读更多 →
BIO、NIO与零拷贝实战:从线上故障到性能优化

BIO、NIO与零拷贝实战:从线上故障到性能优化

1. 从一次线上故障说起:为什么我要重啃NIO与零拷贝 前段时间帮一个朋友排查他们服务的一个性能问题,现象很典型:一台8核16G的机器,跑一个文件分发服务,QPS一上到两千左右,CPU的sys占用率就飙到40%以上&…

2026/10/13 11:08:24 阅读更多 →
一条SQL在MySQL中的完整旅程:六大模块执行顺序与实战排障

一条SQL在MySQL中的完整旅程:六大模块执行顺序与实战排障

一条 SQL 从客户端发过去,到结果返回给客户端,中间到底经过了哪些模块、每个模块负责干什么、先后顺序能不能跳过?这是我面试应届生时必问的一道题,也是我自己排查线上慢 SQL 时脑子里最先过的一张图。很多人对“MySQL执行每个模块…

2026/10/13 11:08:24 阅读更多 →
分布式文件系统设计指南:从需求边界到故障注入的取舍之道

分布式文件系统设计指南:从需求边界到故障注入的取舍之道

“你给我讲讲分布式文件系统到底怎么设计”——这是我被问过最多的问题之一,不管是刚入行的研发还是带过团队的朋友,一聊到这个话题就容易陷入两个极端:要么一上来就背组件,要么直接扯到“我们要搞一套超越一切的分布式存储”。实…

2026/10/13 11:08:24 阅读更多 →
C# ADO.NET实战:从连接字符串到DataGridView增删改查

C# ADO.NET实战:从连接字符串到DataGridView增删改查

1. 这不是“学完就能写数据库”的速成课,而是帮你把ADO.NET真正焊进肌肉记忆的实操笔记你点开这个标题,大概率正卡在这样一个节点:刚学完C#基础语法,对着窗体拖了几个按钮和DataGridView,一想到“怎么把数据库里的数据…

2026/10/13 11:07:22 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →