1. 程式人生 > >部署自動化運維服務——Ansible

部署自動化運維服務——Ansible

部署 python開發 生成密鑰 ssh-key 以及 幫助 img 運維人員 容易

由於互聯網的快速發展導致產品更新換代速度逐漸加快,運維人員每天都要進行大量的維護操作,仍舊按照傳統方式進行維護會使得工作效率低下。部署自動化運維就成為了首先,自動化運維能夠幫助工程師盡可能安全、高效的完成工作。自動化運維的工具一般分為兩類:一類是需要使用代理工具,也就是基於專用的Agent程序來完成管理功能;另一類是不需要管理工具,可以直接基於SSH服務來完成管理功能。

簡述Ansible

Ansible基於python開發,集合了眾多優秀運維工具的優點,實現了批量運行命令、部署程序、配置系統等功能。默認通過SSH協議進行遠程命令執行或下發配置,無需部署任何客戶端代理軟件,從而使得自動化環境部署變得更加簡單。可同時支持多臺主機並行管理,使得管理主機更加便捷。

Ansible具有獨特的設計理念:

  • 安裝部署過程特別簡單,學習曲線很平坦;
  • 管理主機便捷,支持多臺主機並行管理;
  • 避免在被管理主機上安裝客戶代理,打開額外端口,采用無代理方式,只是利用現在的ssh後臺進程;
  • 用於描述基礎架構的語言無論對機器還是對人都是友好的;
  • 關註安全,很容易對執行的內容進行審計、評估、重寫;
  • 能夠立即管理遠程被管理主機,不需要預先安裝任何軟件;
  • 不僅僅支持Python,可運行使用任何動態語言開發的模塊;
  • 非root賬號也可以使用;
  • 成為最簡單、易用的IT自動化系統

環境準備

  • 關閉防火墻及selinux防火墻
    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 \

部署ansible服務

安裝軟件

yum install epel-release -y
yum -y install ansible

配置主機清單

將多臺主機添加到同一個人組中進行集中管理,在使用管理命令時只需要使用類名稱,即可管理整個類

cd /etc/ansible/
vim hosts 
[web]            //被管理主機分類,名稱自定義
172.16.10.30
172.16.10.38
[mysql]
172.16.10.39

設置SSH無密碼登陸

SSH以非對稱加密實現身份驗證。身份驗證有多種途徑,例如其中一種方法是使用自動生成的公鑰-私鑰對來簡單地加密網絡連接,隨後使用密碼認證進行登錄;另一種方法是人工生成一對公鑰和私鑰,通過生成的密鑰進行認證,這樣就可以在不輸入密碼的情況下登錄。任何人都可以自行生成密鑰。公鑰需要放在待訪問的電腦之中,而對應的私鑰需要由用戶自行保管。認證過程基於生成出來的私鑰,但整個認證過程中私鑰本身不會傳輸到網絡中。

生成公私鑰

ssh-keygen -t rsa

技術分享圖片
技術分享圖片

下發公鑰到被管主機

ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]  //依次修改IP,發送到三臺被管主機

技術分享圖片

設置ssh自動代理,避免交互

ssh-agent bash
ssh-add

技術分享圖片

測試ansible是否搭建成功

以一條簡單命令測試是否成功,分別使用IP、組名、以及查看所有被管主機的時間

使用IP地址

ansible 172.16.10.30 -m command -a ‘date‘ 

技術分享圖片

使用組名

ansible web -m command -a ‘date‘

技術分享圖片

查詢所有被管主機

ansible all -m command -a ‘date‘

技術分享圖片

部署自動化運維服務——Ansible