自動化工具Ansible

  • 2019 年 12 月 12 日
  • 筆記

1.

Ansible架構模式

Ansible是由控制機和被管理機組成:控制機是用來安裝Ansible工具軟體和執行指令的伺服器,被管理機是指運行業務的伺服器,由控制機通過SSH進行管理。

2

Ansible管理方式

Ansible是一個模型驅動管理器,支援多節點發布,遠程任務執行,默認使用SSH遠程連接,無需在被管理節點上安裝附加軟體。

3

Ansible系統架構

Ansible集合了許多運維工具,實現了批量系統配置、批量程式部署,批量運行命令等功能,Ansible是基於模組工作的,本身沒有批量部署的能力,真正幹活的Ansible所運行的模組,Ansible只提供一種框架。

4

Ansible功能特性

  • 應用程式碼自動化部署;
  • 系統管理配置自動化;
  • 支援雲計算、大數據平台;
  • 輕量級無需安裝agent;
  • 批量任務執行可用腳本無需分發到遠程;
  • 支援非root用戶和sudo;

5

Ansible任務執行流程

Ansible系統由控制主機對被管節點的操作方式可分為兩類(ad-hoc)和(playbook)

  • ad-hoc支援單個模組,支援批量執行單條命令;
  • playbook通過多個task集合完成一類功能,可以理解為通過組合多條ad-hoc操作的配置文件;

6

Ansible安裝配置

Ansible的安裝方式非常靈活,滿足各種環境的部署需求。

1

YUM安裝

安裝epel作為Ansible的默認yum源

#以CentOS7.2安裝阿里的epel為例  rpm -Uvh https://mirrors.aliyun.com/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm

其他源可參考:

Linux中的官方源鏡像源匯總

安裝Ansible

yum install -y ansible

2

Ansible配置參數

配置文件在:/etc/ansible/ansible.cfg

參考:http://www.ansible.com.cn/docs/intro_configuration.html#config-values-by-section

inventory

這個參數表示資源清單 . inventory文 件 的 位 置 , 資源清單就是 一些Ansible需要連接管理的主機列表 。

實例如下:

inventory == /etc/Ansible/hosts

library

Ansible的操作動作,無論是本地或遠程,都使用一小段程式碼來執行,這小段程式碼稱為模組 , 這個library參數就是指向存放Ansible模組的 目錄 。

實例如下:

library = /usr/share/Ansible

Ansible支援多個記錄方式,只要用W號(:)隔幵就可以,同時也會檢査當前執行playbook位罝下的•/library目錄。

forks

默認悄況下Ansible最多能有多少個進程同時丁-作,默認設置敁多5個 進程並進行理 。具體需要設置多少個,可以根據控制主機的性能和被管節點的數詁來確定,可能是50或100,默認值5是非常保守的設置。

實例如下:

forks = 5

sudo_user

這是設罝默認執行命令的用戶,也可以在playbook中重新設置這個參數。

實例如下:

sudo_user = root

remote_port

這是指定連接被管節點的管理埠,默認是22。除非設置了特殊的SSH端門.不然這個參數一般是不需要修改的。

實例如下:

remote_port = 22

host_key_checking

這是設置是否檢査SSH主機的密鑰。可以設置為True或False。

實例如下:

host_key_checking = False

timeout

這是設置SSH連接的超時間隔,單位是秒。

實例如下:

timeout = 60

log_path

Ansible系統默認是不記錄日誌的,如果想把Ansible系統的輸出記錄 到日誌文件,需要設置log_ path指定一個存儲Ansible日誌的文件 。

實例如下:

log__path = /var/log/Ansible. log

注意:

執行Ansible的用戶需要有寫入日誌的許可權,模組將會調用被管節點的syslog來記錄,口令是不會出現在日誌中的。