近日,Ansible公司正式發(fā)布了Ansible v2.0。在這個版本中,該公司在努力保持向后兼容現(xiàn)有playbook的同時完成了了不起的重構(gòu)工作。發(fā)布聲明中包含多項(xiàng)改進(jìn),如塊內(nèi)異常處理,針對不同的任務(wù)引入新的執(zhí)行策略,以及通過模塊改進(jìn)同其他服務(wù)的連接。
從這個版本開始,用戶可以在他們的playbook里定義塊了。任務(wù)塊允許用戶采用同許多編程語言一樣的異常處理方式(例如Python的try/except/finally結(jié)構(gòu))。此外,用戶可以借助不同的屬性(如標(biāo)簽和條件)分組管理相關(guān)任務(wù)。
該版本還包含一種控制playbook執(zhí)行的新方法。Ansible定義了三種playbook策略,使用戶可以配置不同任務(wù)在目標(biāo)主機(jī)上的執(zhí)行方式。現(xiàn)有的預(yù)置腳本遵循“線性策略”,在繼續(xù)執(zhí)行下個任務(wù)之前,一個任務(wù)會在所有主機(jī)上執(zhí)行。“自由策略”允許每個主機(jī)盡快執(zhí)行完自己的playbook,而不需要等待所有其他的主機(jī)。“序列”策略保證一組主機(jī)在另一組主機(jī)開始前完成本組的任務(wù)。另外,用戶可以通過插件提供自己的策略。
該版本新增了200多個模塊,改進(jìn)并擴(kuò)展了對現(xiàn)有平臺的支持,如Amazon Web Services、VMWare、Microsoft Windows、Docker。有一組全新的模塊簡化了OpenStack的管理。該版本中還出現(xiàn)了一個新的Docker插件。
插件API的變化迫使開發(fā)人員在升級到v2.0時必須檢查他們的插件。Playbook中新增的動態(tài)include也可能會產(chǎn)生一些問題。Ansible高級首席軟件工程師James Cammarata就這些兼容性問題同InfoQ分享了他的觀點(diǎn):
我認(rèn)為,許多用戶不會受API變化的影響,將插件移植到新API非常簡單。困難之處在于編寫可以完美兼容兩個API版本的插件,如果有需要,我們將來可能會解決那個問題。
目前,針對引入動態(tài)include所產(chǎn)生的問題,我們正在尋找一種解決方案,很可能包含在2.1版本中(不過,如果我們覺得合適的話,我們可能會更早地引入)。
Red Hat在2015年10月收購了Ansible公司,那時,2.0 beta版本剛剛發(fā)布了沒有幾天。InfoQ就Red Hat對這個新版本的影響請教了Cammarata:
Red Hat沒有對2.0版本提出任何意見。正如你看到的那樣,在交易完成之前的一段時間里,我們一直忙于交易,當(dāng)我們覺得Ansible已經(jīng)準(zhǔn)備好時就發(fā)布了。
查看英文原文:Ansible 2.0 Generally Available Short After Red Hat Acquisition