要想用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跟多高級語法稍後系統文件會結合工作上用到的慢慢介紹給大家。
歡迎補充!