01 ansible的基本介紹

一、現有的企業服務器環境

  在如今的企業中,特別是互聯網公司,他們的業務量衆多;好比負載均衡服務器、web服務器、動態解析(php)服務器、數據庫(mysql)服務器以及網站緩存服務器,等等;php

  例如:一個hadoop集羣就有上前臺的服務器;這樣的話,如何批量管理這些服務器是一個很大的問題;python

  第二個問題,爲了提升管理效率,必須把服務器的基礎環境設施配置好,就好像高速公路同樣,若是不平,則汽車的速度也沒法提起來;mysql

  因此,咱們首先須要一個批量化管理系統程序,其次,系統的硬件設備不能相差太大;web

二、運維工做基本介紹

  想要作批量化管理,咱們首先就要知道,那些事情須要進行批量操做;基本上,不少的運維工做都是須要進行,或者說都是能夠進行批量化操做的;算法

  整體來講,運維人員包括的基本工做有:sql

    一、系統安裝(包括物理機和虛擬機) 數據庫

  物理機經過PEX 或則要求廠家安裝
  虛擬機 則是經過glance 鏡像模板這種技術來實現(克隆)

    二、程序包的安裝bootstrap

      對程序進行配置,知足使用者的需求,而後須要啓動服務,保證服務正常運行;   api

    三、程序發佈緩存

      這裏的程序通常指的是開發人員開發的程序代碼,運維人員須要將其在生產環境下面進行部署與配置;如今程序更新、且如今都是以敏捷模式開發,每週都須要更新一次,並部署到生產環境下;

      一樣的web頁面、遊戲的代碼也是如此,且遊戲代碼更新較爲頻繁,且更多的是在晚上進行代碼部署,這個時候的流量會比較小,相對的影響也會比較小一點;

    四、監控

      這裏的監控操做就較爲複雜,除了系統的正常運行之外;咱們還須要去監控服務的正常運行;服務器CPU、內存的使用狀況;網絡設備的運行狀況;帶寬流量的佔用狀況等等;

      同時,若是監控中出現了錯誤,咱們須要對應的作出一些對應的操做!

 

  基於以上四點,咱們大體將運維工做氛圍三個層面:

  在系統操做層面上(OS Provisioning),咱們須要安裝好操做系統;對於物理機器,咱們可使用PXE、Cobbler、kickstack來實現服務器的批量部署;而對於虛擬機實例,咱們則使用各類雲管理工具(雲stack)來實現批量安裝,經過定製glance,或者說是image templates經過鏡像文件來啓動虛擬機;

  服務操做層面上(configration),咱們使用puppet工具(ruby開發的一款自動化運維工具)、saltstack(python開發一款自動換運維工具)、chef、cfengine等軟件程序來實現服務安裝、服務配置與服務啓動;

  批量操做層面(command and control),fabric(python研發的一個命令行工具)。在規模稍大的公司裏面,都會本身研發批量管理工具,其中藍鯨就是騰訊本身的自動化運維工具; 

三、ansible的基本介紹

3.一、ansible的歷史

  Ansible的第一個版本是0.0.1,發佈於2012年3月9日,其做者兼創始人是Michael DeHaan。Michael DeHaan曾經供職於Puppet Labs、RedHat、Michael,在配置管理和架構設計方面有豐富的經驗。

  其在RedHat任職期間主要開發了Cobble,經歷了各類系統簡化、自動化基礎架構操做的失敗和痛苦,在嘗試了Puppet、Chef、Cfengine、Capistrano、Fabric、Function、Plain SSH等各式工具後,決定本身打造一款能結合衆多工具優勢的自動化工具,Ansible由此誕生。

3.二、ansible的特色

  一、平緩的入門曲線,ansible簡單易學;

  二、無須要bootstrapping(這是一種重複抽樣的算法)功能;

  三、ansible使用模式是一種非有效的無環圖的形式;

  四、無代理端(no agents);

  五、沒有服務端,不是C/S架構的,直接裝上ansible服務,就能夠對服務器進行控制;

  六、不依賴額外的PKI機制;

  七、ansible是一種模塊化的結構,須要什麼功能,插入或者調用什麼模塊便可;

  八、使用YAML模板語言文件;YAML能夠用來編寫playbook,經過playbook來實現各類功能,若是功能較爲負載,須要多個playbook來協調完成,則須要使用roles來指定各個playbook之間的關係;

  九、默認使用ssh來進行服務器之間的互通;

  十、強大的任務編排工具,相似於kubernetes;

3.三、ansible的工做原理

  ansible包含了衆多自動化工具的優勢;

 

  其中,在系統層面上有紅帽的衛星服務,須要購買(不多有人使用),還有cobbler、func實現系統的統一安裝與管理;

  其次,在配置層面上面具備cfengin和puppet,以及chef的配置功能;

 

  ansible又憑什麼來接受自動化平臺管理呢?其實,在系統管理上有兩種方式,以一種是有agent端的,一種是沒有agent端的;

  有agent端的:例如puppet、func都是須要安裝agent進行管理,這種管理方式相對而言比較麻煩,可是比較穩定;

  無agent端的(agentless):例如ansible、fabirc,無agent端的管理程序能夠經過ssh來進行程序管理,這時候就存在一個問題,咱們須要擁有root權限,若是沒有root權限就須要經過sudo來提權,從而才能達到對其餘服務器進行管理的目的;

  

  相對而言,有agent端的程序更加安全,這一點agentless是不具有的;因此,ansible的管理工具對安全提出了必定的挑戰,客戶端須要有服務器端的祕鑰,這樣若是服務器端被人攻破,則全部的服務器都會很危險;

  因此,ansible使用ssh密碼登陸的方式來進行管理,這樣若是被管理端沒有獲取公鑰,則就沒法被加入到被管理的服務器羣中來,也不會被攻破了;

3.四、ansible的架構

  ansible屬於一種模塊化架構;全部的模塊都與ansible主模塊相連,以下圖:

 

   除了主核心模塊--ansible外,還包括一些其餘的模塊,例如:core modules(核心模塊)、costome modules(自定義模塊)、plugins(第三方插件)、connection plugins(連接插件)、host inventory(主機清單)、playbooks(劇本);

  其中core modules和costome modules指定了一系列的操做動做;

  playbooks則是經過YAML語言將模塊調用起來,進行編排,按照必定的順序來執行相應的操做;

  而host inventory則指定了清單列表,指示了什麼機器要被進行playbook的操做;

  connection plugins則用來關聯被管理的主機;

四、ansible的安裝與基本用法

  yum install ansible -y

  ansible的主配置文件

    /etc/ansible/ansible.cfg

    /etc/ansible/hosts

  ssh的無祕鑰認證

  ansible-doc的基本用法

相關文章
相關標籤/搜索