集中化管理平台Ansible介紹與YAML介紹

2021-09-11 18:28:56 字數 2538 閱讀 9777

一 中文社群

二 點睛

ansible(一種整合it系統的配置管理、應用部署、執行特定任務的開源平台,是ansibleworks公司名下的專案,該公司由cobbler及func的作者於2023年建立成立。ansible基於python語言實現,由paramiko和pyyaml兩個關鍵模組構建。

ansible具有如下特點:

ansible的架構圖如下,使用者通過ansible編排引擎操作公共/私有雲或cmdb(配置管理資料庫)中的主機,其中ansible編排引擎由 inventory(主機與組規則)、api、modules(模組)、plugins(外掛程式) 組成。

ansible與saltstack最大的區別是ansible無需在被控主機部署任何客戶端**,預設直接通過ssh通道進行遠端命令執行或下發配置;相同點是都具備功能強大、靈活的系統管理、狀態配置,都使用yaml格式 來描述配置,兩者都提供豐富的模板及api,對雲計算平台、大資料都有很好的支援。

ansible在github上的位址為 其中提供了不少配置例子供參考。

三 yaml語言

1 點睛

yaml是一種用來表達資料序列的程式語言,它的主要特點包括: 可讀性強、語法簡單明瞭、支援豐富的語言解析庫、通用性強等。 ansible與saltstack環境中配置檔案都以yaml格式存在,熟悉yaml結構及語法對我們理解兩環境的相關配置至關重要。

下面的示例定義了在 master的不同業務環境下檔案根路徑的描述:

file_roots: 

base: - /srv/salt/

dev: - /srv/salt/dev

prod: - /srv/salt/prod

2 塊序列描述

塊序列就是將描述的元素序列對映到python的列表(list)中。以下**演示了yaml與python的對應關係:

import yaml

obj=yaml.load(

"""- hesperiidae

- papilionidae

- apatelodidae

- epiplemidae

""")

print obj

本例中引用「-」來分隔列表中的每個元素,執行結果如下:

e:\python\python_auto_maintain\venv\scripts\python.exe e:/python/python_auto_maintain/9_1_1.py

['hesperiidae', 'papilionidae', 'apatelodidae', 'epiplemidae']

yaml也存在類似於python塊的概念,例如:

- hesperiidae 

- papilionidae

- apatelodidae

- epiplemidae

- china

- usa

- japan

3 塊對映描述

塊對映就是將描述的元素序列對映到python的字典(dictionary)中, 格式為「鍵(key):值(value)」,以下為yaml例子:

import yaml

obj=yaml.load(

"""hero:

hp: 34

sp: 8

level: 4

orc:

hp: 12

sp: 0

level: 2

""")

print obj

對應的python結果為:

e:\python\python_auto_maintain\venv\scripts\python.exe e:/python/python_auto_maintain/9_1_1.py

, 'orc': }

4 巢狀

yaml塊序列與塊對映是可以自由組合在一起的,它們之間可以相互巢狀,通過非常靈活的組合,可以幫助我們描述更加複雜的物件屬性,例如:

import yaml

obj=yaml.load(

"""- hero:

hp: 34

sp: 8

level: 4

- orc:

hp:- 12

- 30

sp: 0

level: 2

""")

print obj

執行結果如下:

e:\python\python_auto_maintain\venv\scripts\python.exe e:/python/python_auto_maintain/9_1_1.py

[}, }]

集中化管理平台Ansible

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

集中化管理平台Saltstack

saltstack是乙個伺服器基礎架構集中化管理平台,開始於2011年的乙個專案,具備配置管理 遠端執行 監控等功能,一般可以理解成簡化版的puppet和加強版的func。slatstack基於python語言實現,結合輕量級訊息佇列 zeromq 與python第三方模組 pyzmq pycryp...

集中化運維管理 Puppet管理之路

大資料時代高伸縮性 容錯性的特點給運維提出了更高的要求。系統管理不再是疲於安裝作業系統 對系統引數進行逐一配置與優化 打補丁 安裝軟體 配置軟體 新增某個服務的時代。為了提高效率 避免重複勞動 減少錯誤 積累知識,系統管理員都已開始做一些區域性的自動化工作。但這些還遠不夠,為了滿足運維需求,需要更徹...