ansible入門一(Ansible介紹及安裝部署)

本節內容:node

  • 運維工具
  • Ansible特性
  • Ansible架構圖和核心組件
  • 安裝Ansible
  • 演示使用示例

1、運維工具

做爲一個Linux運維人員,須要瞭解大量的運維工具,並熟知這些工具的差別,可以熟練運用這些工具去解決一些手動重複的勞動,一方面是避免人工操做失誤,另外一方面也能夠提升工做效率。同時還能將本身從這些重複的工做中解放出來,以便研究更新和更深的技術。shell

運維工具大致上能夠分爲3類:編程

  • OS Provisioning:提供操做系統安裝的。PXE,Cobbler(repository,distritution,profile)。
  • OS Config:cfengine、puppet、saltstack、chef、func、Task Excute工具(fabric、func、saltstack)
  • Deployment:capistranoc、fabric

而Ansible是一款較新的工具,能夠實現OS Config、Task Excute和Deployment。vim

運維工具實現遠程管理的兩種方式:api

  1. 有agent:puppet、saltstack、func
  2. agentless:ansible、fabric

 

2、Ansible特性

  • 學習曲線平緩;
  • 不須要agent;
  • 沒有有線狀態圖,沒有次序,咱們本身定義動做間的依賴關係就行,任何一個任務出錯會很快出錯,你能夠當即進行修改;
  • 沒有代理;
  • 沒有服務端;
  • 依賴ssh來工做,無需ssl,也就無需證書等功能;
  • 模塊可使用任何編程語言來編寫,包括shell腳本;
  • 默認使用ssh工做;
  • 支持多級的解決方案。

 

3、Ansible架構圖和核心組件

架構圖:架構

 ansible是Python編寫的,Python有一個模塊叫paramiko,paramiko組件可以實現並行地基於ssh協議遠程鏈接至各主機的庫。ansible就是用了paramiko。less

 

核心組件:運維

  • ansible core:ansible核心。
  • host inventory:主機池,或叫主機列表,主機歸檔文件。
  • core modules:ansible核心模塊。
  • custom modules:用戶能夠自定義模塊
  • playbook:將多個任務寫在一個yaml格式的配置文件中。支持使用Python的jinjia2來定義模板。同一個playbook應用帶同一臺主機上,不管你應用多少次,他們的結果都是相等的,不會重複執行。這種特性咱們稱爲冪等性。
  • connect plugins:鏈接插件
  • plugins:其餘的一些插件,好比email、logging等等。

 

4、安裝Ansible

能夠選擇源碼編譯安裝或者yum安裝。ansible的rpm包在epel源中,事先安裝好epel源。我這裏實驗環境是CentOS 7。ssh

安裝:編程語言

# yum install ansible -y

查看安裝的rpm包裏有哪些文件:

# rpm -ql ansible | more

ansible配置文件:/etc/ansible/ansible.cfg
inventory文件:/etc/ansible/hosts

 

5、演示使用示例

1.環境信息

主機名 操做系統版本 IP地址 安裝軟件
node1 CentOS 7.0 172.16.7.151 ansible-noarh-2.2.0.0-4.el7
node2 CentOS 7.0 172.16.7.152
node3 CentOS 7.0 172.16.7.153

 

 

 

 

2.配置Ansible主機登陸其餘主機使用密鑰登陸

因爲Ansible默認使用ssh管理主機,因此首先須要配置Ansible所在主機登陸其餘被管理主機不須要輸入密碼。在node1主機上執行以下命令:

[root@node1 ~]# ssh-keygen -t rsa -P ''
[root@node1 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.7.151
[root@node1 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.7.152
[root@node1 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.7.153

 

3.定義主機

每個主機可使用主機名,也可使用ip地址。也能夠把多個主機定義到一個組裏。好比:

[root@node1 ~]# vim /etc/ansible/hosts

 

4.使用模塊

Ansible是依賴模塊進行工做的,裏面有大量的模塊幫助咱們去完成任務。好比使用command模塊:

[root@node1 ~]# ansible 172.16.7.152 -m command -a "date"

如上,在執行任務時,能夠指定IP,也能夠指定組名,ansible有個默認的組叫all,表明/etc/ansible/hosts文件裏的全部主機。

 

列出當前主機可使用的ansible模塊:

[root@node1 ~]# ansible-doc -l

經常使用的模塊有:user、yum、copy、command等。若是想知道某個模塊怎麼使用的,好比想知道yum怎麼用:

[root@node1 ~]# ansible-doc -s yum

相關文章
相關標籤/搜索