天天看點

用Puppet和Docker建構工具來自動化容器産品部署

本文講的是<b>用Puppet和Docker建構工具來自動化容器産品部署</b>【編者的話】本文介紹了最新版本的Puppet企業版支援的Docker自動化建構工具,包括了內建的Jenkins持續內建和部署以及支援新的編排系統。

Puppet希望能将Docker建構工具納入到自己的IT自動化管理中。新版本的Puppet企業版(Puppet Enterprise 2016.4)支援建構Docker容器,并自動部署到生産環境中。

Puppet的最新版本是在Puppet的使用者年會PuppetConf 2016上公布的。該版本也和Jenkin持續內建和部署工具相整合,并提供了新的編排能力。

Puppet的資深軟體工程師Gareth Rushgrove提到,Docker的入門很容易。作為建構工具,他将Dockerfile稱為“80%的解決方案”(80 percent solution),但是複制粘貼(copy-and-paste)是開發者們複用鏡像的常用方式之一。

他提到,“那麼問題來了:當你有了500個開發者和幾百個服務時,情況是怎樣的呢?三年之後,你會發現一切變得碎片化,難以管理。”

Puppet Docker Image Build可以用來提供一緻的方式來建構和釋出容器,Rushgrove說,它和Docker build一樣,但是着重于大組織的擴充。你可以使用與docker build指令相同的建構方式,但是使用Puppet的新工具。

Rushgrove提到,相對于Dockerfile來說,Puppet的方式更易複用,也更容易組合。它允許開發者建立可以複用的子產品,同時可以使用Puppet的測試工具,進行持續內建和建構(CI/CD)。

與之前的版本相比,對于跨組織架構的變化,Puppet Enterprise 2016.4更能展現其中的原因。

Puppet的産品市場副總裁Tim Zonca說,“人們使用Puppet來規定安全和合規政策,Puppet能讓他們知道其中的任何變化”。

Zonca說,“通常我們說,某個東西改變了,是不合規的(out of policy),我們會修複它。現在我們會說,某個東西改變了,但是它是有意的(intentional)。有人通過Puppet做到了這點,你可以深入進去檢視他們是怎麼做的,這可能是有意的,也可能是惡意的,但是我們可以修複這個問題。它能幫助區分Puppet中發生了什麼。“

由于較差的可見性,傳統的編排會導緻沖突的配置或者未被記錄的、臨時的(ad-hoc)更改。現在,你可以在整個架構的某個部分,進行階段化的部署和更改。分塊架構(segment infrastructure)和應用是基于Puppet中儲存的資訊,比如位置、環境、配置資源,隻會将變化部署在制定的塊(segment)上。

Zonca說,“你可以使用金絲雀部署(canary deployments),例如,我先部署在10個節點上,如果一切正常的話,那麼我就會在5000個節點上進行部署。”

他說,“你可能會說,我隻想在Linux網絡伺服器上進行部署。對于使用某個版本的OpenSSL的節點,我需要更新這些變化。Puppet可以給你顆粒化的控制(granular control)和基于角色(role-based)的控制,你可以針對架構中的某個特定部分進行修改。”

Zonca提到,新版本的Jenkins允許使用者使用代碼定義他們的架構(define their infrastructure as code)。Puppet Jenkins流水線插件可以用一種自動化方式将Puppet和Jenkins結合在一起。

<a href="http://dockerone.com/uploads/article/20161215/02605b882f47ba98ef62e3c4d62feb33.png" target="_blank"></a>

項目組可以使用Jenkins和Puppet Enterprise來搭建一個可持續化部署的流水線(continuous delivery pipelines),編排所有應用的部署任務。使用該流水線,Jenkins使用者可以搭建CI流水線,然後針對特定應用建立Puppet編排任務。現在,所有這些都可以自動化完成。

針對VMware的vRealize雲管理平台,該公司還釋出了一款插件,可以在on-prem和混合雲環境中自助部署架構(self-service provisioning of compliant infrastructure)。

随着容器技術在生産環境中的部署越來越多,配置管理工具供應商(如Puppet和Chef)面臨了新的挑戰,來證明自身的價值。随着去年Red Hat收購了Ansible,Ansible也日益突出了。

最近的OpenStack的使用者調查指出,Ansible的流行重點突出了編排工具,如Kubernetes、Swarm和Mesos。

Puppet自己的編排器在去年秋天釋出了。PQL(Puppet Query Language)的擴充使用,這種文法可以用來描述節點上的各種服務,也可以用來直接部署更改,并監控發生了什麼。如果有什麼事情發生了錯誤,你可以停止它,并排錯,然後繼續部署。

Docker整合技術(Docker integration technologies)是Puppet的BlueShift項目的結果,該項目在四月份啟動。Zonca告訴The New Stack,“該項目是Puppet内部工程師、技術公司(technology companies)和各自社群的合作,将Puppet作為一種通用語言來管理新技術。”

Puppet之前釋出了很多子產品:Kubernetes子產品,可以用Puppet代碼來管理編排環境;管理Docker程式和容器的子產品;Consul(HashiCorp的服務發現工具)子產品。目前,Mesos子產品正在開發中。

目前,正在将Puppet和VMWare的Photon、其他的容器即服務(container-as-a-service)平台整合。

BlueShift項目的Rushgrove說,這一系列顯示了我們正在做什麼。

<b>原文釋出時間為:</b>2016-12-15

<b>本文作者:</b>夏彬

<b>本文來自雲栖社群合作夥伴Dockerone.io,了解相關資訊可以關注Dockerone.io。</b>

<b></b>

<b>原文标題:</b><b>用Puppet和Docker建構工具來自動化容器産品部署</b>

繼續閱讀