一個由 Python 編寫的強大的配置管理解決方案。儘管市面上已經有很多可供選擇的配置管理解決方案,但他們各有優劣,而 ansible 的特點就在於它的簡潔。 讓 ansible 在主流的配置管理系統中與眾不同的一點便是,它並不需要你在想要配置的每個節點上安裝自己的組件。同時提供的一個優點在於,如果 ...
一個由 Python 編寫的強大的配置管理解決方案。儘管市面上已經有很多可供選擇的配置管理解決方案,但他們各有優劣,而 ansible 的特點就在於它的簡潔。
讓 ansible 在主流的配置管理系統中與眾不同的一點便是,它並不需要你在想要配置的每個節點上安裝自己的組件。同時提供的一個優點在於,如果需要的話,你可以在不止一個地方控制你的整個基礎架構。最後一點是它的正確性,或許這裡有些爭議,但是我認為在大多數時候這仍然可以作為它的一個優點。說得足夠多了,讓我們來著手在 RHEL/CentOS 和基於 Debian/Ubuntu 的系統中安裝和配置 Ansible。
線上教程參考:
一、基礎介紹
1、簡介
ansible是新出現的自動化運維攻擊,基於Python開發,集合了從多運維工具(puppet、cfengine、chef、func、fabric)的優點,實現了批量系統配置、批量程式部署、批量運行命令等功能。ansible是基於模塊工作的,本身沒有批量部署的能力。真正有批量部署的是ansible鎖運行的模塊ansible只是提供一種框架。主要包括:
(1)、連接插件connection plugins:負責和被監控端實現通信;
(2)、host inventory:指定操作的主機,是一個配置文件裡面定義監控的主機;
(3)、各種模塊核心模塊、command模塊、自定義模塊;
(4)、藉助於插件完成記錄日誌郵件等功能;
(5)、playbook:劇本執行多個任務時,非必需可以讓節點一次性運行多個任務。
2、總體架構
3、特性
(1)、no agents:不需要在被管控主機上安裝任何客戶端;
(2)、no server:無伺服器端,使用時直接運行命令即可;
(3)、modules in any languages:基於模塊工作,可使用任何語言開發模塊;
(4)、yam1,not code:使用yam1語言定製劇本playbook;
(5)、ssh by default:基於SSH工作;
(6)、strong multi-tier solution:可實現多級指揮。
4、優點
(1)、輕量級,無需在客戶端安裝agent,更新時,只需要在操作機上進行一次更新即可;
(2)、批量任務執行可以寫成腳本,而且不用分發到遠程就可以執行;
(3)、使用python編寫,維護更簡單,ruby語法過於複雜;
(4)、支持sudo。
5、任務執行流程
二、Ansible基礎安裝與配置
1、Ansible基礎安裝
(1)、python2.7安裝
註:將python頭文件拷貝到標準目錄,以避免編譯ansible時,找不到所需的頭文件
1
2 [root@Wulaoer Python-2.7.8]# cd /usr/local/include/python2.7/
[root@Wulaoer python2.7]# cp -a ./* /usr/local/include/
註:備份舊版的python,並符號鏈接新版的python
註:修改yum腳本,使其指向舊版本的python,已避免其無法運行
3 [root@Wulaoer bin]# vi /usr/bin/yum
#!/usr/bin/python –> #!/usr/bin/python2.6
(2)、setuptools模塊安裝
(3)、pycrypto模塊安裝
(4)、PyYAML模塊安裝
(5)、Jinja2模塊安裝
(6)、paramiko模塊安裝
(7)、simplejson模塊安裝
(8)、ansible安裝
2、Ansible配置
(1)、SSH免密鑰登錄設置
生成公鑰私鑰
註:寫入新人文件(將 /root/.ssh/id_rsa_storml.pub分發到其他伺服器,併在所有伺服器上執行如下指令)