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

欢迎补充!

时间: 2024-10-15 15:26:42

Ansible Playbook - Understanding YAML的相关文章

ansible playbook yummodule error

ansible playbookweb.yaml[[email protected] Desktop]# cat web.yaml- name: web servers  remote_user: root  hosts: webservers tasks:  - name: install httpd    yum: name=httpd state=present  - name: httpd service     service: name=httpd enabled=yes state

Linux九阴真经之九阴白骨爪残卷5(ansible用法二之Playbook和YAML语法)

playbook是由一个或多个"play"组成的列表 play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible中的task定义好的角色.从根本上来讲,所谓task无非是调用ansible的module.将多个play组织在一个playbook中,即可让他们联通起来按事先编排的机制运行. Playbook 采用yaml 语言编写每一个ansible 的 playbook 都是一个yaml格式的文件,因此要学习编写剧本(playbook), 我们先来了解 yaml 语法的基

学习ansible playbook之前先了解下YAML语法

YAML 语法 本文来自于:http://www.ansible.com.cn/docs/YAMLSyntax.html 这个页面提供一个正确的 YAML 语法的基本概述, 它被用来描述一个 playbooks(我们的配置管理语言). 我们使用 YAML 是因为它像 XML 或 JSON 是一种利于人们读写的数据格式. 此外在大多数变成语言中有使用 YAML 的库. 你可能希望读 Playbooks 实践中如何使用的. 基本的 YAML 对于 Ansible, 每一个 YAML 文件都是从一个列

Ansible playbook API 开发 调用测试

Ansible是Agentless的轻量级批量配置管理工具,由于出现的比较晚(13年)基于Ansible进行开发的相关文档较少,因此,这里通过一些小的实验,结合现有资料以及源码,探索一下Ansible的二次开发. 随笔的内容分为三个部分 playbook编辑执行 python 调用API执行playbook java调用python程序进行playbook的执行 实验的环境是centos6,ansible版本是1.9.4,python版本是2.6.6,jdk版本是1.7U79 一.playboo

自动化运维工具ansible playbook和roles的使用

ansible的结构: Inventory 用来定义被控制端 Modules 定义被控制端可用的操作 Ad Hoc Commands 定义被控制端可以执行命令的 Playbook 批量运行的方式 Tasks: 任务:由各模块所支持执行的特定操作:可以通过ansible-doc module_name来查看帮助文档,非常详细 -m  user -a 'name= password=' Variables: 变量 Templates: 模板:(如执行httpd服务时,各节点上httpd的配置文件内容

ansible playbook使用总结

Ansible playbook的使用 playbooks概念 task: 任务:使用各模块所执行的特性操作任务,比如:-m user -a 'name= password=' Variables: 变量: Templates: 模板 在定义模板后可以实现各节点对应的变量来取代,表达式自身会根据当前节点所赋值做运算,之后生成的值则赋予这个参数,用于生产不同配置的配置文件,所以模板主要实现配置不同场景文本文件 而且这种使用模板语言来定义 模板语言中可以根据定义替换成特定主机的某些值 handler

Ansible playbook 批量修改服务器密码 先普通后root用户

fsckzy Ansible playbook 批量修改服务器密码 客户的需求:修改所有服务器密码,密码规则为Rfv5%+主机名后3位 背景:服务器有CentOS6.7,SuSE9.10.11,root不能直接登录,需先登录普通用户,再切换到root. 首先在hosts 下面添加一个组[test],下面跟ip,每行一个. ansible基于ssh连接inventory中指定的远程主机时,将以此处的参数指定的属性进行: ansible_ssh_port 指定ssh 端口 ansible_ssh_u

ansible playbook实践(二)-基础相关命令

ansible相关的命令: ansible  用来执行ansible管理命令 ansible-doc 用来获取模块的帮助文档 ansible-playbook 当有众多任务时,可编写成playbook来运行 ansible的简单使用格式: ansible HOST-PATTERN -m MOD_NAME -a MOD_ARGS 获取模块列表 ansible-doc -l 里面有众多模块,掌握一些常用的即可满足日常工作 ansible-doc -s modulename # 获取模块简要使用说明

ansible使用二(ansible playbook)

ansible playbook ansible playbooks 是使用ansible简单的配置管理部署系统的基础,使用YAML语法格式的配置文件.每一个playbook中包含一系列的任务.使用ansible playbook可以更方便的管理.维护多态主机. 1.yaml语法    yaml是”YAML Ain't a Markup Language”的缩写,即不是一种标记性语言,它是一种直观的能够被电脑识别的数据序列化格式,是一个可读性高并且容易被人类阅读,容易和脚本语言交互,用来表达资料