如何通过推送复制迁移工件
如何通过推送复制自动化工件迁移
相关版本:Artifactory 6。Xand Artifactory 7.X
简介
本指南是对以最小的停机时间迁移Artifactory篇文章。
这里的挑战是如何设置(可能)数千个Push Replication设置,本文对此进行了讨论。这可以通过一些聪明的脚本和Artifactory REST API来完成。您还需要下载最新的JFrog CLI利用其复制配置系统。
本指南的限制
由于本指南设置了Push复制,复制将只进行的一种方法.双向推送复制会导致严重的问题,比如源Artifactory数据的意外删除。因此,本指南将只设置单向复制,Active / Active同步集群可以通过高可用性或其他措施实现。
本指南已在Artifactory 6上进行了测试。X和7.X。自Artifactory 5.X以来,涉及的机制没有显著变化。
在新Artifactory上创建存储库和设置
可以使用空系统导出将Artifactory配置从旧Artifactory导入到新Artifactory,即使是在规模上。在大规模的情况下(超过100万个工件),默认的完整系统导出需要很长时间才能完成。对于我们的目的,我们只需要在另一端创建存储库。
您可以通过勾选“exclude”复选框来排除除配置和用户之外的所有内容。这将保存Old Artifactory的配置和权限的几乎为空的备份;应该很快就能完成。
注意:由于一个开放的错误RTFACT-25899,您必须在Artifactory 7中导出之前解密密码。Xcurl -u admin http://localhost:8081/artifactory/api/system/decrypt -XPOST[预期输出]完成 |
注意:如果以后出现任何错误,您应该重新加载这个导出的配置以撤消复制设置
接下来,将导出复制到New Artifactory中。使用Import System菜单导入它,自动创建所有目标存储库:
如果在导入中选中了两个复选框,不会删除任何内容.通过这种方式,以后可以再次执行导入,以更新存储库列表和权限。如果复制设置不正确,也可以通过这种方法进行恢复。
复制设置步骤1:获取存储库名称
手动设置推送复制需要做很多工作。对于许多Artifactory用户来说,浏览数百甚至数千个复制配置是不可能的。但是,使用添加到JFrog CLI中的新工具,可以完全自动化这个任务。
建议你创建一个项目文件夹来保存我们要创建的模板文件:
mkdir复制设置;cd复制设置
首先,获取存储库列表来自旧的(来源)Artifactory。下面的命令只保存存储库密钥,即存储库的名称。我们只需要这些钥匙就能建立复制。该命令将保存一个“存储库”。List”文件,我们将在下一步使用:
# curl命令下载列表,grep抽出我们需要的“键”# curl -s -u admin”http://jfrog.7x.gcp/artifactory/api/repositories?Type =local" | grep "key" > repositories.list |
[预期输出语法]
使用“存储库”。List "文件,我们实际上已经获得了在任何地方建立复制所需的所有信息。下一步是为CLI创建正确的模板文件。
复制设置步骤2:创建复制设置
JFrog CLI提供一个“复制-创建”动作,需要复制模板文件。在BASH中,您可以使用存储库创建这些模板文件。列表文件和一些巧妙的处理技巧。
)首先,配置JFrog命令行同时使用“源”和“目标”Artifactories:
jfrog config add source #定义灾备源Artifactory jfrog config add target #定义灾备目标 |
B]生成复制模板配置文件。下面的循环将读取“存储库”的每一行。并根据该键创建一个模板文件:
# JFrog CLI使用名称“目标”,并在配置复制时填写正确的URL。list | while read line do #变量设置#获取存储库密钥,从JSON中删除“key”:REPO=$(echo $line | cut -d ':' -f 2) REPO_FILENAME=$(echo ${REPO%??} | cut -c 2-) #获取一个好看的文件名#插入静态默认参数echo '{"enabled": "true","cronExp":"0 0 12 * * ?",' > $REPO_FILENAME-template. txt '“repoKey”:“$REPO >> $REPO_FILENAME-template. json”插入其余参数,注意我们复制到相同的存储库名称echo '"serverId": "target", "targetRepoKey": " $REPO " "enableEventReplication":"true"}' >> $REPO_FILENAME-template。json做 |
[期望JSON文件内容]
循环结束后,请检查结果文件.它们应该都类似于上面的示例图像。在我们将模板大规模部署到Source之前,仔细检查模板是很重要的,以防止错误配置的设置被部署到Old Artifactory中。
C .“运行”。replication-createCLI命令在每个JSON文件上,这个脚本会为你做这个:
Jfrog配置使用源ls |同时读取line做echo " Jfrog rt复制-创建$line" Jfrog rt复制-创建$line done |
这将把每个模板推送到源Artifactory,最后所有Artifactory的本地存储库将被配置为推送到目标:
复制设置步骤3:坐下来放松
信不信由你,就是这样!如果成功地完成了前面的步骤,那么随着时间的推移,Production Artifactory将把它的所有数据推到目标,两者将拥有相同的信息。您可以通过单击UI中的“Run Now”按钮开始迁移。
Enterprise Plus客户可以通过在两个实例之间设置Access Federation来主动同步安全信息。
故障排除问题
如果上述步骤中使用的复制信息不正确,那么Source Artifactory将以大量糟糕的复制设置结束。恢复应用程序的最快方法是从配置描述符中删除复制设置。
建议使用REST API重新部署“artifactory.config.xml”你已经保存在系统导出在此过程开始时捕获。
例如,要使用的文件位于导出文件夹中20211215.195625 / artifactory.config.xml。
curl -u admin -X POST -H "Content-type:application/xml"——data-binary @artifactory.config.xml http://localhost:8081/artifactory/api/system/configuration |
