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