学习ansible playbook之前先了解下YAML语法
YAML 語法
本文來自于:http://www.ansible.com.cn/docs/YAMLSyntax.html
這個頁面提供一個正確的 YAML 語法的基本概述, 它被用來描述一個 playbooks(我們的配置管理語言).
我們使用 YAML 是因為它像 XML 或 JSON 是一種利于人們讀寫的數據格式. 此外在大多數變成語言中有使用 YAML 的庫.
你可能希望讀?Playbooks?實踐中如何使用的.
基本的 YAML
對于 Ansible, 每一個 YAML 文件都是從一個列表開始. 列表中的每一項都是一個鍵值對, 通常它們被稱為一個 “哈希” 或 “字典”. 所以, 我們需要知道如何在 YAML 中編寫列表和字典.
YAML 還有一個小的怪癖. 所有的 YAML 文件(無論和 Ansible 有沒有關系)開始行都應該是?---. ?這是 YAML 格式的一部分, 表明一個文件的開始.
列表中的所有成員都開始于相同的縮進級別, 并且使用一個?"-?"?作為開頭(一個橫杠和一個空格):
--- #?一個美味水果的列表 -?Apple -?Orange -?Strawberry -?Mango一個字典是由一個簡單的?鍵:?值?的形式組成(這個冒號后面必須是一個空格):
--- #?一位職工的記錄 name:?Example?Developer job:?Developer skill:?Elite字典也可以使用縮進形式來表示, 如果你喜歡這樣的話:
--- #?一位職工的記錄 {name:?Example?Developer,?job:?Developer,?skill:?Elite}Ansible并不是太多的使用這種格式, 但是你可以通過以下格式來指定一個布爾值(true/fase):
--- create_key:?yes needs_agent:?no knows_oop:?True likes_emacs:?TRUE uses_cvs:?false讓我們把目前所學到的 YAML 例子組合在一起. 這些在 Ansible 中什么也干不了, 但這些格式將會給你感覺:
--- #?一位職工記錄 name:?Example?Developer job:?Developer skill:?Elite employed:?True foods:-?Apple-?Orange-?Strawberry-?Mango languages:ruby:?Elitepython:?Elitedotnet:?Lame這就是你開始編寫Ansibleplaybooks 所需要知道的所有 YAML 語法.
Gotchas
盡管 YAML 通常是友好的, 但是下面將會導致一個 YAML 語法錯誤:
foo:?somebody?said?I?should?put?a?colon?here:?so?I?did你需要使用引號來包裹任何包含冒號的哈希值, 像這樣:
foo:?"somebody?said?I?should?put?a?colon?here:?so?I?did"然后這個冒號將會被結尾.
此外, Ansible 使用 “` var `” 來引用變量. 如果一個值以 “{” 開頭, YAML 將認為它是一個字典, 所以我們必須引用它, 像這樣:
foo:?"{{?variable?}}"
本文轉自 TtrToby 51CTO博客,原文鏈接:http://blog.51cto.com/freshair/1883048
總結
以上是生活随笔為你收集整理的学习ansible playbook之前先了解下YAML语法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql之 日志体系(错误日志、查询日
- 下一篇: dovecot vsz_limit参造成