You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

借助Jenkins Pipeline与HTTP-request-Builder插件对接Bluecat IPAM的技术咨询

嘿,你已经搞定了Bluecat IPAM授权令牌的获取,这可是最关键的第一步!接下来的IP查询和新增操作其实就是把这个令牌正确带入API请求里就行,我给你整理了具体的Groovy Pipeline实现方案:


1. 核心要点:令牌的正确传递

Bluecat的API一般采用Bearer令牌认证,所以所有后续API请求都需要在请求头里带上:

Authorization: Bearer ${your_auth_token}

确保你获取到的令牌变量(比如authToken)是有效的,并且在过期前完成操作(如果令牌有有效期的话,建议每次执行API操作前重新获取,避免过期问题)。

2. IP地址查询(GET请求)

假设你要查询某个IP的详情,或者某个子网下的所有IP,用Jenkins Pipeline常用的httpRequest插件实现的示例代码如下:

// 假设你已经通过之前的逻辑获取到了authToken
def bluecatBaseUrl = credentials('bluecat-ipam-base-url') // 从Jenkins凭据库读取IPAM基础URL
def targetIp = "192.168.1.100" // 要查询的目标IP,也可以作为流水线参数传入

// 发起GET请求查询IP详情
def getResponse = httpRequest(
    url: "${bluecatBaseUrl}/api/v1/ipam/addresses/${targetIp}",
    httpMode: 'GET',
    customHeaders: [
        [name: 'Authorization', value: "Bearer ${authToken}"],
        [name: 'Accept', value: 'application/json']
    ],
    validResponseCodes: '200',
    consoleLogResponseBody: true // 开启日志方便调试
)

// 解析返回的JSON结果
def ipDetails = new groovy.json.JsonSlurper().parseText(getResponse.content)
echo "查询到的IP状态:${ipDetails.status}"
echo "IP所属子网:${ipDetails.subnetName}"
3. IP地址新增(PUT请求)

如果要把一个新IP分配到指定子网,需要构造JSON请求体并用PUT提交(具体API端点和字段请参考Bluecat官方文档,以下是通用示例):

def bluecatBaseUrl = credentials('bluecat-ipam-base-url')
def subnetId = "12345" // 目标子网的ID,可通过前期API查询获取
def newIp = "192.168.1.101"
def ipDesc = "Jenkins自动分配的测试IP"

// 构造符合API要求的请求体
def requestBody = [
    ipAddress: newIp,
    subnetId: subnetId,
    status: "ALLOCATED",
    description: ipDesc,
    // 其他必填字段(比如关联的设备ID)根据Bluecat API要求补充
]

// 发起PUT请求新增IP
try {
    def putResponse = httpRequest(
        url: "${bluecatBaseUrl}/api/v1/ipam/addresses",
        httpMode: 'PUT',
        customHeaders: [
            [name: 'Authorization', value: "Bearer ${authToken}"],
            [name: 'Content-Type', value: 'application/json']
        ],
        requestBody: new groovy.json.JsonBuilder(requestBody).toPrettyString(),
        validResponseCodes: '201' // 新增成功通常返回201状态码
    )
    echo "IP新增成功,返回信息:${putResponse.content}"
} catch (Exception e) {
    echo "IP新增失败:${e.getMessage()}"
    currentBuild.result = 'FAILURE'
    throw e
}
额外注意事项
  • 令牌过期处理:如果令牌有有效期,建议在每次API操作前重新获取令牌,或者添加令牌有效性校验逻辑,避免因令牌过期导致请求失败。
  • 权限控制:确保Jenkins使用的Bluecat账号有对应IP查询、新增的权限,否则会返回403错误。
  • 凭据安全:所有敏感信息(IPAM地址、账号密码)都要存在Jenkins凭据库中,绝对不要硬编码在脚本里。

内容的提问来源于stack exchange,提问作者ZakG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:58:34