近日,ansible公司正式釋出了ansible v2.0。在這個版本中,該公司在努力保持向後相容現有playbook的同時完成了了不起的重構工作。釋出聲明中包含多項改進,如塊内異常處理,針對不同的任務引入新的執行政策,以及通過子產品改進同其他服務的連接配接。
從這個版本開始,使用者可以在他們的playbook裡定義塊了。任務塊允許使用者采用同許多程式設計語言一樣的異常處理方式(例如python的try/except/finally結構)。此外,使用者可以借助不同的屬性(如标簽和條件)分組管理相關任務。
該版本還包含一種控制playbook執行的新方法。ansible定義了三種playbook政策,使使用者可以配置不同任務在目标主機上的執行方式。現有的預置腳本遵循“線性政策”,在繼續執行下個任務之前,一個任務會在所有主機上執行。“自由政策”允許每個主機盡快執行完自己的playbook,而不需要等待所有其他的主機。“序列”政策保證一組主機在另一組主機開始前完成本組的任務。另外,使用者可以通過插件提供自己的政策。
該版本新增了200多個子產品,改進并擴充了對現有平台的支援,如amazon web services、vmware、microsoft windows、docker。有一組全新的子產品簡化了openstack的管理。該版本中還出現了一個新的docker插件。
插件api的變化迫使開發人員在更新到v2.0時必須檢查他們的插件。playbook中新增的動态include也可能會産生一些問題。ansible進階首席軟體工程師james cammarata就這些相容性問題同infoq分享了他的觀點:
我認為,許多使用者不會受api變化的影響,将插件移植到新api非常簡單。困難之處在于編寫可以完美相容兩個api版本的插件,如果有需要,我們将來可能會解決那個問題。
目前,針對引入動态include所産生的問題,我們正在尋找一種解決方案,很可能包含在2.1版本中(不過,如果我們覺得合适的話,我們可能會更早地引入)。
red hat在2015年10月收購了ansible公司,那時,2.0 beta版本剛剛釋出了沒有幾天。infoq就red hat對這個新版本的影響請教了cammarata:
red hat沒有對2.0版本提出任何意見。正如你看到的那樣,在交易完成之前的一段時間裡,我們一直忙于交易,當我們覺得ansible已經準備好時就釋出了。
本文轉自d1net(轉載)