Ansible Playbook - Understanding YAML

要想用Ansible操作複雜的任務,就必須要學會YAML語法的書寫,不光是Ansible,連他的競爭對手saltstack也使用了YAML,下面來學習一下YAML語法的格式,省得到要你寫個Playbook的時候手忙腳亂的要好。


引用一下維基:YAML是"YAML Ain't a Markup Language"(YAML不是一種標記語言)的遞迴縮寫。在開發的這種語言時,YAML 的意思其實是:"Yet Another Markup Language"(仍是一種標記語言)。


YAML的可讀性好,和腳本的交互性好,配合jinja2(Python Template Engine)可以很好的對Playbook的任務變量進行設置。


YAML的語法格式需要注意的地方;

1.    文件的開頭都必須以---開始,用來表示一個YAML文件的開始,這點可以想象成bash的 #!/bin/bash,當然bash這個不是必須要有的。

2.    縮進需要用空格,而不能用tab,同一屬性的關鍵詞要保證左對齊,且與上一級保持兩個空格縮進。

3.    沒個屬性要跟冒號,之後要接一個空格。

4.    用短橫線表示列表,並且後面要接一個空格。


        - Apple

        - Orange

        - Mongo

        轉換成Python 語法就是["apple", "Orange", "Mongo"]

        Shanker:

         - name

         - role

         - Age

        轉換成Python語法就是{“Shanker":["name", "role", "Age"]}



Ansible的YAML配置文件都是以一個列表開始的,列如一個Nginx的配置:

---
- hosts: centos
  vars:
        worker_processes: 4
        max_open_file: 65506
  remote_user: ibmcloud
  sudo: yes
  tasks:
  - name: ensure nginx is at the latest version
    yum: name=nginx state=latest
  - name: write the nginx config file
    template: src=/etc/ansible/nginx/templates/nginx.j2 dest=/etc/nginx/nginx.conf
    notify:
    - restart nginx
  - name: ensure ngins is running
    service: name=nginx state=started
  handlers:
  - name: restart nginx
    service: name=nginx state=restarted

本文只是一個YMAL語法介紹,Ansible Playbook跟多高級語法稍後系統文件會結合工作上用到的慢慢介紹給大家。


歡迎補充!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章