自動化運維-Ansible(第一部)
阿新 • • 發佈:2018-10-17
eno 一個 什麽是 準備 vpd -- p地址 自動化運維 cfengine 前言
(3)、各種模塊核心模塊、command模塊、自定義模塊;
(4)、借助於插件完成記錄日誌郵件等功能;
(5)、playbook:劇本執行多個任務時,非必需可以讓節點一次性運行多個任務。
什麽是自動化運維?
- 現如今的 IT 運維已經成為IT服務內涵中重要的組成部分。面對越來越復雜的業務,面對越來越多樣化的用戶需求,不斷擴展的IT應用需要越來越合理的模式來保障IT服務能靈活便捷、安全穩定地持續保障,這種模式中的保障因素就是IT運維(其他因素是更加優越的IT架構等)。
- IT運維自動化是一組將靜態的設備結構轉化為根據IT服務需求動態彈性響應的策略,目的就是實現IT運維的質量,降低成本。可以說自動化一定是IT運維最高層面的重要屬性之一,但不是全部。
下面 我們看看我們運維工程師需要幹的事情
上圖就是運維人員需要幹的事情:N多開發工程師開發出一個遊戲,經過不斷完善,終於OK了,N多個測試工程師測試這個遊戲有沒有問題,比如:bug、穩定性等,如果有就返工,如果沒有就是交給運維人員準備上線。
那麽問題來了,如果有成千上萬太服務器,要把服務挨個上線,那麽我們運維人員就要累死了。有沒有可以讓我們偷懶的方法呢?
什麽是 Ansible ?
1)ansible是新出現的自動化運維工具,基於Python開發,集合了眾多運維工具(puppet、cfengine、chef、func、fabric)的優點,實現了批量系統配置、批量程序部署、批量運行命令等功能。
2)ansible是基於模塊工作的,本身沒有批量部署的能力。真正具有批量部署的是ansible所運行的模塊,ansible只是提供一種框架。主要包括:
(1)、連接插件connection plugins:負責和被監控端實現通信;
(2)、host inventory:指定操作的主機,是一個配置文件裏面定義監控的主機;
(4)、借助於插件完成記錄日誌郵件等功能;
(5)、playbook:劇本執行多個任務時,非必需可以讓節點一次性運行多個任務。
Ansible的作用
- 比如:讓你在100臺服務器上搭建LAMP,可以用Ansible解決
- 比如:讓你拷貝一個文件到這100臺服務器,可以用Ansible解決
- 比如:讓你對這100臺服務器同時上線服務,可以用Ansible解決
- 當然,Ansible 的作用不止於此。只是舉例說明具體幹嘛用的!
Ansible的特性
* 模塊化:調用特定的模塊,完成特定的任務 * 有Paramiko、PyYAML、Jinja2(模板語言)三個關鍵模塊 * 支持自定義模塊 * 基於Python語言實現 * 部署簡單,基於python和ssh(默認已安裝),angentless * 安全,基於openSSH * 支持playbook編排任務 * 冪等性:一個任務執行1次和執行n遍效果一樣,不會因為重復執行帶來意外情況 * 無需代理,不需要PKI (ssl) * 可使用任何編程語言寫模塊 * YAML格式,編排任務,支持豐富的數據結構 * 較強大的多層解決方案
Ansible架構
Ansible 工作原理
Ansible 安裝
規劃表格:
IP地址 | 系統版本 | 功能 |
---|---|---|
192.168.154.131 | CenOS 7.4 | Ansible主控端 |
192.168.154.132 | CenOS 7.4 | 被控制端 |
192.168.154.133 | CenOS 7.4 | 被控制端 |
開始部署:
1·安裝epel源、Ansible
[root@mange ~]# yum install epel-release -y
[root@mange ~]# yum install ansible -y
2·修改 Host 主機清單
[root@mange ~]# vim /etc/ansible/hosts
添加內容如下:
[webserver] //添加組
192.168.154.132 //組裏面添加被控制端的IP
[mysql]
192.168.154.133
3·查看 Ansible 版本等信息
[root@mange ~]# ansible --version
4·設置ssh無密碼登陸
[root@mange ~]# ssh-keygen -t rsa
[root@mange ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.154.132
[root@mange ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.154.133
5·到此 Ansible 部署完成,看看基礎操作
[root@mange ~]# ansible all -m command -a ‘date‘ ------(查看兩臺主機的時間)
192.168.154.132 | CHANGED | rc=0 >> //顯示第一臺被控主機時間
2018年 10月 17日 星期三 16:01:55 CST
192.168.154.133 | CHANGED | rc=0 >> //顯示第二臺被控主機時間
2018年 10月 17日 星期三 16:01:55 CST
6·以上命令參數解釋:
all :是代表你 /etc/ansible/hosts 裏的所有IP主機,當然也可以跟具體IP
-m:指定模塊,command 模塊是默認模塊,之後會詳解更過模塊功能
-a:指定具體你要在被控制端的操作
Ansible 總結
* Ansible 是基於 “ 模塊 ” 完成各種任務的,Ansible就相當於一個框架
* 所以學習Ansible的重點是學習它裏面的功能模塊
* 在配置過程中我們可以看出來Ansible是一款通過SSH協議就可以遠程執行或下發配置的自動化環境部署軟件!
* 在Ansible 架構圖中可以看出它包括:Ansible core核心引擎、Host inventory 主機清單、Connect plugin 連接插件、Playbook劇本、Core modules 核心模塊,Custom modules 自定義模塊這及部分組成。
自動化運維-Ansible(第一部)