|
要想用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跟多高级语法稍后系统文件会结合工作上用到的慢慢介绍给大家。
欢迎补充! |
|
|