2016-06-23 96 views
3

我有一個在劇本中沒有角色的git項目,我想使用其中的一個角色。ansible galaxy - 從回購安裝角色

回購的克隆工作,但它在存檔階段失敗:

executing: git clone https://[email protected]/my-project/search-mysql search-mysql executing: git archive --prefix=search-mysql/ --output=/tmp/tmp3f6ySq.tar search 
command git archive --prefix=search-mysql/ --output=/tmp/tmp3f6ySq.tar search failed 

使用requirements.yml文件,

ansible-galaxy install --role-file=requirements.yml --roles-path=roles --force 

任何想法,爲什麼存檔失敗? 我只能下載角色而不是整個項目(search-mysql)?

感謝,

+0

你可以顯示'requirements.yml'的相關部分嗎?我從來沒有見過一個功能如何使用回購的單個子目錄作爲星系角色的來源。好奇你是如何嘗試這一點的。 – udondan

+0

當然,但這只是在測試,我仍然無法得到它的工作: - src:https://[email protected]/my-project/search-mysql 版本:主 名稱:search- mysql 這將克隆我的所有項目,我需要克隆只有角色文件夾或從我的ansible中調用此項目中的特定角色。 – A1001

回答

1

除非有無證功能(這是不是要發生的事情稀有)所需的一個星系兼容的角色專用的混帳回購協議。如果一個角色是不同項目使用的組件,就像您的情況一樣,無論如何,將它存儲在單獨的項目中是有意義的。你不能將角色移出並在兩個項目中引用它嗎?

哈克解決方法可能是這樣的:

在你要求的文件指定你的角色回購將被保存到一個位置:

- src: [email protected]/my-project/search-mysql 
    version: master 
    name: search-mysql 
    path: ./role_collection 

現在ansible星系將節省回購在./role_collection/search-mysql

這只是爲了不污染原始roles目錄與一個實際上擁有角色集合的文件夾。

在你的劇本,你也可以指定每個角色的完整路徑:

- hosts: ... 
    roles: 
    - ./role_collection/search-mysql/path/to/your/role/inside/the/repo 
+0

這基本上是我正在尋找,但嘗試這仍然生成在存檔步驟相同的錯誤: 命令git檔案 - 前綴=搜索mysql的 - 輸出=/tmp/tmpnnxPoK.tar搜索失敗 – A1001

+0

哦,我認爲這對你有用。嘗試添加一個'scm:git'到requirements.yml條目 – udondan

+0

仍然沒有.... 我認爲這是因爲我不是在主檔案失敗的工作,我需要一個選項結帳到工作分支( - b)在克隆之後,當ansible會運行歸檔時 - git archive --prefix = search/--output =/tmp/tmpkMNgsG.tar搜索 - 其中搜索是新分支,它希望能夠工作。 – A1001

0

這來自ansible星系支持: 「我只是檢查,這是每回購情況一個角色。如果你想要的。從存儲庫中獲取各個角色,那麼您需要將它們分開。「