因爲互聯網的快速發展致使產品更新換代速度逐漸加快,運維人員天天都要進行大量的維護操做,仍舊按照傳統方式進行維護會使得工做效率低下。部署自動化運維就成爲了首先,自動化運維可以幫助工程師儘量安全、高效的完成工做。自動化運維的工具通常分爲兩類:一類是須要使用代理工具,也就是基於專用的Agent程序來完成管理功能;另外一類是不須要管理工具,能夠直接基於SSH服務來完成管理功能。python
Ansible基於python開發,集合了衆多優秀運維工具的優勢,實現了批量運行命令、部署程序、配置系統等功能。默認經過SSH協議進行遠程命令執行或下發配置,無需部署任何客戶端代理軟件,從而使得自動化環境部署變得更加簡單。可同時支持多臺主機並行管理,使得管理主機更加便捷。
Ansible具備獨特的設計理念:mysql
- 安裝部署過程特別簡單,學習曲線很平坦;
- 管理主機便捷,支持多臺主機並行管理;
- 避免在被管理主機上安裝客戶代理,打開額外端口,採用無代理方式,只是利用如今的ssh後臺進程;
- 用於描述基礎架構的語言不管對機器仍是對人都是友好的;
- 關注安全,很容易對執行的內容進行審計、評估、重寫;
- 可以當即管理遠程被管理主機,不須要預先安裝任何軟件;
- 不單單支持Python,可運行使用任何動態語言開發的模塊;
- 非root帳號也能夠使用;
- 成爲最簡單、易用的IT自動化系統
systemctl stop firewalld setenforce 0
角色 | 系統版本 | IP地址 | 所用軟件 |
---|---|---|---|
管理主機 | CentOS-7-x86_64 | 172.16.10.34 | ansible 2.6.2 |
被管主機 | CentOS-7-x86_64 | 172.16.10.30 | \ |
被管主機 | CentOS-7-x86_64 | 172.16.10.38 | \ |
被管主機 | CentOS-7-x86_64 | 172.16.10.39 | \ |
yum install epel-release -y yum -y install ansible
將多臺主機添加到同一我的組中進行集中管理,在使用管理命令時只須要使用類名稱,便可管理整個類linux
cd /etc/ansible/ vim hosts [web] //被管理主機分類,名稱自定義 172.16.10.30 172.16.10.38 [mysql] 172.16.10.39
SSH以非對稱加密實現身份驗證。身份驗證有多種途徑,例如其中一種方法是使用自動生成的公鑰-私鑰對來簡單地加密網絡鏈接,隨後使用密碼認證進行登陸;另外一種方法是人工生成一對公鑰和私鑰,經過生成的密鑰進行認證,這樣就能夠在不輸入密碼的狀況下登陸。任何人均可以自行生成密鑰。公鑰須要放在待訪問的電腦之中,而對應的私鑰須要由用戶自行保管。認證過程基於生成出來的私鑰,但整個認證過程當中私鑰自己不會傳輸到網絡中。web
ssh-keygen -t rsa
ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.16.10.30 //依次修改IP,發送到三臺被管主機
ssh-agent bash ssh-add
以一條簡單命令測試是否成功,分別使用IP、組名、以及查看全部被管主機的時間sql
ansible 172.16.10.30 -m command -a 'date'
ansible web -m command -a 'date'
ansible all -m command -a 'date'