自動化運維工具 ansible詳解(基礎篇)

2021-09-28 13:29:04 字數 2467 閱讀 2314

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

ansible是基於 paramiko 開發的,並且基於模組化工作,本身沒有批量部署的能力。真正具有批量部署的是ansible所執行的模組,ansible只是提供一種框架。ansible不需要在遠端主機上安裝client/agents,因為它們是基於ssh來和遠端主機通訊的。ansible目前已經已經被紅帽官方收購,是自動化運維工具中大家認可度最高的,並且上手容易,學習簡單。是每位運維工程師必須掌握的技能之一。

ansible 系統由控制主機對被管節點的操作方式可分為兩類,即ad-hoc和playbook:

簡單理解就是ansible在執行時, 首先讀取 ansible.cfg 中的配置, 根據規則獲取 inventory 中的管理主機列表, 並行的在這些主機中執行配置的任務, 最後等待執行返回的結果

載入自己的配置檔案,預設/etc/ansible/ansible.cfg;

查詢對應的主機配置檔案,找到要執行的主機或者組;

載入自己對應的模組檔案,如 command;

通過ansible將模組或命令生成對應的臨時py檔案(python指令碼), 並將該檔案傳輸至遠端伺服器;

對應執行使用者的家目錄的.ansible/tmp/***/***.py檔案;

給檔案 +x 執行許可權;

執行並返回結果;

刪除臨時py檔案, sleep 0 退出;

yum install epel-release -y

yum install ansible –y

ansible 的配置檔案為/etc/ansible/ansible.cfg, ansible 有許多引數,下面我們列出一些常見的引數:

inventory = /etc/ansible/hosts #這個引數表示資源清單inventory檔案的位置

library = /usr/share/ansible #指向存放ansible模組的目錄,支援多個目錄方式,只要用冒號(:)隔開就可以

forks = 5 #併發連線數,預設為5

sudo_user = root #設定預設執行命令的使用者

remote_port = 22 #指定連線被管節點的管理埠,預設為22埠,建議修改,能夠更加安全

host_key_checking = false #設定是否檢查ssh主機的金鑰,值為true/false。關閉後第一次連線不會提示配置例項

timeout = 60 #設定ssh連線的超時時間,單位為秒

log_path = /var/log/ansible.log #指定乙個儲存ansible日誌的檔案(預設不記錄日誌)

在配置檔案中,我們提到了資源清單,這個清單就是我們的主機清單,裡面儲存的是一些 ansible 需要連線管理的主機列表。我們可以來看看他的定義方式:

green.example.com

blue.example.com

192.168.100.1

192.168.100.10

2、 定義乙個主機組[組名]把位址或主機名加進去

[mysql_test]

192.168.253.159

192.168.253.160

192.168.253.153

3、定義組內包含組

[web]

192.168.11.128

192.168.11.129

[db]

192.168.11.130

192.168.11.131

[webs:children]

webdb4、定義主機組的變數

[web:vars]

ansible_ssh_user=root

需要注意的是,這裡的組成員可以使用萬用字元來匹配,這樣對於一些標準化的管理來說就很輕鬆方便了。

我們可以根據實際情況來配置我們的主機列表,具體操作如下:

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

[web]

192.168.37.122

192.168.37.133

#1.生成私鑰

[root@server ~]# ssh-keygen

#2.向主機分發私鑰

[root@server ~]# ssh-copy-id [email protected]

[root@server ~]# ssh-copy-id [email protected]

ansible 自動化運維工具

ansible 自動化運維工具 批量管理 python開發 無客戶端 基於ssh服務 22 安裝 1.ansible包在擴充套件源,epel release yum y install epel release yum repolist 2.安裝,ansible yum y install ansi...

自動化運維工具 ansible

ansible ansible 一 簡介和部署 ansible 二 主機清單管理 ansible 三 配置和命令集 ansible 四 常用模組 ansible 五 palybooks劇本 ansible 彙總 ansible 中文權威指南 本部落格 至 小左先森的部落格 ansible ansib...

ansible 自動化運維工具

ansible是新出現的自動化運維工具,基於python開發,集合了眾多運維工具 puppet cfengine chef func fabric 的優點,實現了批量系統配置 批量程式部署 批量執行命令等功能。ansible是基於模組工作的,本身沒有批量部署的能力。真正具有批量部署的是ansible...