如何使用REST api将许可证从许可证桶附加到Artifactory ?

约书亚汉
2022-03-15 15:13

总结

你可以用这个解决方案

  • Artifactory许可证发放的自动化
  • 当Artifactory不能添加到任务控制时,发放许可证

影响版本

Artifactory 6。X & 7。x, Mission Control 3.x & 4.x

细节

JFrog任务控制中心提供了许多功能来有效地管理多个JFrog平台部署(JPD) - Artifactory, Edge, Distribution和Xray的组合。因此,由任务控制中心管理这些jpd是最好的做法。虽然大多数JPD服务都需要连接到任务控制,但如果您有任何网络或安全限制,您可以选择在不连接到任务控制的情况下设置Artifactory (Edge和Enterprise+)。该解决方案描述了如何使用REST api附加许可证,这对于自动化该过程非常有用。

该解决方案还可以用于使用每个REST API的许可证发放流的通用自动化。

决议

[当Artifactory/Edge可以连接到任务控制]

1.添加新的许可证桶到一个任务控制通过REST api通过用户界面

2.添加一个Artifactory边缘任务控制

这些步骤可以通过网站而且服务REST api。也可以通过用户界面

3.获取并加载license
使用任务控制REST API: Attach License添加license从许可证桶到Artifactory。

4.验证License信息
使用Artifactory REST API:许可信息REST

[当Artifactory/Edge无法连接到任务控制]

请记住,将Artifactory/Edge添加到任务控制是最佳实践,这样您就可以轻松跟踪和管理使用情况和许可证。在多个实例中使用同一个许可证违反了许可协议

1.添加license桶到一个任务控制通过REST api通过用户界面
2.获得许可证

<与任务控制4.x>
使用任务控制REST API:获取许可证输出许可证从许可证桶。

<与任务控制3.x>
使用任务控制REST API: Attach License“部署”:假的输出license从许可证桶。更新Artifactory许可证所需的JSON文件使用licenseKey(注意K是大写的)作为密钥,这与Mission Control REST API提供的作为密钥(license_key)不同。因此,您可以使用sed下面的命令来修复这个问题。

例如,(注意“/ mc /”如果你使用分离版本的任务控制而不是新的-与Artifactory结合)

curl -X POST -uadmin:密码http://my.jfrog.platform.url/mc/api/v3/attach_lic/buckets/999748414 -H 'Content-Type: application/json' -H 'cache-control: no-cache' -d '{
"service_name": "EdgeKansasCity",
deploy: false
}' >许可证。&& sed -i -e 's/license_key/licenseKey/g' license.json

3.为Artifactory/Edge添加license
使用license。将许可证提供给Artifactory节点。例如,

curl -XPOST https://my.jfrog.platform.url/artifactory/api/system/licenses -d@license.json -H "Content-Type: application/json" -uadmin:密码

下面是可用于管理Artifactory许可证的REST api列表:

4.对于脱机许可证安装,请手动跟踪站点和许可证
确保提供一个唯一的名称作为service_name以提供帮助手动跟踪以下内容因为Artifactory没有连接到任务控制中心:

  • 与附加许可证REST API一起使用的service_name。
  • 因为每个主节点只使用一次license文件,所以需要手动将license部署到Artifactory/Edge。在多个Artifactory中使用同一许可证违反了许可证使用协议。

[分离许可证]
当将一个license释放到license Bucket中时,您将需要service_name用于使用Detach license REST API将该license解压缩回license Bucket中。

<与任务控制4.x>
使用发布许可证REST API

<与任务控制3.x>
使用分离许可证REST API如下所示DELETE /api/v3/detach_lic/bucket/{bucket NAME

"service_name": "{ServiceName}"
例如,(注意“/ mc /”如果你使用分离版本的任务控制而不是新的-与Artifactory结合)curl -X DELETE -uadmin:密码\
https://my.jfrog.platform.url/mc/api/v3/detach_lic/buckets/edge \
-H 'Content-Type: application/json' \
- d”{
"service_name": "my-edge-in-kansas"
}'