Ansible安裝與配置(自動化運維管理工具)

原文鏈接:http://blog.csdn.net/xyang81/article/details/51568227

Ansible是一個簡單高效的自動化運維管理工具,用Python開發,能大批量管理N多臺機器,可以併發的在多臺機器上部署應用、安裝軟件、執行命令、配置和編排任務。

一、Ansible工作機制

ansible架構圖

從圖中可以看出ansible分爲以下幾個部份:

1> Control Node:控制機器
2> Inventory:主機清單,配置管理主機列表
3> Playbooks:劇本、任務編排。根據規則定義多個任務,模塊組織結構清晰,由ansible自動執行。
4> Modules(Core | Custom):模塊,用於執行某個具體的任務
5> connection plugin(連接插件):Ansible通過不同的協議連接到遠程主機上,執行指定的命令。默認採用ssh協議連接遠程主機。

二、Ansible執行流程

Ansible執行流程
簡單理解就是Ansible在運行時,首先讀取ansible.cfg中的配置,根據規則獲取Inventory中的管理主機列表,並行的在這些主機中執行配置的任務,最後等待執行返回的結果。

三、安裝Ansible

一臺控制主機:192.168.0.202

三臺管理主機:

  • 192.168.0.200
  • 192.168.0.201
  • 192.168.0.203

安裝要求:

  • 控制服務器:需要安裝 Python2.6/2.7
  • 管理服務器:需要安裝 Python2.4 以上版本,若低於 Python2.5 需要安裝 pythonsimplejson; 若啓用了 selinux,則需要安裝 libselinux-python。

本次安裝基於CentOS7系統環境、Python2.7.5、root用戶。

3.1、yum安裝(推薦)

yum install epel-release
yum install ansible

3.2、pip安裝

pip install ansible

注:pip方式安裝不會在/etc/ansible目錄下生成默認的相關配置文件

四、配置

控制主機:用於控制其它機器的主機
管理主機:被控制主機管理的主機

4.1、配置管理主機

vim /etc/ansible/hosts

在hosts文件中添加管理主機的IP地址列表:

配置管理主機

4.2、配置控制主機SSH密鑰

4.2.1、在控制主機中生成ssh密鑰對

ssh-keygen -t rsa

一路回車即可在$HOME/.ssh目錄下生成id_rsa和id_rsa.put私鑰和公鑰兩個文件。

注: 如果在生成密鑰的時候設置了密碼,ansible每次執行命令的時候,都會提示輸入密鑰密碼,可通過下面的命令記住密碼。

ssh-agent bsh
ssh-add ~/.ssh/id_rsa

4.2.2、將公鑰拷貝到管理主機中.ssh/authorized_keys文件中,實現免密碼登錄遠程管理主機

ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.200
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.201
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.203

注:ssh-copy-id命令會自動將id_rsa.pub文件的內容追加到遠程主機root用戶下.ssh/authorized_keys文件中。

4.2.3、ansible配置

vim /etc/ansible/ansible.cfg

1> 禁用每次執行ansbile命令檢查ssh key host
host_key_checking = False

2> 開啓日誌記錄
log_path = /var/log/ansible.log

3> ansible連接加速配置

[accelerate]
#accelerate_port = 5099
accelerate_port = 10000 
#accelerate_timeout = 30
#accelerate_connect_timeout = 5.0

# If set to yes, accelerate_multi_key will allow multiple
# private keys to be uploaded to it, though each user must
# have access to the system via SSH to add a new key. The default
# is "no".
accelerate_multi_key = yes

五、測試

最後測試下在三臺管理機器批量執行一個ping命令

 ansible all -m ping

結果如下:

ansible all -m ping運行結果

從上圖可以看出,在每臺管理機器上都成功執行了ping命令。


一些Ansible深入功能的學習資料:
http://blog.xiaorui.cc/category/ansible/
http://lixcto.blog.51cto.com/4834175/d-4
https://github.com/ansible/ansible-examples
http://rfyiamcool.blog.51cto.com/1030776/d-51
http://dl528888.blog.51cto.com/2382721/d-4/p-1
http://edu.51cto.com/course/course_id-2220.html
http://edu.51cto.com/course/course_id-2032.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章