因爲互聯網的快速發展致使產品更新換代的速度逐漸加快,這就致使運維人員的平常工做會大大增長,若是仍是按照傳統方式進行維護工做會使工做效率低下。此時,就須要部署自動化運維了,自動化運維會盡量安全、高效的完成運維人員的平常工做。mysql
自動化運維工具劃分爲兩類:一類是須要使用代理工具的,也就是基於專用的Agent程序來完成管理功能,如:Puppet、Func、Zabbix等;另外一類是不須要配置代理工具的,能夠直接基於SSH服務來完成管理功能,如:Ansible、Fabric等。web
Ansible是基於Python開發的,集合了衆多優秀運維工具的優勢,實現了批量運行命令、部署程序、配置系統等功能。默認經過ssh協議進行遠程命令執行或下發配置,無需部署任何客戶端代理軟件,從而使得自動化環境部署變得更加簡單。可同時支持多平臺主機並行管理,使得管理主機更加便捷。sql
以上就是Ansible基本構架組成,主要分爲六個部分:vim
Ansible core 核心引擎安全
Host inventory 主機清單:用來定義Ansible所管理的主機,默認是在Ansible的hosts配置文件中定義被管理主機,同時也支持自定義動態主機清單和指定其餘配置文件的位置。運維
Connection plugins 鏈接插件:負責和被管理主機實現通訊。除支持使用SSH鏈接被管理主機外,Ansible還支持其餘的鏈接方式,因此須要有鏈接插件將各個主機用鏈接插件鏈接到Ansible。ssh
Playbooks(yam1,jinja2) 劇本 : 用來集中定義Ansible任務的配置文件,即將多個任務定義在一個劇本中由Ansible自動執行,能夠由控制主機針對多臺被管理主機同時運行多個任務。ide
Core modules 核心模塊:是Ansible自帶的模塊,使用這些模塊將資源分發到被管理主機,使其執行特定任務或匹配特定的狀態。工具
Custom modules 自定義模塊:用於完成模塊功能的補充,可藉助相關插件完成記錄日誌、發送郵件等功能。插件
角色 | 主機名 | IP地址 | 組名 |
---|---|---|---|
控制主機 | CentOS7-1 | 172.16.10.138 | |
被管理主機 | CentOS7-2 | 172.16.10.147 | webserver |
被管理主機 | CentOS7-3 | 172.16.10.133 | mysql |
yum -y install epel-release
yum -y install ansible tree
ansible --version
tree /etc/ansible
vim /etc/ansible/hosts
[webserver] 172.16.10.147 #將第一臺被管理主機添加至webserver組 [mysql] 172.16.10.133 #將第二臺被管理主機添加至mysql組
ssh-keygen -t rsa ssh-copy-id root@172.16.10.147 ssh-copy-id root@172.16.10.133 ssh-agent bask ssh-add