1. 程式人生 > >自動化運維工之Ansible(1)

自動化運維工之Ansible(1)

連接 blog mir spa yum源 多節點 功能 軟件 重復執行

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)