1. 程式人生 > >自動化運維-Ansible(第一部)

自動化運維-Ansible(第一部)

eno 一個 什麽是 準備 vpd -- p地址 自動化運維 cfengine

前言

什麽是自動化運維?

  1. 現如今的 IT 運維已經成為IT服務內涵中重要的組成部分。面對越來越復雜的業務,面對越來越多樣化的用戶需求,不斷擴展的IT應用需要越來越合理的模式來保障IT服務能靈活便捷、安全穩定地持續保障,這種模式中的保障因素就是IT運維(其他因素是更加優越的IT架構等)。
  2. 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:指定操作的主機,是一個配置文件裏面定義監控的主機;

(3)、各種模塊核心模塊、command模塊、自定義模塊;
(4)、借助於插件完成記錄日誌郵件等功能;
(5)、playbook:劇本執行多個任務時,非必需可以讓節點一次性運行多個任務。

Ansible的作用

  1. 比如:讓你在100臺服務器上搭建LAMP,可以用Ansible解決
  2. 比如:讓你拷貝一個文件到這100臺服務器,可以用Ansible解決
  3. 比如:讓你對這100臺服務器同時上線服務,可以用Ansible解決
  4. 當然,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(第一部)