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