从 Nexus 迁移到 JFrog Artifactory

Sonatype Nexus Repository Manager 迁移到 JFrog Artifactory

1.   Nexus

1.1下载

下载链接:

Download Archives - Repository Manager 3

点击图中链接下载

从 Nexus 迁移到 JFrog Artifactory_第1张图片

 

1.2安装

将压缩包上传到服务器,绿色安装,所以直接解压即可

#解压

tar -xvzf /root/nexus-3.29.2-02-unix.tar.gz

1.3启动

方式一:前台启动

cd /root/nexus-3.29.2-02/bin

./nexus run

#启动成功如下图,第一次加载时间稍长

从 Nexus 迁移到 JFrog Artifactory_第2张图片

 

退出按住ctrl+c即可

方式二:后台启动

cd /root/nexus-3.29.2-02/bin

#启动,第一次加载时间稍长

./nexus start

#停止

./nexus stop

#查看状态

./nexus status

 

数据目录:sonatype-work/neuxs3

1.4登录访问界面

访问nexusUI界面

登录http://IP:8081

从 Nexus 迁移到 JFrog Artifactory_第3张图片

 

根据提示找到初始密码:

cd /root/sonatype-work/nexus3

cat admin.password

从 Nexus 迁移到 JFrog Artifactory_第4张图片

 

修改密码

从 Nexus 迁移到 JFrog Artifactory_第5张图片

 

启动匿名访问

从 Nexus 迁移到 JFrog Artifactory_第6张图片

 

完成

从 Nexus 迁移到 JFrog Artifactory_第7张图片

 

1.5创建仓库

从 Nexus 迁移到 JFrog Artifactory_第8张图片

 

新建仓库,输入仓库名,采用默认配置,创建

从 Nexus 迁移到 JFrog Artifactory_第9张图片

 

1.6上传制品

从 Nexus 迁移到 JFrog Artifactory_第10张图片

 

2.   Docker

在安装nexus的服务器上安装docker

2.1设置存储库

安装yum-utils包(提供yum-config-manager实用程序)并设置存储库。

sudo yum install -y yum-utils

sudo yum-config-manager \

    --add-repo \

    https://download.docker.com/linux/centos/docker-ce.repo

2.2安装Docker 引擎

sudo yum install docker-ce docker-ce-cli  containerd.io docker-compose-plugin

 

此命令安装 Docker,但不会启动 Docker。它还会创建一个docker组,但是默认情况下不会向该组添加任何用户。

2.3启动

#启动

sudo systemctl start docker

#验证 Docker 引擎是否已正确安装hello-world 

sudo docker run hello-world

此命令下载测试图像并在容器中运行它。当容器运行时,它会打印一条消息并退出。

从 Nexus 迁移到 JFrog Artifactory_第11张图片

 

3.   一步迁移

3.1启用脚本执行

#Nexus Repository Manager 启用脚本执行

vim /root/sonatype-work/neuxs3/etc/nexus.properties

#添加如下

nexus.scripts.allowCreation=true 

#重启nexus

cd /root/nexus-3.29.2-02/bin/

./nexus restart

从 Nexus 迁移到 JFrog Artifactory_第12张图片

 

3.2下载

下载迁移脚本

https://releases.jfrog.io/artifactory/run/nexus-migrator/0.8.11/jfrog-nexus-migrator-0.8.11.sh?_gl=1*1kqtq1d*_ga*MTA1NzI4NjM2NC4xNjYyNjA0MDkw*_ga_SQ1NR9VTFJ*MTY3MDkxNjQ2NC4xNjguMS4xNjcwOTE2NDcxLjUzLjAuMA..

上传到nexus服务器

#给脚本权限

chmod 777 jfrog-nexus-migrator-0.8.11.sh

3.3开始迁移

一步迁移所有实体

./jfrog-nexus-migrator-0.8.11.sh all

1.添加以下 Artifactory 配置信息。

·JFrog 平台服务器名称:JFrog 平台服务器的标识符。

·JFrog 平台 URL:用于访问包含 Artifactory 实例的 JFrog 平台的 URL

·JFrog 访问令牌:用于访问 JFrog 平台的 API 令牌。您可以将该字段留空并在后续步骤中提供用户名和密码。

·JFrog 用户名:具有管理员权限的用户的用户名。

·JFrog 密码或 API 密钥:API 密钥或密码。

2. Nexus 服务器输入以下配置信息。

·Nexus 工作目录

·Nexus 存储库管理器 URL

·Nexus Repository Manager 用户名

·Nexus 存储库管理器密码

·Artifactory 用户的默认密码

从 Nexus 迁移到 JFrog Artifactory_第13张图片

 

该脚本从 Nexus 中获取配置信息,在 Artifactory 中创建相应的存储库,将制品迁移到 Artifactory,并将安全配置迁移到 Artifactory

3.4 检查迁移状态

您可以在工作目录中的migration.log文件中检查迁移到Artifactory的制品和配置的详细信息。该脚本基于文件夹/migration/nexus-migrator内的Nexus创建YAML文件和JSON文件。

检查migration.log文件以验证迁移状态。日志文件详细说明存储库、制品和安全实体的迁移状态。

#检查迁移状态

cat migration.log

从 Nexus 迁移到 JFrog Artifactory_第14张图片

 

检查JFrogUI界面

从 Nexus 迁移到 JFrog Artifactory_第15张图片

 

迁移成功!

 

注意:

当存在与 Artifactory 中同名的现有存储库时,如果存储库的类型与 Nexus Repository 不同,则迁移将失败。

如果在同名存储库中存在同名制品,则来自 Nexus 的制品将覆盖现有制品。为避免这些问题,请验证存储库具有不同的名称,并且在Artifactory 的当前存储库中没有同名的制品。

此外,在开始迁移之前,请确认Artifactory 中不存在具有相同名称的现有用户。迁移脚本用 Nexus Repository Manager 中的用户覆盖现有用户。

Artifactory 不支持名称以字母以外的任何字符开头的存储库。因此,迁移脚本将这些存储库重命名为m-例如,如果Nexus Repository Manager 中的仓库名称是101-Maven,则该仓库在Artifactory 中被重命名为m-101-Maven。如果要配置此名称,则必须分多个阶段运行迁移脚本并编辑迁移配置。

4.分步迁移

4.1分步迁移命令

如果您想单独经历不同的阶段,请按以下顺序使用选项运行脚本。

./jfrog-nexus-migrator-0.8.11.sh  config

./jfrog-nexus-migrator-0.8.11.sh  getConfig

./jfrog-nexus-migrator-0.8.11.sh  createRepo

./jfrog-nexus-migrator-0.8.11.sh  migrateArtifact

./jfrog-nexus-migrator-0.8.11.sh  migrateSecurity

下表提供了有关迁移器脚本可用选项的信息。

选项

描述

all

一步运行迁移脚本。

config,  c

配置有关 Artifactory 和 Nexus Repository 的信息。

getConfig,  gc

从 Nexus 存储库获取配置信息。

createRepo,  cr

在 Artifactory 中创建目标存储库。

migrateArtifact,  ma

将制品从 Nexus 存储库迁移到 Artifactory。

--repos除了指定要迁移的存储库之外, 您还可以使用可选命令。

例如,命令, 迁移 docker-local 和 maven-release 存储库并忽略其余存储库。./jfrog-nexus-migrator-.sh  ma --repos="docker-local,maven-release"

您还可以使用通配符输入来迁移满足条件的所有存储库。 

比如 /jfrog-nexus-migrator-.sh ma  --repos="docker*,maven*"command,迁移所有以docker或者maven开头的仓库。

migrateSecurity,  ms

将用户、组和权限目标从 Nexus 存储库迁移到 Artifactory。

您可以依次使用getConfigcreateRepomigrateArtifactmigrateSecurity 运行迁移脚本,以将新对象从当前配置的 Nexus Repository Manager加载到Artifactory 。

如果您在 Nexus 3 安装上暂停迁移过程并在稍后恢复,则迁移脚本只会迁移在您暂停该过程后添加的那些存储库和安全实体。如果在 Nexus 2 安装上进行迁移,迁移脚本会迁移 Nexus 存储库中的所有存储库和安全实体,无论它们是否在您暂停迁移过程之前已迁移。

迁移脚本基于文件夹内的 Nexus Repository Manager 创建 YAML 文件和 JSON 文件,/migration/nexus-migrator.

迁移脚本创建以下配置文件:

·migrationConfig.yaml

·repositories.list

·repositories.yaml

·security.json

·securityLdapConf.yaml

·securityRegexMap.list

4.2编辑迁移配置[可选]

./jfrog-nexus-migrator-0.8.11.sh config

使用该config选项运行迁移脚本后,迁移脚本会在migration/nexus-migrator文件夹内创建文件migrationConfig.yaml

编辑

cd migration/nexus-migrator

vim migrationConfig.yaml

从 Nexus 迁移到 JFrog Artifactory_第16张图片

 

更新 YAML 文件中threadsunder的值migrator以设置迁移脚本要使用的线程数。默认情况下,线程数设置为机器内核数的一半。如果您发现 Nexus Repository Manager 机器性能低下,您可以减少这个数字并再次运行迁移脚本。

更新 YAML 文件中targetunder的值,repoRegex以将名称设置为以非字母开头的存储库为前缀。不要编辑方括号中的值(例如[REPO]),因为它们是 Nexus 中使用的关键字。您还可以添加新的源和目标,以便在 Artifactory 中为存储库使用不同的名称。例如,如果存储库以名称“dfault”开头,而您想将其更改为“默认”,则可以通过添加具有所需值的新源和目标来实现。如果要替换存储库名称、用户、组、LDAP 设置名称、LDAP 组设置名称或权限中的子字符串,您可以提供正则表达式来匹配源中的子字符串,并在目标。默认情况下,条目添加到 migrationConfig.yaml 文件中以用连字符 (-) 替换空格字符。

更新YAML 文件中loggingunder的值以设置日志记录级别。migrator默认情况下,级别设置为 INFO。您可以将值更改为 DEBUG 以获取更多日志消息来帮助您调试问题。

convertExternalUsersGroupsToInternal如果要将所有用户和组从外部源(例如 LDAP)转换为 artifactory 中的内部用户和组,请将的值设置 为 true。

4.3编辑存储库名称[可选]

./jfrog-nexus-migrator-0.8.11.sh  getConfig

使用getconfig选项运行迁移脚本后,迁移脚本会在/migration/nexus-migrator.文件夹内创建文件repositories.list

该repositories.list文件包含 Nexus 中的存储库列表以及要在 Artifactory 中创建的存储库的相应名称。您可以将 Artifactory 中存储库的值编辑为 Artifactory 支持的任何有效值。

从 Nexus 迁移到 JFrog Artifactory_第17张图片

 

您可以将目标字段的值编辑为 Artifactory 中所需的存储库名称。

4.4编辑安全实体[可选]

./jfrog-nexus-migrator-0.8.11.sh  getConfig

使用getconfig选项运行迁移脚本后,迁移脚本会在/migration/nexus-migrator文件夹内创建文件securityRegexMap.list

该securityRegexMap.list文件包含 Nexus 中的安全实体列表以及要在 Artifactory 中创建的实体的相应名称。您可以将实体的值编辑为Artifactory 支持的任何有效值。

从 Nexus 迁移到 JFrog Artifactory_第18张图片 

以下示例显示了一个样本 securityRegexMap.list 文件。

users:

    8TestUserName: m-8TestUserName

groups:

    8test: m-8test

permissions:

    8privtest: m-8privtest

您可以根据目标字段将值编辑为 Artifactory 中所需的实体名称。

4.5避免存储库迁移[可选]

./jfrog-nexus-migrator-0.8.11.sh  getConfig

使用该getconfig选项运行迁移脚本后,迁移脚本会在/migration/nexus-migrator文件夹内创建文件repositories.yaml

该repositories.yaml文件包含要迁移到 Artifactory 的存储库的详细信息。您可以从此列表中删除不想迁移的存储库。

从 Nexus 迁移到 JFrog Artifactory_第19张图片

 从 Nexus 迁移到 JFrog Artifactory_第20张图片

 

 

您可以从 repositories.yaml 文件中删除仓库名称和对应的仓库块,以避免将仓库迁移到 Artifactory。

4.6避免安全实体迁移 [可选]

./jfrog-nexus-migrator-0.8.11.sh  getConfig

使用getconfig选项运行迁移脚本后,迁移脚本会在/migration/nexus-migrator文件夹内创建文件security.json

该security.json文件包含要迁移到 Artifactory 的安全实体的详细信息。您可以从此列表中删除不想迁移的实体。

您可以从security.json文件中删除实体名称和对应的块,以避免将实体迁移到Artifactory。

如果您删除任何实体,请记住同时删除其引用和与其相关的任何其他部分。例如,如果您删除一个组部分,您将需要从引用它的任何权限中删除该组名称。

JSON 文件中的password字段是 base64 编码的。如果您想更改密码,请在password字段中输入密码的 base64 编码值。

以下示例显示了一个示例 security.json 文件。

{

    "users": [

        {

            "name": "deployment",

            "email": "[email protected]",

            "password": "UGFzc3dvcmRAMTIz",

            "realm": "internal",

            "groups": [

                "readers"

            ]

        },

        {

            "name": "testadmin",

            "email": "[email protected]",

            "password": "UGFzc3dvcmRAMTIz",

            "admin": true,

            "realm": "internal",

            "groups": [

                "readers"

            ]

        },

        {

            "name": "normaluser",

            "email": "[email protected]",

            "password": "UGFzc3dvcmRAMTIz",

            "realm": "internal",

            "groups": [

                "TestPrivRole",

                "readers"

            ]

        }

    ],

    "groups": [

        {

            "name": "TestPrivRole",

            "description": "TestPrivRole"

        },

        {

            "name": "m-8test",

            "description": "test"

        }

    ],

    "permissions": [

        {

            "name": "m-8privtest",

            "includesPattern": "**",

            "principals": {

                "groups": {

                    "m-8test": [

                        "r",

                        "w",

                        "d",

                        "n",

                        "m"

                    ]

                }

            },

            "repositories": [

                "test1"

            ]

        },

        {

            "name": "testcustom",

            "includesPattern": "**",

            "principals": {},

            "repositories": [

                "ANY"

            ]

        }

    ]

}

4.7存储库迁移状态

迁移是按顺序为每个存储库完成的。迁移脚本创建一个文件,migration/nexus-migrator /repositories.yaml用于维护每个存储库的迁移状态。该文件包含由迁移脚本处理的存储库的状态。存储库可以处于in_progress状态或completed状态。该in_progress状态表示迁移已开始,但尚未完成。该completed状态表示制品迁移成功。如果迁移尚未开始,则存储库的状态字段不存在。

从 Nexus 迁移到 JFrog Artifactory_第21张图片

从 Nexus 迁移到 JFrog Artifactory_第22张图片 

 

你可能感兴趣的:(linux,运维,服务器,devops,docker)