2009-11-16 14 views
13

我已經成功地爲基於maven和nexus的Java應用程序創建了一個小型軟件工程環境(SEE),其中包括其他工具。我的實際問題是 - 並不是真正的驚喜 - 聯繫人通常需要訪問互聯網才能從中央存儲庫獲取請求的工件。但SEE必須嚴格脫機,並且無法改變它(安全原因)。在本地網絡中使用Sonatype連接

我的第一個快速解決方案是鏡像連接到互聯網的機器上的nexus/maven安裝,運行一些標準pom來填充鏡像連接並通過CD-ROM將緩存遷移到目標系統。很難看。我並不是真的期望適應這個過程來獲得更新的工件或新的。實際上,我們現在通常只是導入我們需要的庫,並使用中央和其他的官方文件創建新的工件(使用nexus)。

有沒有人面臨同樣的挑戰,並找到了更聰明,更高效的方法?

編輯

感謝所有的答案,我想我必須要對企業的實際問題,我目前思考的解決方案更精確:我想我已經創建,填充和根據互聯網上的中央和其他回購,或者確切地說:同步一個私人「中央」儲存庫:兩個相同的儲存庫。一個連接到互聯網,另一個連接到本地網絡。然後,我可以保持互聯網連接存儲庫'最新',並通過DVD將更改複製到本地存儲庫 - 這對Nexus可見。

它會工作嗎?有沒有關於如何在私人服務器上設置'中央'的文檔,是否有一種機制來同步選定的工件?

(不想在一開始張貼我的想法,因爲我希望得到完全不同的想法)

編輯2 - 「最佳實踐」 - 補充要求

我們的「最佳實踐「在其完全從互聯網上斷開連接的環境中使用maven:

  • 我們安裝在中央服務器上關係,使軟件開發工作站有一個交談的服務器(這是我們自己的假象代表ository)
  • 我們將POM文件導出到有互聯網訪問權限的工作站,清除該機器上的本地存儲庫並執行dependency:go-offlineplugin)。這種填充本地資源庫中的所有需要​​artedfacts
  • 我們把這個本地資源庫的安全環境,並添加了所有插件的Nexus(只需將文件複製 - 結構是相同的)

這每週一次用做所有的POM文件(可以是自動的),你有一個非常穩定和可用的本地存儲庫。

+0

嚴格來說,脫機,你的意思是從互聯網斷開或根本沒有網絡? –

+0

感謝您的評論 - 環境有一個小型網絡:一臺服務器與nexus,一些客戶端使用Eclipse IDE。但網絡沒有連接到互聯網(或任何其他網絡)。 –

+1

安德烈亞斯 - 已經過了一年多了。你有沒有吸取教訓來報告?我幾乎面臨着與你完全相同的問題。 –

回答

4

將它的工作?有沒有關於如何在私人服務器上設置'中央'的文檔,是否有一種機制來同步選定的工件?

那麼,你可以成爲中央的mirror,但是,抓住〜10 GB的文物有什麼意義呢?你不需要所有這些,通常的建議是使用庫管理器。

其實我最初的想法是:

  1. 查閱
  2. rsync該Nexus的一個DVD內容使用連接到互聯網外的一臺Nexus。
  3. 通過DVD將內容複製到SEE的Nexus。
  4. 定期重複。

我發現這個解決方案很醜,但現在我們已經有了更多關於您的情況的細節,這可能是可以接受的。

+0

感謝您的回答。特別是對於maven鏈接,我認爲這有很大的幫助。第二個聯繫是一個好主意,但我必須找到一種方法將工件放入聯繫中 - 聯繫通常只會按需求緩存工件,就像Maven構建的驅動一樣,並且外部沒有「需求」。我想我會調整'公共資源庫'解決方案 - 鏡像所需的工件,並在內部網絡上創建該服務器的克隆... –

+0

我沒有涵蓋那部分,但這確實需要在一個pom上運行maven與所有必需的依賴關係(例如使用'mvn dependency:go-offline',不需要編譯任何東西)。我想使用SEE中的POM不是一個選項... –

4

我曾經工作在網絡環境中,一部分網絡無法訪問互聯網或任何其他網絡。每當我們需要這個網絡內更新的軟件,我們做了以下內容:

  1. 上傳更新的軟件,以「安全」主機(磴)淨
  2. 連接磴
  3. 斷開磴保證淨
  4. 推送更新的軟件庫,可從安全網

  • 斷開磴我們完全自動化此凝固酶原通過自動配置交換機來適當地連接和斷開網絡(所以始終存在物理連接但沒有可用的IP連接)。也許你可以做同樣的事情 - 它只是取決於「斷開連接」的定義的靈活性;)

  • +0

    你很幸運,你被允許允許「步驟石」連接到兩個網絡 - 至少一個接一個。不幸的是我的環境更嚴格......但這聽起來像一個不錯的方法! –

    +0

    嗯,它不是特別好 - 實際上它是一個擁有數十個防火牆和不同安全策略的野獸。更不用說將所需的所有安全組和認證用於生產:) – sfussenegger

    +0

    我熟悉的聲音;-) –

    3

    我在環境面臨着類似的問題。

    按說我們的服務器託管的Nexus將無法訪問Internet。但是,我遇到了操作團隊,並向他們解釋說,允許Nexus自動從互聯網下載文物對我們來說是一個巨大的生產力勝利。

    一旦他們瞭解我們的需求,OPS允許服務器訪問互聯網的IP的一個非常嚴格的白名單,如中央Maven倉庫。因此,當外部存儲庫IP地址更改時,我們仍然需要通過ops添加新的存儲庫或執行白名單修復。但總的來說,我們認爲這是安全性和生產力之間的最佳折衷方案,並且對我們很有用。

    看看你的利益相關者會去在一個高度受限制的白名單中,僅方式您的網絡連接到Internet,一旦你重申他們如何這樣做會讓你更有效率,並最終節省大家的時間。

    +0

    我喜歡這個想法 - 也許我可以說服我的安全人員將解決方案與白名單和臨時連接結合起來......儘管我仍然懷疑.. –

    +0

    當然 - 將臨時連接與嚴格的IP白名單相結合聽起來非常強大。如果你編寫腳本,按照sfussenegger的回答,你應該得到一些既安全又有用的東西。 –

    3

    中的Nexus臨採購功能旨在準確地來處理這個用例。

    What is Procurement?

    Procurement Suite User guide

    +0

    我不確定 - 是不是隻是將問題轉移到另一臺服務器上?在我的情況下,我必須將相同的安全約束應用於「採購的存儲庫」服務器,iaw:無法連接到互聯網。那麼如何填充和更新採購的存儲庫? –

    +0

    這意味着在Nexus可以聯繫遠程回購站的情況下工作,但被代理的東西受到嚴格控制。通過添加這個額外的「防火牆」層,以前必須完全斷開連接的組織現在只能通過Nexus進行訪問。 –