




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
Nexus3OSS是一個開源
工件存儲庫管理器,可以處理多種格式,例如容器映像、PythonPIP、Javajar等。為什么要有本地工件管理器?其原因有很多:使用您的私有基礎設施:您可能擁有需要保護的專有代碼。更快的工件下載速度:如果您不斷通過Internet下載相同的工件,您可以將它們緩存在一個中央位置,通過緩存它們來為跨多個服務器的多個用戶帶來好處??刂颇男┕ぜM入您的構建鏈:集中工件的位置,確保它們被批準使用,并確認它們不包含惡意代碼。隔離誰可以訪問您的工件:您可能對誰可以訪問您自己組織內(nèi)的某些工件有更嚴格的要求。在本文中,我將向您展示如何使用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現(xiàn)在稍微解釋一下:有兩個角色:“關系”和“客戶”。Nexus角色用于設置工件管理軟件,而客戶端角色則在每臺計算機上設置pip設置。Vars包含每個角色使用的變量,通過文件分隔以使其用法更加清晰我們有密碼,并使用Ansible保管庫功能來管理它們。文件“
site.yaml
”協(xié)調(diào)角色執(zhí)行:-hosts:alltags:clientsvars_files:-vars/clients.yamlroles:-clients-hosts:nexus_servertags:nexusbecome_user:rootbecome:truevars_files:-vars/nexus.yamlroles:-nexus現(xiàn)在讓我們繼續(xù)看看將執(zhí)行劇本的宇宙。主機清單就我而言,這非常簡單–我有兩個主要組:“客戶端”和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用Ja??va編寫)和logrotate來處理過時的日志。pre_install.yaml:這里發(fā)生了很多事情,比如為Nexus創(chuàng)建所需的目錄,將運行該進程的專用非特權用戶。download.yaml:顧名思義,我們獲得了Nexus3OSS軟件的新版本,并確保它具有正確的校驗和。我們不想從互聯(lián)網(wǎng)安裝惡意軟件。然后是屬于“定制安裝組”的任務:install.yaml:解壓軟件,準備systemd單元以自動啟動它,為Nexus設置JVM設置,并部署logrotate配置。post_install.yaml:這里發(fā)生了令人興奮的事情-軟件已安裝,我們第一次運行它。我們還使用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方法,您可以看出這是一個修改操作(意味著現(xiàn)有的角色和用戶已經(jīng)存在)。錯誤檢測是通過獲取Nexus返回的HTTP代碼來完成的。下一步是準備我們的本地PyPi代理。這是一個多步驟任務,接下來將詳細描述。如何在Nexus3上設置PyPI代理Nexus3角色的最后一個文件是“
repositories.yaml
”。在這里,我們執(zhí)行以下步驟:檢查代理是否已設置(GET或只讀操作)如果不存在,請創(chuàng)建一個新的(帶有JSON有效負載的POST方法,其中包含創(chuàng)建全新存儲庫的詳細信息)請注意,此劇本不提供更新存儲庫設置的選項??梢允褂肦ESTAPI來完成,但我將把它作為練習留給讀者。準備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我們就快到了?,F(xiàn)在我們需要告訴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不同)。現(xiàn)在是時候運行整個劇本并看看它是什么樣子了。如何運行劇本為了運行劇本,我們傳遞一些參數(shù):我們的主機庫存的位置加密密碼文件和包含主密碼的主文件的位置,用于解鎖受保護文件的內(nèi)容最后是我們的主要劇本文件的位置cdansibleansible-playbook--inventoryinventories--extra-vars@vault/nexus_password.enc--vault-password-file$HOME/vault/ansible_vault_passsite.yaml如何測試新的PyPI代理為了測試我們的新代理,我們將使用pip和虛擬環(huán)境安裝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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 山東省郯城第三中學高一體育 足球:腳內(nèi)側(cè)傳球教學實錄 新人教版
- 毛織造企業(yè)融資策略考核試卷
- 林業(yè)政策法規(guī)研究考核試卷
- 投影設備在能源管理與節(jié)能改造的應用考核試卷
- 放射性礦物選礦的放射性污染治理技術考核試卷
- 搪瓷企業(yè)市場競爭力分析考核試卷
- 家居商場的家居購物考核試卷
- 木片加工中的刀具磨損與壽命評估考核試卷
- 前臺文員的多任務處理能力提升計劃
- 學校環(huán)保教育秋季計劃
- me實驗2 電位、電壓的測定及電路電位圖的繪制
- EGCs與腸道微環(huán)境相互作用的研究進展
- 特殊兒童隨班就讀申請書范本
- 三年級下冊英語教材解讀-教材解讀|魯科版(五四學制)(三起)
- 道路施工導改及施工方案
- 《實數(shù)》單元作業(yè)設計
- (word完整版)教師個人簡歷模板
- 專題11 以小見大-【幫作文】初中語文之從課文中學習寫作 課件(共25張PPT)
- 互聯(lián)網(wǎng)公司勞動合同
- 吉美版四年級綜合實踐活動下冊全冊表格簡約式教案教學設計
- 2023河南對口高考計算機類基礎課試題
評論
0/150
提交評論