一 ansible七種武器
二 JSON簡介
三 YAML簡介
四 Jinja2模版簡介
#############################################
一 ansible七種武器
(1)ansible 命令,
用於執行臨時性的工作,必須掌握
(2)ansible-doc
是ansible模塊的文檔說明針對每個模
塊都有詳細的說明及應用案例介紹,功能和Linux系統
man命令類似,必須掌握
(3)ansible-console
ansible爲用戶提供的交互式工具,
用戶可以在ansible-console虛擬出來的終端上像Shell
一樣使用ansible內置的各種命令,這爲習慣使用Shell
交互方式的用戶提供了良好的使用體驗
(4)ansible-galaxy
從github上下載管理Roles的一款工具,與python的pip類似
(5)ansible-playbook
是日常應用中使用頻率最高的命令,工作機制:通過讀取先編寫好的playbook文件實現批量管理,可以理解爲按一定條件組成的ansible任務集,必須掌握
(6)ansible-vault
主要用於配置文件加密,如編寫的playbook文件中包含敏感信息,想其他人隨意查看,可用它加密/解密這個文件
(7)ansible-pull
– ansible有兩種工作模式pull/push ,默認使用push模式工作,pull和push工作模式機制剛好相反
– 適用場景:有大批量機器需要配置,即便使用高併發線程依舊要花費很多時間
– 通常在配置大批量機器的場景下使用,靈活性稍有欠缺,但效率幾乎可以無限提升,對運維人員的技術水平和前瞻性規劃有較高要求
二 JSON簡介
1.JSON是什麼
– JSON是JavaScript對象表示法,它是一種基於文本獨立於語言的輕量級數據交換格式
– JSON中的分隔符限於單引號" ' " 、小括號" () " 、中括號" [ ] " 、大括號" { } " 、冒號 " : " 和逗號 " , "
2.JSON特性
– JSON是純文本
– JSON具有"自我描述性"(人類可讀)
– JSON具有層級結構(值中存在值)
– JSON可通過JavaScript進行解析
3.JSON語法規則
– 數據在名稱/值對中
– 數據由逗號分隔
– 大括號保存對象
– 中括號保存數組
4.JSON 數據的書寫格式是:名稱/值對
– 名稱/值對包括字段名稱(在雙引號中),後面寫一個冒號,然後是值,例如:
"水果 " :"蘋果"
5.JSON語法規則之數組
{ "詩人":
["李白", "杜甫", "白居易", "李賀"]
}
6.複合複雜類型
{ "詩人":
[ {"李白":"詩仙", "年代":"唐"},
{"杜甫":"詩聖", "年代":"唐"},
{"白居易":"詩魔", "年代":"唐"},
{"李賀":"詩鬼", "年代":"唐"}
]
}
三 YAML簡介
1.YAML是什麼
– 是一個可讀性高,用來表達數據序列的格式
– YAML(YAML Ain't Markup Language)
– YAML參考了多種語言,如:C語言、Python、Perl等,並從XML、電子郵件的數據格式中獲得靈感,Clark Evans在2001年首次發表了這種語言,目前已有數種編程語言或腳本語言支持這種語言
2.YAML基礎語法
– YAML的結構通過空格來展示
– 數組使用"- "來表示
– 鍵值對使用": "來表示
– YAML使用一個固定的縮進風格表示數據層級結構關係
– 一般每個縮進級別由兩個以上空格組成
– # 表示註釋
(注意:
– 不要使用tab,縮進是初學者容易出錯的地方之一
– 同一層級縮進必須對齊)
3.YAML的鍵值表示方法
– 採用冒號分隔
– : 後面必須有一個空格
– YAML鍵值對例子
"詩仙" : "李白"
– 或
"李白":
"詩仙"
4.複雜YAML的鍵值對嵌套
"詩人":
"李白": "詩仙"
或
"詩人":
"李白":
"詩仙"
數組
["李白", "杜甫", "白居易", "李賀"]
5.YAML 數組表示方法
– 使用一個短橫槓加一個空格
– YAML數組例子
- "李白"
- "杜甫"
- "白居易"
- "李賀"
– 哈希數組複合表達式
"詩人":
- "李白"
- "杜甫"
- "白居易"
- "李賀"
6.高級複合表達式
"詩人":
-
"李白": "詩仙"
"年代": "唐"
-
"杜甫": "詩聖"
"年代": "唐“
-
"白居易": "詩魔"
"年代": "唐"
-
"李賀": "詩鬼"
"年代": "唐"
四 Jinja2模版簡介
1.Jinja2是什麼
– Jinja2是基於Python的模板引擎,包含變量和表達式兩部分,兩者在模板求值時會被換爲值,模板中還有標籤,控制模板的邏輯
2.Jinja2模版基本語法
– 模板的表達式都是包含在分隔符"{{ }}"內的
– 控制語句都是包含在分隔符"{% %}"內的
– 模板支持註釋,都是包含在分隔符"{# #}" 內,支持塊註釋
– 調用變量
{{varname}}
– 計算
{{2+3}}
– 判斷
{{1 in [1,2,3]}}
3.Jinja2模版控制語句
{% if name == '詩仙' %}
李白
{% elif name == '詩聖' %}
杜甫
{% elif name == '詩魔' %}
白居易
{% else %}
李賀
{% endif %}
4.Jinja2模版控制語句
{% if name == ... ... %}
... ...
{% elif name == '于謙' %}
{% for method in [抽菸, 喝酒, 燙頭] %}
{{do method}}
{% endfor %}
... ...
{% endif %}
5.Jinja2過濾器
– 變量可以通過過濾器修改。過濾器與變量用管道符號( | )分割,也可以用圓括號傳遞選參數,多個過濾器可以鏈式調用,前一個過濾器的輸出會被作爲後一個過濾器的輸入
例如
– 加密一個字符串:{{ 'astr'|password_hash('sha512')}}
– 過濾器這裏不再一一列舉,需要的可以查詢在線文檔
http://docs.jinkan.org/docs/jinja2/templates.html
#builtin-filters