111 发表于 2018-7-30 09:49:20

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跟多高级语法稍后系统文件会结合工作上用到的慢慢介绍给大家。
  欢迎补充!
页: [1]
查看完整版本: Ansible Playbook - Understanding YAML