版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Nexus3OSS是一个开源
工件存储库管理器,可以处理多种格式,例如容器映像、PythonPIP、Javajar等。为什么要有本地工件管理器?其原因有很多:使用您的私有基础设施:您可能拥有需要保护的专有代码。更快的工件下载速度:如果您不断通过Internet下载相同的工件,您可以将它们缓存在一个中央位置,通过缓存它们来为跨多个服务器的多个用户带来好处。控制哪些工件进入您的构建链:集中工件的位置,确保它们被批准使用,并确认它们不包含恶意代码。隔离谁可以访问您的工件:您可能对谁可以访问您自己组织内的某些工件有更严格的要求。在本文中,我将向您展示如何使用Ansibleplaybook下载、安装和配置Nexus3的OSS版本。Nexus3将在具有8GB或RAM的OrangePI5计算机上运行,但这种配置可以在具有最低要求的任何计算机上完成。设置的一部分将包括为我的清单文件中列出的计算机设置PyPI.org的代理。运行本教程中的代码需要什么用于下载Ansibleplaybook、Nexus和PIP模块源代码的Internet连接两台或更多Linux机器(我使用Debian、Armbian和FedoraIOT),至少有8GBRAM。我的集群混合了RaspberryPI4和OrangePI5。Ansible控制器将在Fedora机器上运行,但任何服务器都可以作为控制器。Ansible的安装说明很容易遵循。剧本组织我将任务分组,最终的剧本如下所示:[josevnz@dmaf5Nexus3OnOrangePI]$tree-Nansible/ansible/├──inventories│└──home│└──hosts.yaml├──roles│├──clients││├──tasks│││└──main.yaml││└──templates││└──pip.conf.j2│└──nexus│├──files││└──swagger.json│├──tasks││├──download.yaml││├──install.yaml││├──main.yaml││├──post_install.yaml││├──pre_install.yaml││├──repositories.yaml││├──third_party.yaml││└──user.yaml│└──templates│├──logrotate.nexus3.j2│├──nexus3.service.j2│├──nexus.rc.j2│└──nexus.vmoptions.j2├──site.yaml├──vars│├──clients.yaml│└──nexus.yaml└──vault├──nexus_password.enc└──README.md13directories,21files现在稍微解释一下:有两个角色:“关系”和“客户”。Nexus角色用于设置工件管理软件,而客户端角色则在每台计算机上设置pip设置。Vars包含每个角色使用的变量,通过文件分隔以使其用法更加清晰我们有密码,并使用Ansible保管库功能来管理它们。文件“
site.yaml
”协调角色执行:-hosts:alltags:clientsvars_files:-vars/clients.yamlroles:-clients-hosts:nexus_servertags:nexusbecome_user:rootbecome:truevars_files:-vars/nexus.yamlroles:-nexus现在让我们继续看看将执行剧本的宇宙。主机清单就我而言,这非常简单–我有两个主要组:“客户端”和Nexus3服务器本身将运行的计算机:all:children:nexus_server:hosts:orangepi5.home:home_lab:hosts:dmaf5.home:raspberrypi.home:orangepi5.home:下一个重要任务是下载并配置Nexus3。如何安装Nexus3文件main.yaml描述了Nexus角色的每个安装任务的顺序和目的:#TaskslistedherearerelatedtotheremoteNexus3server#Includedtasksarecalledinorder----include_tasks:third_party.yaml-include_tasks:pre_install.yaml-include_tasks:download.yaml-include_tasks:install.yaml-include_tasks:post_install.yaml-include_tasks:user.yaml-include_tasks:repositories.yaml让我们首先看看我所说的“核心任务”:Third_party.yaml:在这里我们安装OpenJDK8(Nexus3用Java编写)和logrotate来处理过时的日志。pre_install.yaml:这里发生了很多事情,比如为Nexus创建所需的目录,将运行该进程的专用非特权用户。download.yaml:顾名思义,我们获得了Nexus3OSS软件的新版本,并确保它具有正确的校验和。我们不想从互联网安装恶意软件。然后是属于“定制安装组”的任务:install.yaml:解压软件,准备systemd单元以自动启动它,为Nexus设置JVM设置,并部署logrotate配置。post_install.yaml:这里发生了令人兴奋的事情-软件已安装,我们第一次运行它。我们还使用RESTAPI更改默认密码,以便我们可以进入自定义阶段。user.yaml:在这里,我们准备为最终用户提供对Nexus提供的服务的正确访问权限。我们结合使用REST-API和Ansible客户端代码来完成此操作:#/repomanager3/installation-and-upgrades/post-install-checklist#/repomanager3/integrations/rest-and-integration-api----name:Enableanonymoususertags:anonymousansible.builtin.uri:user:""password:""url:"/v1/security/anonymous"method:PUTbody_format:rawstatus_code:[200,202,204]headers:Content-Type:application/jsonbody:|-{"enabled":true,"userId":"anonymous","realmName":"NexusAuthorizingRealm"}force_basic_auth:truereturn_content:trueany_errors_fatal:true-name:EnableDockersecurityrealmtags:docker_realmansible.builtin.uri:user:""password:""url:"/v1/security/realms/active"method:PUTbody_format:rawstatus_code:[200,202,204]headers:Content-Type:application/jsonbody:|-["NexusAuthenticatingRealm","NexusAuthorizingRealm","DockerToken"]force_basic_auth:truereturn_content:trueany_errors_fatal:true逻辑很容易理解,通过使用“PUT”http方法,您可以看出这是一个修改操作(意味着现有的角色和用户已经存在)。错误检测是通过获取Nexus返回的HTTP代码来完成的。下一步是准备我们的本地PyPi代理。这是一个多步骤任务,接下来将详细描述。如何在Nexus3上设置PyPI代理Nexus3角色的最后一个文件是“
repositories.yaml
”。在这里,我们执行以下步骤:检查代理是否已设置(GET或只读操作)如果不存在,请创建一个新的(带有JSON有效负载的POST方法,其中包含创建全新存储库的详细信息)请注意,此剧本不提供更新存储库设置的选项。可以使用RESTAPI来完成,但我将把它作为练习留给读者。准备PyPi代理的任务如下所示:#Createproxyforrepositories#/repomanager3/integrations/rest-and-integration-api#PyPi:https://pip.pypa.io/en/stable/user_guide/----name:CheckifthePyPiproxyexiststags:pypi_proxy_existsansible.builtin.uri:user:""password:""url:"/v1/repositories/pypi/proxy/python_proxy"method:GETbody_format:rawstatus_code:[200,202,204,404]headers:Content-Type:application/jsonforce_basic_auth:truereturn_content:trueany_errors_fatal:trueregister:python_local-name:CreatePyPIproxytags:pypi_proxy_createansible.builtin.uri:user:""password:""url:"/v1/repositories/pypi/proxy"method:POSTbody_format:rawstatus_code:[201]headers:Content-Type:application/jsonbody:|-{"name":"python_proxy","online":true,"storage":{"blobStoreName":"default","strictContentTypeValidation":true},"proxy":{"remoteUrl":"/","contentMaxAge":-1,"metadataMaxAge":1440},"negativeCache":{"enabled":true,"timeToLive":1440},"httpClient":{"blocked":false,"autoBlock":true,"connection":{"retries":0,"timeout":60,"enableCircularRedirects":false,"enableCookies":true,"useTrustStore":false}}}force_basic_auth:truereturn_content:trueany_errors_fatal:truewhen:python_local.status==404我们就快到了。现在我们需要告诉PyPi客户我们应该使用本地Nexus而不是直接PyPi站点来获取Python库。如何设置客户端客户端角色要简单得多,只需要为pip.conf部署一个模板,其中包含足够的信息来强制在我们的新存储库上进行搜索:#Tasksherearemeanttobeusedonourclientsuser----name:Createinstallationdirectoryforpip.conftags:pip_basediransible.builtin.file:state:directorypath:""owner:""group:""mode:"u+rwx,go-rwx"-name:Copypip.conffiletags:pip_copyansible.builtin.template:src:pip.conf.j2dest:"/pip.conf"owner:""group:""mode:u=rxw,g=r,o=r生成的文件部署在每台计算机的“
~/.config/pip/pip.conf”上:#https://pip.pypa.io/en/stable/topics/configuration/[global]timeout=60[install]index=http://orangepi5.home:8081/repository/python_proxy/pypiindex-url=http://orangepi5.home:8081/repository/python_proxy/simple/trusted-host=orangepi5.home上面的文件显示了部署在我的集群上后文件的最终版本的外观示例(您的集群将与解析的URL不同)。现在是时候运行整个剧本并看看它是什么样子了。如何运行剧本为了运行剧本,我们传递一些参数:我们的主机库存的位置加密密码文件和包含主密码的主文件的位置,用于解锁受保护文件的内容最后是我们的主要剧本文件的位置cdansibleansible-playbook--inventoryinventories--extra-vars@vault/nexus_password.enc--vault-password-file$HOME/vault/ansible_vault_passsite.yaml如何测试新的PyPI代理为了测试我们的新代理,我们将使用pip和虚拟环境安装PythonRich。josevnz@orangepi5:~$python3-mvenv~/virtualenv/rich(rich)josevnz@orangepi5:~$.~/virtualenv/rich/bin/activate(rich)josevnz@orangepi5:~$pipinstallrichLookinginindexes:http://orangepi5.home:8081/repository/python_proxy/simple/CollectingrichDownloadinghttp://orangepi5.home:8081/repository/python_proxy/packages/rich/13.3.4/rich-13.3.4-py3-none-any.whl(238kB)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━238.7/238.7KB14.8MB/seta0:00:00Collectingpygments<3.0.0,>=2.13.0Downloadinghttp://orangepi5.home:8081/repository/python_proxy/packages/pygments/2.15.0/Pygments-2.15.0-py3-none-any.whl(1.1MB)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━1.1/1.1MB23.8MB/seta0:00:00Collectingmarkdown-it-py<3.0.0,>=2.2.0Downloadinghttp://orangepi5.home:8081/repository/python_proxy/packages/markdown-it-py/2.2.0/markdown_it_py-2.2.0-py3-none-any.whl(84kB)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━84.5/84.5KB6.9MB/seta0:00:00Collectingmdurl~=0.1Download
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 摊位营销方案模板范文(3篇)
- 旅游营销洗脑方案策划(3篇)
- 汽车东风本田营销方案(3篇)
- 浪漫经济主题营销方案(3篇)
- 火灾应急预案演练小结(3篇)
- 直播中秋活动策划方案(3篇)
- 空气能取暖施工方案(3篇)
- 脱硫除尘系统施工方案(3篇)
- 金具拆除施工方案(3篇)
- 长陡坡便道施工方案(3篇)
- (2026年)GINA全球哮喘处理和预防策略(更新版)解读课件
- 2026重庆德润环境有限公司招聘2人考试备考试题及答案解析
- 2026年广东省东莞市卫生健康系统人员招聘笔试参考题库及答案解析
- 2026年天津市部分区中考一模历史试卷和答案
- 大学生创业校园便利店
- 2024年同等学力申硕《临床医学》试题及答案
- 中国主动脉夹层诊疗指南(2025版)
- 中科曙光公司在线测评题
- 纪委监委办案安全课件
- 收费站车道安全培训课件
- 安全生产三级包保责任制
评论
0/150
提交评论