我不熟悉配置管理和部署工具。我必須實施一個持續交付/持續部署工具,用於我曾經投入的最有趣的項目之一。Docker和Ansible如何配合實現Continuos Delivery/Continuous Deployment
首先,我個人很喜歡AWS
,我知道Ansible
是什麼,它背後的邏輯及其目的。我對Docker
的理解水平並不相同,但我明白了。我經歷了很多互聯網資源,但我無法得到大局。
我一直在努力的是他們是如何融合在一起的。使用Ansible
,我可以將我的基礎架構作爲代碼進行管理;構建EC2
實例,安裝軟件包......我甚至可以通過拉取代碼,修改配置文件並啓動Web服務器來部署完整的應用程序。 Docker
本身就是一個打包應用程序的工具,並確保它可以在您部署它的任何位置運行。
我的問題是:
如何泊塢(或Ansible和碼頭工人)延長持續集成過程!?
假設我們有一個源代碼庫,團隊成員完成了一個功能的工作,他們推動他們的工作。詹金斯檢測到這一點,運行所有的驗收/單元/集成測試套件,如果他們都通過了,它會將其聲明爲穩定版本。 Docker如何適合這裏?我的意思是,當團隊推動他們的工作時,Jenkins是否必須將應用程序中編碼的Docker文件源編譯,構建應用程序的映像,啓動容器並運行所有測試,或者按照經典方式運行測試一切都很好,那麼它會從Docker文件構建Docker鏡像並將其保存在一個私人位置? Jenkins應該用x.y.z標記最終圖像!
Docker容器配置:
假設我們通過Jenkins
內置圖像存儲的地方,如何處理部署相同的圖像到不同的環境,甚至,不同的配置參數(虛擬主機配置,DB主機,隊列URLs,S3端點等)在不破壞Docker
原則的情況下,處理這個問題的最靈活方法是什麼?這些配置是否在構建時或者基於它的容器開始時支持在映像中,如果是,它們是如何被注入的?
Ansible和泊塢:
Ansible
提供Docker
模塊來管理Docker
容器。假設我解決了上面提到的問題,當我想部署一個新版本的x.t.z我的應用程序時,我告訴Ansible
從存儲它的位置拉取該映像,啓動應用程序容器,以便如何注入配置設置! Ansible是否必須在運行之前登錄Docker鏡像(這聽起來令人覺得很瘋狂),並且以與經典主機相同的方式使用它的Jinja2模板!如果不是,這是如何處理的?!
對不起,如果這是一個很長的問題,或者我拼錯了一些東西,但這是我的想法大聲。我在過去兩週內被封鎖,無法找出正確的工作流程。我希望這是未來讀者的參考。
請閱讀您的經驗和解決方案非常有幫助,因爲這看起來像一個常見的工作流程。 預先感謝您。任何幫助深表感謝。
Ansible + Docker ==魔法!這裏有一篇很棒的博客文章:https://developer.rackspace.com/blog/ansible-and-docker/,另外還有一個專門討論Ansible + Docker的小節http://www.ansiblefordevops.com/ – Homer6