【作者】陳曉,某銀行自動(dòng)化運(yùn)維項(xiàng)目架構(gòu)師、項(xiàng)目經(jīng)理,主要負(fù)責(zé)自動(dòng)化運(yùn)維管理平臺(tái)、監(jiān)控平臺(tái)以及流程平臺(tái)的建設(shè)和維護(hù)。 1.自動(dòng)化運(yùn)維建設(shè)背景隨著IT技術(shù)的快速發(fā)展,IT系統(tǒng)的運(yùn)維復(fù)雜度不斷增加,IT部門的體量不斷擴(kuò)大,傳統(tǒng)的人工操作和借助管理流程的方式已不能滿足日益增長(zhǎng)的運(yùn)維工作量。而智能時(shí)代的到來,無論是DevOps的思想還是AIOps思想,自動(dòng)化就像人的“手”一樣,決定著最終這些技術(shù)思想的是否能夠落地,決定著未來一個(gè)IT運(yùn)維的生產(chǎn)力。 而從銀行IT架構(gòu)、運(yùn)維的特殊性考慮,也需要結(jié)合銀行自身的特點(diǎn),對(duì)于雙模的架構(gòu)、雙模的運(yùn)維方式也要兼?zhèn)湓诜€(wěn)態(tài)和敏態(tài)下的自動(dòng)化運(yùn)維方案。 自動(dòng)化運(yùn)維可以帶來的益處:
基于以上業(yè)務(wù)發(fā)展的需要以及自動(dòng)化運(yùn)維的收益,結(jié)合自身IT發(fā)展的形勢(shì),某銀行在自動(dòng)化運(yùn)維方面進(jìn)行了探索和實(shí)踐。 2.自動(dòng)化運(yùn)維平臺(tái)設(shè)計(jì)2.1需求分析
2.2系統(tǒng)架構(gòu)1.總體設(shè)計(jì)思路系統(tǒng)運(yùn)維自動(dòng)化的應(yīng)用架構(gòu)及關(guān)鍵業(yè)務(wù)流程的總體規(guī)劃及設(shè)計(jì)如下: 建設(shè)自動(dòng)化作業(yè)管理平臺(tái)是本項(xiàng)目的主要工作目標(biāo),底層對(duì)接資源層,使用各類技術(shù)工具以實(shí)現(xiàn)自動(dòng)化操作,橫向?qū)优渲霉芾砥脚_(tái)、流程平臺(tái)、監(jiān)控平臺(tái)和數(shù)據(jù)管理平臺(tái),貫穿整體統(tǒng)一運(yùn)維管理框架,以實(shí)現(xiàn)自動(dòng)化部署、批量變更、配置發(fā)現(xiàn)、自動(dòng)巡檢、資源管理的功能。 2.總體應(yīng)用邏輯架構(gòu)設(shè)計(jì)下圖是系統(tǒng)運(yùn)維自動(dòng)化的總體邏輯架構(gòu)圖 解釋說明: 整體架構(gòu)分為資源層、工具層、平臺(tái)層和應(yīng)用層。底層根據(jù)企業(yè)特點(diǎn),目前主要是基于私有云環(huán)境以及物理裸機(jī),私有云主要使用VmWare和OpenStack等虛擬化平臺(tái),而容器平臺(tái)也逐漸將作為一種資源類型納入到資源層的管控中。而基于金融行業(yè)的特殊性,物理裸機(jī)的部署依舊占用比重很大。在設(shè)計(jì)上依舊需要考慮物理裸機(jī)的自動(dòng)化部署。 在工具層根據(jù)底層資源的類型以及特性選擇相應(yīng)的技術(shù)工具,如X86服務(wù)器的部署選擇Cobbler,HPUnix服務(wù)器選擇Ux-ignite,而虛擬化平臺(tái)選擇Ansible、虛擬化平臺(tái)API或是命令對(duì)接的方式實(shí)現(xiàn)資源的自動(dòng)化部署和資源管控。對(duì)接流程管理平臺(tái)主要實(shí)現(xiàn)環(huán)境交付和變更的半自助服務(wù),以及實(shí)現(xiàn)資源管控的流程信息的分類和管理。對(duì)接監(jiān)控信息實(shí)現(xiàn)故障自愈以及資源回收。對(duì)接配置平臺(tái),是通過信息的自動(dòng)發(fā)現(xiàn)保證配置信息的準(zhǔn)確性。 在平臺(tái)層建立自動(dòng)化作業(yè)管理平臺(tái),也是本期實(shí)施的主要部分。在金融企業(yè)內(nèi)部基本已建立了流程平臺(tái)、配置平臺(tái)、監(jiān)控平臺(tái)。作業(yè)管理平臺(tái),主要面向運(yùn)維人員,可提供自動(dòng)化操作和配置界面。 而在應(yīng)用場(chǎng)景方面,主要需要解決的問題,一是環(huán)境的自動(dòng)化部署交付、二是批量變更、三是主機(jī)信息的自動(dòng)化發(fā)現(xiàn)、四是自動(dòng)化巡檢、五是資源管控。 3.關(guān)鍵應(yīng)用實(shí)施方案物理服務(wù)器部署根據(jù)實(shí)際需求情況,由于物理服務(wù)器的操作系統(tǒng)版本沒有高度統(tǒng)一,如RedHat、CentOS、Exsi等各類版本,故物理服務(wù)器一站式部署的實(shí)質(zhì)是要形成X86物理資源池,再按需下發(fā)部署操作系統(tǒng)。 要實(shí)現(xiàn)Cobbler的自動(dòng)化下推操作系統(tǒng),必須提供DHCP網(wǎng)絡(luò)環(huán)境,根據(jù)現(xiàn)有的網(wǎng)絡(luò)環(huán)境,按如下方案實(shí)施:
具體網(wǎng)絡(luò)結(jié)構(gòu)如下圖: 4.主要工具簡(jiǎn)介CobblerCobbler 是一個(gè)系統(tǒng)啟動(dòng)服務(wù)(boot server),可以通過網(wǎng)絡(luò)啟動(dòng)(PXE)的方式用來快速安裝、重裝物理服務(wù)器和虛擬機(jī),支持安裝不同的 Linux 發(fā)行版和 Windows。該工具使用python開發(fā),小巧輕便(才15k行代碼),使用簡(jiǎn)單的命令即可完成PXE網(wǎng)絡(luò)安裝環(huán)境的配置,同時(shí)還可以管理DHCP,DNS,以及yum包鏡像。 Cobbler 使用命令行方式管理,也提供了基于 Web 的界面管理工具(cobbler-web),還提供了API接口,可以方便二次開發(fā)使用。 Ignite-UXIgnite-UX是HP-UX的系統(tǒng)管理工具,可以利用該工具通過鏡像備份恢復(fù)的方式從網(wǎng)絡(luò)引導(dǎo)并安裝HP-UX操作系統(tǒng)。 WSUSWSUS是個(gè)微軟推出的網(wǎng)絡(luò)化的補(bǔ)丁分發(fā)方案,是個(gè)免費(fèi)的工具。WSUS支持微軟公司全部產(chǎn)品的更新。通過WSUS這個(gè)內(nèi)部網(wǎng)絡(luò)中的Windows升級(jí)服務(wù),所有Windows更新都集中下載到內(nèi)部網(wǎng)的WSUS服務(wù)器中,而網(wǎng)絡(luò)中的客戶機(jī)通過WSUS服務(wù)器來得到更新。這在很大程度上節(jié)省了網(wǎng)絡(luò)資源,避免了外部網(wǎng)絡(luò)流量的浪費(fèi)并且提高了內(nèi)部網(wǎng)絡(luò)中計(jì)算機(jī)更新的效率。WSUS采用C/S模式,客戶端已被包含在各個(gè)WINDOWS操作系統(tǒng)上。從微軟網(wǎng)站上下載的是WSUS服務(wù)器端。通過配置,將客戶端和服務(wù)器端關(guān)聯(lián)起來,就可以自動(dòng)下載補(bǔ)丁了。這個(gè)配置幾乎就是使用WSUS的全部工作了。 Ansibleansible是自動(dòng)化運(yùn)維工具,基于Python開發(fā),集合了眾多運(yùn)維工具(puppet、cfengine、chef、func、fabric)的優(yōu)點(diǎn),實(shí)現(xiàn)了批量系統(tǒng)配置、批量程序部署、批量運(yùn)行命令等功能。 3.Ansible的應(yīng)用在整個(gè)自動(dòng)化運(yùn)維管理平臺(tái)中,除了集成部分由專業(yè)開發(fā)團(tuán)隊(duì)外包集成外,Ansible是由我們目前研究的方向和目標(biāo)。而基于Ansible基本實(shí)現(xiàn)了自動(dòng)化運(yùn)維平臺(tái)的后端核心部分,下面的章節(jié)主要就Ansible研究和探索的內(nèi)容進(jìn)行分享和探討。 3.1Ansible的特點(diǎn)Ansible在官網(wǎng)中被定義為Ansible is a radically simple IT automation engine。說明Ansible是一款極其簡(jiǎn)單的IT自動(dòng)化工具,在0.X的版本中甚至使用Stupid Simple來形容Ansible是令人發(fā)指的簡(jiǎn)單??梢夾nsible這塊自動(dòng)化工具非常注重Simple的理念。 雖然Ansible注重使用的簡(jiǎn)單,但它自身并不簡(jiǎn)單,它擁有豐富穩(wěn)定的內(nèi)置模塊和開放的API接口。目前在Ansible2.3的版本中已經(jīng)擁有了1014個(gè)內(nèi)置模塊(數(shù)據(jù)更新至2017年9月6日)。而由于其開源生態(tài)非常好使得其內(nèi)置模塊支持的覆蓋面非常廣: 系統(tǒng)層:Linux、Windows、AIX等,對(duì)應(yīng)的模塊有acl、cron、pip、yum、shell、command、file、copy、user、lvol等等。 虛擬化:OpenStack、VMware、Docker、CloudStack、LXC等,對(duì)應(yīng)的模塊glance_image、os_server、vmware_vmkernel、docker等等。 商業(yè)化軟件:F5、ASA、Citrix、Eos等 系統(tǒng)應(yīng)用層:Apache、Jboss、Zabbix、Rabbitmq、SVN、GIT、Mysql、Mariadb等,對(duì)應(yīng)的模塊apache2_module、jboss、zabbix_group、rabbitmq_binding、subversion、git等 Ansible與Puppet和Saltstack的對(duì)比 目前主流的自動(dòng)化配置管理工具主要有Ansible、Puppet和SaltStack,這三款自動(dòng)化開源工具的主要優(yōu)劣勢(shì)如表一所示,而近年來Ansible也成為了自動(dòng)化配置管理工具的“網(wǎng)紅”,其在GitHub中的社區(qū)關(guān)注度見表二。 GitHub社區(qū)活躍度: 3.2Ansible的技術(shù)能力Ansible在Linux下的技術(shù)能力作為開源系統(tǒng)和軟件,Linux系統(tǒng)是Ansible支持最佳的操作系統(tǒng)。我們使用Ansible在Linux下對(duì)部分模塊進(jìn)行了測(cè)試和實(shí)際的運(yùn)用。結(jié)果表明,模塊的豐富程度很高可以覆蓋絕大多數(shù)自動(dòng)化運(yùn)維場(chǎng)景。無代理的特性Ansible的管控覆蓋快速、輕便。穩(wěn)定性和容錯(cuò)能力不錯(cuò)。在大量覆蓋千量級(jí)服務(wù)器發(fā)現(xiàn)了幾個(gè)不足是需要尋求一些更好的解決方案的,一是Ansible會(huì)對(duì)中文字符集的操作系統(tǒng)支持上存在一些小問題,比如service模塊;二是Ansible執(zhí)行命令時(shí)會(huì)在某些被控節(jié)點(diǎn)特定異常時(shí)掛住,無法繼續(xù),即使采用異步模式;三是性能并不是特別好,需要調(diào)優(yōu)或?qū)で笃渌鉀Q方案。未調(diào)優(yōu)情況下,管控千量級(jí)服務(wù)器可以,萬量級(jí)服務(wù)器難以勝任。在8C8G的服務(wù)器上對(duì)2000臺(tái)服務(wù)器執(zhí)行20并發(fā)的ping模塊(即單作業(yè)執(zhí)行)消耗時(shí)間大約3分鐘。實(shí)際在進(jìn)行ZabbixAgent批量安裝時(shí),我們的Playbook有20多個(gè)作業(yè),在安裝500臺(tái)服務(wù)器時(shí)使用的時(shí)間大約是20-30分鐘。 常用Linux模塊(基本覆蓋90%的自動(dòng)化場(chǎng)景):user: 用戶管理 group:用戶組管理 shell:調(diào)用shell file:文件、目錄管理(包括權(quán)限、屬主) copy:文件復(fù)制(包括權(quán)限、屬主) service:Linux服務(wù)管理 lineinfile:對(duì)于文本文件的處理,可通過正則表達(dá)式進(jìn)行替換、新增、刪除等,是配置文件調(diào)整的利器 template:下發(fā)模版文件,可以隨變量變化在下發(fā)后自動(dòng)生成適用于受控主機(jī)的配置文件,是配置文件管理的利器,特別適用于系統(tǒng)應(yīng)用軟件,比如mysql、jboss、apache等 authorized_key:密鑰管理,可以批量下發(fā)或管理ssh密鑰 unarchive:對(duì)zip、tar、gzip等格式的包可以解壓 yum:使用yum管理器對(duì)包進(jìn)行管理 lvg:lvm的pv和vg管理,可以創(chuàng)建、調(diào)整、刪除vg lvol:lvm的lv管理,可以創(chuàng)建、調(diào)整、刪除lv fssystem:文件系統(tǒng)管理 mount:文件系統(tǒng)掛載管理 Ansible在HPUX下的技術(shù)能力根據(jù)公司的實(shí)際情況,Unix服務(wù)器主要是HPUX,AIX使用的比較少。故對(duì)Ansible在HPUX的使用進(jìn)行了測(cè)試。 首先HPUX11.31下并未默認(rèn)安裝python,故需要手動(dòng)安裝python后才能接管。而測(cè)試結(jié)果發(fā)現(xiàn)支持情況不佳,HPUX下可以使用少部分的Linux的模塊,而使用到一些系統(tǒng)級(jí)的模塊時(shí)HPUX下無法支持,比如service、mount、lvg、lvol等等。所以不推薦Ansible在HPUX下直接使用。如果需要Ansible統(tǒng)一管控,可以通過Ansible連接后調(diào)用腳本實(shí)現(xiàn)管控。 Ansible在Windows下的技術(shù)能力Ansible連接Windows主機(jī)從技術(shù)實(shí)現(xiàn)上是利用了Windows的Powershell及.net庫,通過Python的pywinrm庫實(shí)現(xiàn)基于Windows的winrm協(xié)議遠(yuǎn)程控制Windows主機(jī),而調(diào)用的Ansible的內(nèi)置模塊實(shí)質(zhì)均為Powershell腳本,僅由python程序調(diào)用。 故Ansible連接Windows主機(jī)需要Powershell3.0及.net3.5,所以WindowsServer2008需要進(jìn)行升級(jí),而Windows2012及以上版本可以直接使用。 通過測(cè)試及實(shí)際運(yùn)用發(fā)現(xiàn),常規(guī)運(yùn)維操作覆蓋能力不錯(cuò)。甚至使用Ansible進(jìn)行WindowsHotFix補(bǔ)丁的安裝均可以實(shí)現(xiàn)。當(dāng)然我們?cè)谶x擇補(bǔ)丁安裝時(shí)最終還是選擇了微軟原生的WSUS進(jìn)行集成。 根據(jù)實(shí)際情況,目前依舊有不少應(yīng)用運(yùn)行在WindowsServer2008上,升級(jí).net需要應(yīng)用的測(cè)試,工作量較大需要逐步推進(jìn)。而在WindowsServer2012及以上版本上,使用Ansible是沒有什么問題的。 常用Windows模塊(基本覆蓋90%的自動(dòng)化場(chǎng)景):win_user: windows用戶管理 win_group: windows用戶組管理 win_shell:調(diào)用windows內(nèi)部命令或腳本 win_file:管理windows文件,包括復(fù)制、刪除、創(chuàng)建等,包括管理文件屬主、權(quán)限等 win_copy:復(fù)制windows文件,包括復(fù)制、刪除、創(chuàng)建等,包括管理文件屬主、權(quán)限等 win_service:管理windows的服務(wù),可以啟動(dòng)、停止、設(shè)置自啟、禁止自啟 win_lineinfile:對(duì)文本文件通過正則表達(dá)式進(jìn)行調(diào)整,包括插入、替換、刪除 win_unzip:可對(duì)zip壓縮包進(jìn)行解壓,win_zip可以進(jìn)行打包 win_msi:對(duì)windows的msi包進(jìn)行管理 Ansible在OpenStack下的技術(shù)能力Ansible可以作為OpenStack的自動(dòng)化編排工具,通過Ansible控制OpenStack的Controller節(jié)點(diǎn),通過Ansible的內(nèi)置模塊os_server、os_volume等模塊實(shí)現(xiàn)在OpenStack平臺(tái)上管理instance和存儲(chǔ)。 從需求出發(fā)公司目前的需求僅為環(huán)境交付。所以在實(shí)際使用中,我們根據(jù)用戶對(duì)環(huán)境的需求,使用已經(jīng)編制好的AnsiblePlaybook調(diào)用不同的參數(shù)在OpenStack上創(chuàng)建實(shí)例、掛載磁盤、進(jìn)行安全加固、安裝基礎(chǔ)軟件最終交付至用戶,與流程對(duì)接后可以實(shí)現(xiàn)半自助服務(wù)。 而在社區(qū)中也可以看到大量關(guān)于Ansible安裝OpenStack以及擴(kuò)展的資料和實(shí)際使用情況。本文在這里不做深入介紹。另外,Git上也有不少Ansible在OpenStack上的實(shí)際案例,比如使用Ansible的Playbook來實(shí)現(xiàn)整個(gè)OpenStack環(huán)境的自動(dòng)化應(yīng)急演練,檢測(cè)網(wǎng)絡(luò)、實(shí)例、存儲(chǔ)、以及實(shí)例上的資源異常時(shí)的系統(tǒng)健壯程度。 所以,我們認(rèn)為Ansible可以作為OpenStack的編排工具在公司進(jìn)行推廣使用。 Ansible技術(shù)能力總結(jié)Ansible的優(yōu)點(diǎn)主要是: 一、學(xué)習(xí)曲線平滑,使用簡(jiǎn)易。具備一定腳本使用基礎(chǔ)的運(yùn)維人員兩個(gè)月可以較為熟練的使用。 二、無代理,部署簡(jiǎn)單。 三、模塊豐富,覆蓋面較廣,使用場(chǎng)景較多。 四、社區(qū)熱度高,資料豐富。 Ansible的缺點(diǎn)是: 一、性能相對(duì)較弱,需要優(yōu)化或更改連接模式提升性能。 二、HPUX、WindowsServer08支持較弱。 三、對(duì)于中文環(huán)境依舊存在一些弊端。 四、日志記錄功能不夠強(qiáng)大。 五、基于冪等設(shè)計(jì),回退機(jī)制弱。 3.3Ansible的應(yīng)用場(chǎng)景目前公司Ansible已經(jīng)廣泛開始使用,目前應(yīng)用的場(chǎng)景主要是批量變更、軟件安裝、環(huán)境交付以及主機(jī)信息的自動(dòng)發(fā)現(xiàn)。 批量變更主要應(yīng)用在Linux操作系統(tǒng)上,根據(jù)實(shí)際運(yùn)維需要我們應(yīng)用在Agent批量安裝、用戶批量開設(shè)、配置批量更新等方面。 使用最多的是Zabbix和Flume的Agent批量安裝,特別是Zabbix使用Ansible工具特別方便,除了安裝Agent之外,批量更改配置非常方便,如使用Zabbix服務(wù)器或代理服務(wù)器地址更換、自定義Key的新增調(diào)整等等。 在用戶開立方面也使用Ansible進(jìn)行批量推送。 同時(shí),在配置方便除了Zabbix配置之外,還在ELK的Syslog的配置上也已經(jīng)進(jìn)行了應(yīng)用。 在使用Ansible進(jìn)行批量變更的時(shí)候,需要保證代碼進(jìn)行充分測(cè)試,雖然Ansible在使用上非常簡(jiǎn)單,但回退機(jī)制較弱。比如文件的批量更新,雖然可以進(jìn)行備份,但無法將備份批量進(jìn)行回退。 基礎(chǔ)設(shè)施即代碼的概念中最困難的一點(diǎn)是碎片服務(wù)器,由于存在大量的存量服務(wù)器,所以這個(gè)問題無法避免。這就需要企業(yè)內(nèi)部使用Ansible的時(shí)候一定要將Ansible作為一種軟件代碼進(jìn)行管理,建立開發(fā)測(cè)試發(fā)布機(jī)制,保證代碼充分測(cè)試。在批量變更的時(shí)候?qū)ふ也煌愋偷脑O(shè)備進(jìn)行試點(diǎn)后再逐步推送。如果使用Ansible進(jìn)行過一次推送后,碎片的問題基本就不是問題了,今后可以較為放心的反復(fù)更新。 關(guān)于開發(fā)測(cè)試發(fā)布機(jī)制,我們目前以GitLab為工具建立了版本控制系統(tǒng),并定義了代碼遷入遷出規(guī)則,嚴(yán)格根據(jù)流程開發(fā)、測(cè)試最后才能最終發(fā)布。 軟件安裝除了批量變更之外,Ansible主要是實(shí)現(xiàn)基礎(chǔ)軟件的安裝,比如mysql、oracle、jboss等等。在使用Ansible安裝此類軟件時(shí)將配置獨(dú)立出來,這樣可以根據(jù)用戶需求獲取不同參數(shù),以實(shí)現(xiàn)不同配置的軟件。 環(huán)境交付除了批量變更之外,Ansible主要是實(shí)現(xiàn)基礎(chǔ)軟件的安裝,比如mysql、oracle、jboss等等。 在環(huán)境交付層面,由于Ansible是基于操作系統(tǒng)或是虛擬化云平臺(tái)的,所以在裸機(jī)部署上并不適用。在虛擬化云平臺(tái)上,通過Ansible基于OpenStack和VMWare的模塊開設(shè)實(shí)例和虛機(jī)以及掛盤,完成虛機(jī)的下放后,再進(jìn)行軟件的安裝。從Ansible的Playbook的設(shè)計(jì)上只需要將下放虛機(jī)掛盤操作作為一部分再集成前述的軟件安裝部分即可。下放虛機(jī)掛盤的操作也可以由自動(dòng)化運(yùn)維平臺(tái)中集成各個(gè)虛擬化平臺(tái)的命令完成。 最后呈現(xiàn)的形式由用戶遞交環(huán)境申請(qǐng)信息,標(biāo)注需要什么配置的服務(wù)器、幾臺(tái)、需要安裝什么樣的軟件。遞交申請(qǐng)審批通過,由自動(dòng)化平臺(tái)自動(dòng)運(yùn)行部署后交付至用戶。 主機(jī)信息自動(dòng)發(fā)現(xiàn)利用Ansible的現(xiàn)成連接通道以及自帶的facts模塊,實(shí)現(xiàn)主機(jī)信息的自動(dòng)發(fā)現(xiàn)和更新功能,并將這些信息定期更新至配置平臺(tái)中,以輔助配置平臺(tái)的數(shù)據(jù)準(zhǔn)確性。由于Ansible的facts模塊采集的信息有限,且基于Linux、HPUX以及Windows采集的內(nèi)容也稍有不同,所以還是需要一些本地化的程序輔助。 Facts中可以采集的信息主要包含了主機(jī)的一些基礎(chǔ)信息,如主機(jī)名、IP地址、網(wǎng)卡信息、CPU、MEM以及操作系統(tǒng)版本等信息。而從需求出發(fā),我們可能還關(guān)注基礎(chǔ)軟件的版本信息、文件系統(tǒng)以及用戶的信息等等。所以需要根據(jù)需求定義一些程序以獲取這些信息。 我們目前采用如下圖,設(shè)計(jì)方法獲取主機(jī)信息,根據(jù)需求編制Ansible的模塊,比如獲取用戶的信息,定義新的模塊,定義完成后即形成新的AnsibleAD-HOC命令,通過一段程序獲取所有受控的主機(jī)的facts以及自定義的信息之后將其入庫,并同步更新至CMDB庫。運(yùn)維人員自己就可以根據(jù)自身的需求去定義需要的信息,并且將其入庫,無需專業(yè)的開發(fā)人員實(shí)施。 其他場(chǎng)景Ansible的其他使用場(chǎng)景,主要是應(yīng)用的發(fā)布和變更,利用Ansible本身與Git結(jié)合的能力,考慮應(yīng)用的發(fā)布,社區(qū)中也有不少這樣的案例可以參考。同時(shí)公司目前也在研究以Jenkins為主要工具的持續(xù)集成、持續(xù)測(cè)試,Jenkins環(huán)境部署和應(yīng)用發(fā)布的部分考慮與Ansible對(duì)接實(shí)現(xiàn)。
|
|