自動化工具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
其他源可參考:
安裝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來記錄,口令是不會出現在日誌中的。