Ansible 小手冊系列 一(介紹)

介紹


Ansible 是一個配置管理和應用部署工具,功能相似於目前業界的配置管理工具 Chef,Puppet,Saltstack。Ansible 是經過 Python 語言開發。Ansible 平臺由 Michael DeHaan 建立,他同時也是知名軟件 Cobbler 與 Func 的做者。Ansible 的第一個版本發佈於 2012 年 2 月,相比較其它同類產品來講,Ansible 仍是很是年輕的,但這並不影響他的蓬勃發展與你們對他的熱愛。python

Ansible 默認經過 SSH 協議管理機器,因此 Ansible 不須要安裝客戶端程序在服務器上。您只須要將 Ansible 安裝在一臺服務器,在 Ansible 安裝完後,您就能夠去管理控制其它服務器。不須要爲它配置數據庫,Ansible 不會以 daemons 方式來啓動或保持運行狀態。nginx

Ansible 的目標有以下:
• 自動化部署應用
• 自動化管理配置
• 自動化的持續交付
• 自動化的(AWS)雲服務管理。git

根據 Ansible 官方提供的信息,當前使用 Ansible 的用戶有:evernote、rackspace、NASA、Atlassian、twitter 等。github

Ansible是怎麼工做的


Paste_Image.pngweb

從上圖能夠看出,運行ansible的先決條件是,安裝ansible到管理節點,定義主機清單,並有一些playbooks定義。數據庫

讓咱們來看看咱們如何使用Ansible將咱們的Ubuntu虛擬機轉換爲Web服務器。json

您在管理節點上運行Ansible Playbook,它查看您在playbook中定義的命令參數,並通知咱們定位到網絡組中的節點。 Ansible而後讀取主機清單以查找分配給Web組的節點。在這一點上,Ansible已經準備好開始工做,因此它將經過ssh遠程鏈接到定義的機器,一般你會想要經過預共享密鑰創建一些類型的ssh信任,這樣你就沒必要在進行ssh登錄的時候輸入密碼。而後Ansible將開始逐步執行playbook中的任務,一次一個任務,從頂部到底部的順序遍歷它們,就像你手動登陸執行任務同樣。因此,它安裝軟件包,更新配置文件,使用git部署咱們的網站代碼,最後啓動咱們的Web服務。當Ansible很愉快的把一切都按預期的完成,你會獲得一個執行成功的狀態報告。vim

能夠用動圖說明下這次過程。windows

46-ansible-playbook-haproxy-nginx1.gif服務器

對管理主機的要求


目前,只要機器上安裝了 Python 2.6 或 Python 2.7 (windows系統不能夠作控制主機),均可以運行Ansible.
主機的系統能夠是 Red Hat, Debian, CentOS, OS X, BSD的各類版本,等等.

對節點主機的要求


一般咱們使用 ssh 與託管節點通訊,默認使用 sftp.若是 sftp 不可用,可在 ansible.cfg 配置文件中配置成 scp 的方式. 在託管節點上也須要安裝 Python 2.4 或以上的版本.若是版本低於 Python 2.5 ,還須要額外安裝一個模塊:

python-simplejson

Ansible 與其它配置管理的對比


選擇了目前幾款主流的與 Ansible 功能相似的配置管理軟件 Puppet、Saltstack,這裏所作的對比不針對各個軟件的性能做比較,只是對各個軟件的特性作個對比。


Puppet Saltstack Ansible
開發語言 Ruby Python Python
是否有客戶端
是否支持二次開發 不支持 支持 支持
服務器與遠程機器是否相互驗證
服務器與遠程機器通訊是否加密 是,標準 SSL 協議 是,使用 AES 加密 是,使用 OpenSSH
平臺支持 支持 AIX、BSD、HP-UX、Linux、 MacOSX、Solaris、 Windows 支持 BSD、Linux、Mac OS X、Solaris、 Windows 支持 AIX、BSD、 HP-UX、 Linux、Mac OSX、Solaris
是否提供 web ui   提供 提供 提供,不過是商業版本
配置文件格式 Ruby 語法格式 YAML YAML
命令行執行 不支持,但可經過配置模塊實現 支持 支持

資源


官方文檔: http://docs.ansible.com/
中文文檔: http://www.ansible.com.cn/    http://ansible-tran.readthedocs.io/
Jinja2 中文文檔: http://docs.jinkan.org/docs/jinja2/
yaml語法: http://www.yaml.org/
書籍: https://www.ansible.com/ebooks   連接:http://pan.baidu.com/s/1qYazeos 密碼:28p2
ansible  examples :https://github.com/ansible/ansible-examples
ansible-vim: https://github.com/pearofducks/ansible-vim (能夠高亮顯示,語法檢查)

相關文章
相關標籤/搜索