天天看點

《Ansible權威指南 》一 第一篇 Part 1 基礎入門篇

本節書摘來自華章出版社《ansible權威指南 》一書中的第1章,第1.1節,李松濤 魏 巍 甘 捷 著更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

基礎入門篇

第1章 ansible基礎入門

第2章 ansible基礎元素介紹

第3章 ansible ad-hoc指令集

第4章 playbook快速入門

第5章 ansible playbook拓展

“未來主體是傳統行業利用網際網路技術,以雲端用人工智能的方式處理大資料”,在騰訊“雲+未來”技術峰會上,馬化騰這樣形容未來。15年前,電腦還隻是少數人的專屬,那時的網吧還很火,還沒人知道“網咖”是什麼。而現在人手一部智能手機,物聯網更是讓日常生活中的普通家電也能在網際網路占據一席之地。這一切都推動着網際網路如火如荼發展,it技術的發展更是日新月異,it工種的分類日益精細專業化。

從早期all in one(所有應用部署在一台伺服器上)的簡單應用,到後期叢集、高可用、緩存、消息隊列、配置中心、主從分離、負載均衡、大資料存儲等尖端技術的複雜應用,對運維的技術專業度和綜合技能要求越來越高,運維的傳遞标準不再以周或天為機關,而是以分鐘為機關。在現在是如此,在未來更是如此。運維不再如早期一樣,手動一台台地登入伺服器、部署應用配置環境、手動傳遞(諸如亞馬遜、google等巨型企業早已實作自動擴縮容,配置應用自動化,流程自動傳遞等功能)。該方式耗時耗力,很難避免人為因素的錯誤,最主要的是這些重複手工勞動無法讓運維有更大的價值釋放,這一切都是不合理的,需要有更好的解決方式。

相信看到這裡,大家都明白,我們需要一套自動化管理工具來幫助運維更高品質、更有效地完成手頭工作,以證明運維能創造的價值不止于此,況且生活不止眼前的苟且,還有詩和遠方,不是嗎?但當下saltstack、puppet、fabric、chef等自動化工具遍地開花,為什麼還要推薦ansible呢?讀完本章你會有些許想法,未來已來,隻是尚未流行。

随着移動互聯、物聯網、網際網路+、大資料、雲計算等大規模應用的催生推動,以及人們日常生活的網際網路化,網際網路的蓬勃發展不僅沖擊影響着整個經濟體,更對人們的生活理念影響深遠。在體驗到網際網路帶來的便利和舒适的同時,人們也不再滿足于“可以用”,而是要“用得爽”,在政策、需求、利益、趨勢等原因的刺激下,網際網路的發展速度可想而知。衆所周知,智能的背後意味着複雜,這一現象在網際網路的發展中展現得淋漓盡緻。在網際網路迅猛發展的同時,運維這個工種也從默默無聞的背景逐漸走向公衆視野,被更多的人所知曉。早期公司業務有數十台、上百台伺服器已經是非常龐大的規模,每個運維同時操作10~20台機器,忙碌地奔波于各電腦之間配置重新開機服務,數十人摩肩接踵的場面是何等壯觀。隻是每個人都在數十台機器上做同樣的修改、配置、操作,如何保證每台機器的操作都完全一樣呢?又如何保證其他所有人的操作都能準确無誤、沒有遺漏過失呢?更何況,随着網際網路的迅猛發展,一個公司擁有幾十台上百台機器早已不是稀奇事,巨型公司數以萬計的機器都不在話下,再沿用老一套辦法一台台地人工修改配置已然不現實,這該怎麼辦呢?相信此時你已然明白運維自動化具體是什麼了。簡單來講,運維自動化就是将日常重複性的工作通過規則設定使其遵循預先既定規則,在指定的範圍時間内自動化運作,但整個過程無需人工參與。而ansible正是幫助運維人員實作自動化的工具之一。

ansible是近年越來越火的一款運維自動化工具,其主要功能是幫忙運維實作it工作的自動化、降低人為操作失誤、提高業務自動化率、提升運維工作效率,常用于軟體部署自動化、配置自動化、管理自動化、系統化系統任務、持續內建、零當機平滑更新等。它豐富的内置子產品(如acl、command、shell、cron、yum、copy、file、user等,多達569個)和開放的api接口,同時任何遵循gpl協定的企業或個人都可以随意修改和釋出自己的版本。

ansible在其官網上定義如下:ansible is a radically simple it automation engine。即ansible是一款極其簡單的it自動化工具。這裡特别使用了radically simple來形容ansible的簡單程度,在0.x版本的ansible官網中,更“過分”地使用stupid simple來形容ansible是“令人發指的簡單”。在ansible官網的通篇文檔中也不時使用incredibly simples、keep it simple、power+simplicity等字眼,可見ansible這款自動化工具的設計非常注重simple的理念。但ansible的功能卻非常不簡單,完全沒有因為使用方式上的簡單而縮水,其自身内置子產品的數量達500多個,而且還在快速地增加新子產品,以下是這些子產品的覆寫面的大緻分類。

系統層:支援的系統有linux、windows、aix等,對應的子產品有acl、cron、pip、easy_install、yum、authorized_key等大量的内置子產品;

知名第三方平台支援:支援的雲平台有aws、azure、cloudf?lare、openstack、google、linode、digital ocean等,對應的子產品有ec2、azure_rm_deployment、cloudflare_dns、clc_aa_policy、glance_image、gc_storage、digital_ocean等;

虛拟化:vmware、docker、cloudstack、lxc、openstack等,對應的子產品有vmware_vmkernel、docker、cs_account、lxc_container、glance_image等;

商業化硬體:f5、asa、citrix、eos等,對應的子產品有bigip_facts、asa_acl、netscaler、eos_command等;

系統應用層:apache、zabbix、rabbitmq、svn、git等,對應的子產品有apache2_module、zabbix_group、rabbitmq_binding、subversion、git等。

github上有衆多開源愛好者為ansible貢獻功能子產品,這些子產品完全可以滿足日常工作所需。官方對子產品也從使用者角度進行詳細分類,如cloud modules(雲主機子產品)、clustering modules(叢集子產品)、commands modules(指令子產品)、database modules(資料庫子產品)等。

ansible名字其實是來源于其作者喜歡的一本書——奧森·斯科特·卡特的《安德的遊戲》,該書中ansible是一種能跨越時空的即時通信工具,使用ansible可以在相距數光年的距離遠端實時控制前線的艦隊戰鬥。michael dehaan希望借這個名詞比喻控制遠端大量的伺服器,是以便将自己的這款産品命名為ansible。

web界面是一款功能完善的管理工具的必備功能,tower是ansible的web化管理界面,但免費版的容量隻有10台主機,付費版則無容量限制。

繼續閱讀