一、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 。
1.1先解決依賴關係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
[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環境,被控端無須做任何操作,...