自動化運維工之Ansible(1)
1.1 ansible簡介
1.1.1 、Ansible軟件介紹:
Ansible提供一種最簡單的方式用於發布、管理和編排計算機系統的工具,可在數分鐘內搞定。Ansible由Python語言開發, 默認通過 SSH 協議管理機器。只要ssh連接正常被控制節點不需要安裝任何工具,就可以實現遠程連接執行任何操作支持多節點發布、遠程任務執行。Ansible可以實現批量系統配置、批量軟件部署、批量文件拷貝、批量運行命令等功能。
Ansible的工作具有等冪性,Ansible在控制端只需要告訴監控端的期望狀態就可以實現批量部署。
1)冪等性不會重復執行相同的指令。例如不會重復安裝軟件
2)期望狀態只需要告訴被監控端的期望狀態
官網:http://www.ansible.com/home
官網文檔:http://docs.ansible.com/ansible/index.html
Github地址:https://github.com/ansible
1.1.2 、Ansible軟件特點:
- q 不需要單獨安裝客戶端(no agents),基於系統自帶的ssh服務,sshd就相當於ansible的客戶端
- q 不需要服務端(no servers)
- q 需要依靠大量的模塊實現批量管理
- q 配置文件/etc/ansible/ansible.cfg
1.1.3 、ansible基本結構
ansible是自動化運維工具,基於Python開發,集合了眾多運維工具(puppet、cfengine、chef、func、fabric)的優點,實現了批量系統配置、批量程序部署、批量 運行命令等功能。Ansible所有的工作都是基於模塊實現的,Ansible本身並沒有批量部署的能力,真正具有批量部署的是Ansible所運行的模塊,Ansible只是提供了一種框架。基本的框架及組件構成如下:
(1)、連接插件connectionplugins:負責和被監控端實現通信
(2)、hostinventory:指定操作的主機,是一個配置文件裏面定義監控的主機
(3)、各種模塊核心模塊、command模塊、自定義模塊
(4)、借助於插件完成記錄日誌郵件等功能
(5)、playbook:劇本執行多個任務時,非必需可以讓節點一次性運行多個任務。
1.1 ansible安裝
1.1.1 、安裝前準備:
#本機環境
[root@m01 ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[root@m01 ~]# uname -r
2.6.32-696.el6.x86_64
[root@m01 ~]# uname -m
x86_64
1.1.2 、安裝ansible
服務端安裝軟件:
#更改yum源:
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
說明:ansible軟件安裝需要epel源
yum -y install ansible <<-ansible軟件安裝
被管理端安裝軟件:
yum -y install libselinux-python #libselinux是selinux安全插件,如果關閉selinux可以不裝
1.1.3 、ansible基礎配置
配置文件列表:
[root@m01 ~]# tree /etc/ansible/
/etc/ansible/ ├── ansible.cfg #ansible配置文件 ├── hosts #被ansible管理的主機名單(分組) └── roles 1 directory, 2 files #目錄查看: rpm –ql ansible /etc/ansible/ #配置文件目錄 /usr/bin/ #執行文件目錄 /usr/lib/pythonX.X/site-packages/ansible/ # Lib庫依賴目錄 /usr/share/doc/ansible-X.X.X/ # Help_doc文檔目錄 /usr/share/man/man1/ # Man文檔目錄 #ansible幫助 ansible-doc -l ansible-doc -s 模塊名稱 編輯ansible的主機配置文件hosts,添加主機組模塊[web]
[root@m01 ~]# cp /etc/ansible/hosts{,.bak} #改前做備份是個好習慣
[root@m01 ~]# tail -5 /etc/ansible/hosts
[web] 172.16.1.31 172.16.1.41 172.16.1.7 172.16.1.8 註:如果沒有設置ssh密鑰連接,ansible 無法正常管理模塊中的服務器,解決方法如下: 172.16.1.7 ansible_ssh_user=root ansible_ssh_pass=登錄密碼 172.16.1.8 ansible_ssh_user=root ansible_ssh_pass=登錄密碼 命令說明: ansible_ssh_user:ssh連接的用戶名 ansible_ssh_pass:ssh連接的密碼 ansible.cfg配置文件 [defaults] hostfile = /etc/ansible/hosts #主機配置文件位置 remote_user = root #遠程登錄用戶 private_key_file=/root/.ssh/id_rsa #密鑰存放位置 說明:測試使用不建
自動化運維工之Ansible(1)