如何使用REST api将许可证从许可证桶附加到Artifactory ?
总结
你可以用这个解决方案
- 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例如,(注意“/ mc /”如果你使用分离版本的任务控制而不是新的-与Artifactory结合)
{
"service_name": "{ServiceName}"
}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"
}'
