您好,登錄后才能下訂單哦!
本文實例講述了Python集中化管理平臺Ansible介紹與YAML。分享給大家供大家參考,具體如下:
一 中文社區
http://ansible.cn/forum.php
二 點睛
Ansible(http://www.ansibleworks.com/)一種集成IT系統的配置管理、應用部署、執行特定任務的開源平臺,是AnsibleWorks公司名下的項目,該公司由Cobbler及Func的作者于2012年創建成立。Ansible基于Python語言實現,由Paramiko和PyYAML兩個關鍵模塊構建。
Ansible具有如下特點:
Ansible的架構圖如下,用戶通過Ansible編排引擎操作公共/私有云或CMDB(配置管理數據庫)中的主機,其中Ansible編排引擎由 Inventory(主機與組規則)、API、Modules(模塊)、Plugins(插件) 組成。
Ansible與Saltstack最大的區別是Ansible無需在被控主機部署任何客戶端代理,默認直接通過SSH通道進行遠程命令執行或下發配置;相同點是都具備功能強大、靈活的系統管理、狀態配置,都使用YAML格式 來描述配置,兩者都提供豐富的模板及API,對云計算平臺、大數據都有很好的支持。
Ansible在GitHub上的地址為https://github.com/ansible/, 其中提供了不少配置例子供參考。
三 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
{'hero': {'hp': 34, 'sp': 8, 'level': 4}, 'orc': {'hp': 12, 'sp': 0, 'level': 2}}
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
[{'hero': {'hp': 34, 'sp': 8, 'level': 4}}, {'orc': {'hp': [12, 30], 'sp': 0, 'level': 2}}]
更多關于Python相關內容可查看本站專題:《Python數據結構與算法教程》、《Python Socket編程技巧總結》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》及《Python入門與進階經典教程》
希望本文所述對大家Python程序設計有所幫助。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。