ansible安裝部署

2021-07-30 13:16:13 字數 4123 閱讀 5820

一、ansible介紹

1、簡介

ansible是新出現的自動化運維工具,基於python開發,集合了眾多運維工具(puppet、cfengine、chef、func、fabric)的優點,實現了批量系統配置、批量程式部署、批量執行命令等功能。

ansible是基於模組工作的,本身沒有批量部署的能力。真正具有批量部署的是ansible所執行的模組,ansible只是提供一種框架。主要包括:

(1)、連線外掛程式connection plugins:負責和被監控端實現通訊;

(2)、host inventory:指定操作的主機,是乙個配置檔案裡面定義監控的主機;

(3)、各種模組核心模組、command模組、自定義模組;

(4)、借助於外掛程式完成記錄日誌郵件等功能;

(5)、playbook:劇本執行多個任務時,非必需可以讓節點一次性執行多個任務。

2、架構圖

ansible相關模組

核心:ansible

核心模組(core modules):這些都是ansible自帶的模組

擴充套件模組(custom modules):如果核心模組不足以完成某種功能,可以新增擴充套件模組

外掛程式(plugins):完成模組功能的補充

劇本(playbooks):ansible的任務配置檔案,將多個任務定義在劇本中,由ansible自動執行

連線外掛程式(connectior plugins):ansible基於連線外掛程式連線到各個主機上,雖然ansible是使用ssh連線到各個主機的,但是它還支援其他的連線方法,所以需要有連線外掛程式

主機群(host inventory):定義ansible管理的主機

特點:

1).不需要**,不需要客戶端

2).沒有伺服器端,使用時直接執行命令

3).不基於pki工作

4).基於模組工作

5).支援yaml定義劇本

6).預設基於ssh工作

7).可以實現多級指揮

二、工作原理

以上是從網上找到的兩張ansible工作原理圖,兩張圖基本都是在架構圖的基本上進行的拓展。從上面的圖上可以了解到:

1、管理端支援local 、ssh、zeromq 三種方式連線被管理端,預設使用基於ssh的連線---這部分對應基本架構圖中的連線模組;

2、可以按應用型別等方式進行host inventory(主機群)分類,管理節點通過各類模組實現相應的操作---單個模組,單條命令的批量執行,我們可以稱之為ad-hoc;

3、管理節點可以通過playbooks 實現多個task的集合實現一類功能,如web服務的安裝部署、資料庫伺服器的批量備份等。playbooks我們可以簡單的理解為,系統通過組合多條ad-hoc操作的配置檔案 。

三、安裝部署

1、安裝完ansible後,發現ansible一共為我們提供了七個指令:ansible、ansible-doc、ansible-galaxy、ansible-lint、ansible-playbook、ansible-pull、ansible-vault 。

ansible-galaxy install aeriscloud.docker

-downloading role 'docker', owned by aeriscloud

-downloading role from

aeriscloud/ansible-docker/archive/v1.0.0.tar.gz

-extracting aeriscloud.docker to /etc/ansible/roles/aeriscloud.docker

-aeriscloud.docker was installed successfully

1.1先解決依賴關係

[root@localhost ~]# yum install python-jinja2 pyyaml python-paramiko

python-babel python-crypto python-setuptools

1.2編譯安裝

[root@localhost ~]# unzip ansible-devel.zip

[root@localhost ~]# cd ansible-devel

[root@localhost ansible-devel]# python setup.py build

[root@localhost ansible-devel]# python setup.py install

遇到錯誤:error: setup script exited with error: command 『gcc』 failed with exit status 1

解決辦法:

yum install -y python-devel

再次python setup.py install後安裝成功;

1.3然後建立ansible目錄並將配置檔案複製到該目錄中:

[root@localhost ansible-devel]# mkdir /etc/ansible

[root@localhost ansible-devel]# cp -r examples/* /etc/ansible/

[root@localhost ansible-devel]# ls /etc/ansible/

ansible.cfg hosts

3、配置ansible

1.修改/etc/ansible/hosts檔案為

[root@localhost ansible]# cat hosts

[webservers]

node1.a.com

node2.a.com

hosts檔案定義了所能識別的所有主機,其內容:

1.1可以將所有主機寫入此檔案,那麼此後所做的操作就會影響所有寫入的主機;

1.2可以以[主機組名]的方式定義屬於同一組的所有主機,如定義[webservers]段,將所有的web主機的ip或者主機名寫入段中,此後就可以用ansible實施諸如servicehttpdstatus等僅對web主機所做的操作了,而其他主機則不會受影響,當然乙個組中的主機也可以在其他組中出現,不一定每個組中的主機都不相同;

1.3可以用萬用字元的方式定義,如node[1:3].a.com,表示定義了node1.a.com node2..a.com和node3.a.com三颱主機;

1.4可以直接寫入主機ip,也可以寫入主機名,但是必須保證能解析這些主機名;

2.配置主機互信

控制台主機是通過ssh區聯絡被控制主機的,那麼就需要實現主機互信使控制台主機的命令送到被控端去執行,避免每一次都要輸入密碼;

[root@localhost ~]# ssh-keygen -t rsa -f /root/.ssh/id_rsa -p 」

[root@localhost ~]# ssh-copy-id -i .ssh/id_rsa.pub node1

[root@localhost ~]# ssh-copy-id -i .ssh/id_rsa.pub node2

這裡因為/etc/hosts檔案所以能解析:

[root@localhost ~]# cat /etc/hosts

192.168.85.144 node1.a.com node1

192.168.85.145 node2.a.com node2

3.測試ansible能否執行

如檢視所有主機時間是否一致:

[root@localhost ~]# ansible all -a 『date』

node2.a.com | success | rc=0 >>

sat nov 28 20:28:21 cst 2015

node1.a.com | success | rc=0 >>

sat nov 28 20:28:21 cst 2015

使用 Ansible 安裝部署 TiDB

tidb 作為乙個分布式資料庫,在多個節點分別配置安裝服務會相當繁瑣,為了簡化操作以及方便管理,使用自動化工具來批量部署成為了乙個很好的選擇。ansible 是基於 python 研發的自動化運維工具,糅合了眾多老牌運維工具的優點實現了批量作業系統配置 批量程式的部署 批量執行命令等功能,而且使用簡...

ansible的安裝及部署

部署ansible 後記ansible是一款開源自動化平台,是乙個配置管理工具,自動化運維工具 ansible命令相當於linux命令 ansible是基於模組開發的,常用的20 30個 yaml語法是自帶語法 playbook 劇本 相當於指令碼 ansible roles 角色 一大堆指令碼 1...

第1天 Ansible安裝部署

ansible是乙個簡單的自動化引擎,可完成配置管理 應用部署 服務編排以及各種it需求。它是一款使用python語言開發實現的開源軟體,其依賴jinjia2 paramiko和pyyaml這幾個python庫。ansible安裝部署簡單,只需要再主控端部署ansible環境,被控端無須做任何操作,...