Playbooks 是一种简单的配置管理系统与多机器部署系统的基础, 非常适合于复杂应用的部署

由 yaml 语言编写, 运行过程中, ansible-playbook 命令根据自上而下的顺序依次执行

playbook是由一个或多个“play”组成的列表。play的主要功能在于将事先归并为一组的主机装扮成事先通过Ansible中的tasks定义好任务。从根本上来讲所谓tasks无非是调用Ansible的一个module。将多个“play”组织在一个playbook中即可以让它们联同起来按事先编排的机制一同工作。

ansible-playbook -h :
ansible-playbook [options] playbook.yml [playbook2 ...]
-C, --check         # 检查,白跑,干跑
-f FORKS, --forks=FORKS # 用来做并发
--list-hosts          # 列出主机列表
--syntax-check         # 语法检查

Playbook 构成

Playbook主要有以下四部分构成:

  1. target section:定义将要执行playbook的远程主机组
  2. variable section:定义playbook运行时需要使用的变量
  3. task section:定义将要在远程主机上执行的任务列表
  4. handler section:定义task执行完成以后需要调用的任务

第一个简单的用法: 

YAML对空格非常敏感,并使用空格来将不同的信息分组在一起,在整个文件中应该只使用空格而不使用制表符,并且必须使用一致的间距,才能正确读取文件。相同缩进级别的项目被视为同级元素。

字典 :

列表 -

后缀名 yml / yaml

-  : 后面必须有一个空格     = 等号两侧不能有空格

- hosts: web
tasks:
- name: creategroup
group: name=may1
- name: cretaeuser
user: name=may1

传参

- hosts: web
tasks:
- name: create{{ user }}
user: name={{ user}}

方式一: 命令行-e

ansible-playbook -e 'user=ryan2' p2.yml

方式二: 修改/etc/ansible/hosts 文件

[db:vars] #表示组的参数
user=ryan3

方式三:  编辑yml文件

- hosts: db
vars:
- user: alexsb14
tasks:
- name: create{{ user }}
user: name={{ user}}

方式四: register

- hosts: db
tasks:
- name: sum
shell: echo 2+3|bc
register: user
- name: createuser
user: name={{user.stdout}}

优先级

-e > playbook,yml > hosts文件

条件判断: 

xxx.yml

- hosts: db
remote_user: root
tasks:
- name: createfile
copy: content="大弦嘈嘈如急雨" dest=/tmp/a.txt
when: a==""
- name: cratefile
copy: content="小弦切切如私语" dest=/tmp/a.txt
when: a==""

命令: ansible-playbook -e 'a=4'  xxx.yml

循环:

xxx.yml

- hosts: web
tasks:
- name: crate groups
group: name={{item}}
with_items:
- overwatch1
- overwatch2
- overwatch3
- name: createuser
user: name={{item.name}} group={{item.group}}
with_items:
- {'name':genji,'group':overwatch1}
- {'name':mccree,'group':overwatch2}
- {'name':hanzo,'group':overwatch3}

命令: ansible-playbook   xxx.yml

标签:

xxx.yml

- hosts: web
tasks:
- name: install nginx
yum: name=nginx
- name: copy file
copy: src=/etc/nginx/nginx.conf dest=/etc/nginx/nginx.conf
tags: copyfile
- name: start
service: name=nginx state=started

命令: ansible-playbook -t copyfile xxx.yml

template

templateh和copy 区别

1. template模块代替参数,渲染变量

- hosts: web
tasks:
- name: install redis
yum: name=redis
- name: copyfile
template: src=/etc/redis.conf dest=/etc/redis.conf
- name: start
service: name=redis state=started

# 配置文件: bind {{ ansible_default_ipv4.address }}

2. template可以写相对路径, 在当前工作目录下新建templates文件夹, 然后吧文件放templates文件夹里

- hosts: web
tasks:
- name: install redis
yum: name=redis
- name: copyfile
template: src=redis.conf dest=/etc/redis.conf
- name: start
service: name=redis state=started

handlers : 触发任务, 和 notify搭配使用

- hosts: web
tasks:
- name: install redis
yum: name=redis
- name: copyfile
template: src=redis.conf dest=/etc/redis.conf
tags: copyfile
notify: restart redis
- name: start
service: name=redis state=started
handlers:
- name: restart redis
service: name=redis state=restarted

这样修改配置文件会自动触发重启redis

参考资源 : http://blog.51cto.com/13525470/2112720 非常官方和到位

ansible-playbook剧本的更多相关文章

  1. 2.Ansible Playbook剧本

    1.playbook?playbook翻译过来就是"剧本",那playbook组成如下 play: 定义的是主机的角色 task: 定义的是具体执行的任务 playbook: 由一 ...

  2. ansible基础-playbook剧本的使用

    ansible基础-playbook剧本的使用 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.YAML概述 1>.YAML的诞生 YAML是一个可读性高,用来表达数据序 ...

  3. ansible的playbook剧本

    一.playbook剧本介绍 1)playbook介绍 Playbooks是Ansible的配置,部署和编排语言.它们可以描述您希望远程系统执行的策略,或一般IT流程中的一组步骤. 如果说ansibl ...

  4. Ansible之playbook剧本

    Ansible之playbook剧本 目录 Ansible之playbook剧本 1. playbook的组成 2. 剧本示例test1 2.1 剧本制作 2.2 准备http.conf 2.3 运行 ...

  5. ansible笔记(10):初识ansible playbook

    ansible笔记():初识ansible playbook 假设,我们想要在test70主机上安装nginx并启动,我们可以在ansible主机中执行如下3条命令 ansible test70 -m ...

  6. Ansible Playbook 简介

    我们去远程执行命令时要使用 command 模块,拷贝文件时要使用 copy 模块,如果我们要操作的东西很多,那就要执行很多条不同模块的命令Playbook 是一个 yaml 配置文件,我们可以把不同 ...

  7. Ansible playbook基础组件介绍

    本节内容: ansible playbook介绍 ansible playbook基础组件 playbook中使用变量 一.ansible playbook介绍 playbook是由一个或多个“pla ...

  8. ansible入门四(Ansible playbook基础组件介绍)

    本节内容: ansible playbook介绍 ansible playbook基础组件 playbook中使用变量 一.ansible playbook介绍 playbook是由一个或多个“pla ...

  9. ansible playbook模式及语法

    一.什么是playbook及其组成 什么是playbook playbook 翻译过来就是"剧本" playbook的组成 play:定义的是主机的角色 task:定义的是具体执行 ...

  10. Playbook剧本小结

    1.Playbook剧本小结 1.什么是playbook,playbook翻译过来就是"剧本",那playbook组成如下 play: 定义的是主机的角色task: 定义的是具体执 ...

随机推荐

  1. 浅析JavaBean

    一.概述 JavaBean组件本质上是一个Java类,只是这个类的编码要遵循一些约定.用户可以使用JavaBean将功能.处理.值.数据库访问和其他任何可以用java代码创造的对象进行打包,并且其他的 ...

  2. VMware Workstation 14 黑屏的一个解决办法

    近期很多朋友遇到了VMware Workstation 14开启或新建虚拟机后黑屏的现象,同时发现如果挂起虚拟机,可以显示挂起前最后的画面.显然,虚拟机核心是正常工作的,只是“显示”方面出现了问题. ...

  3. Bootstrap - select2

    1.调整select2下拉框的宽度 <style> .select2-container .select2-choice { height: 28px; line-height: 28px ...

  4. 基于ThinkPHP3.23的简单ajax登陆案例

    本文将给小伙伴们做一个基于ThinkPHP3.2.的简单ajax登陆demo.闲话不多说.直接进入正文吧. 可能有些小伙伴认为TP自带的跳转页面挺好,但是站在网站安全的角度来说,我们不应该让会员看到任 ...

  5. linux c++环境

    set expandtab set autoindent set smartindent

  6. vue经验 - 实战疑点总结

    1.注册全局组件(是一个单vue页面组成的一个组件,而不是现拼的template结构) 结构: 代码:main.js import UserList from './components/UserLi ...

  7. OpenGL ES 系列教程

    http://www.linuxgraphics.cn/graphics/opengles_tutorial_index.html 本文收集了一套 OpenGL ES 系列教程. www.play3d ...

  8. 关于servlet3.0中的异步servlet

    刚看了一下维基百科上的介绍,servlet3.0是2009年随着JavaEE6.0发布的: 到现在已经有六七年的时间了,在我第一次接触java的时候(2011年),servlet3.0就已经出现很久了 ...

  9. ruby 升级1.8.7到1.9.3

    rvm install ruby 1.9.3 ruby -v 如果还是1.8.7. rvm use 1.9.3 列出所有版本 rvm list 设置默认的版本 rvm --default use x. ...

  10. [工具] CuteMarkEd

    CuteMarkEd 是一款开源免费的.支持代码高亮的.朴素的 Markdown 本地编辑器,支持 Windows.Linux. 就因为程序员喜欢用,然后就拼命的开发 Markdown 编辑器么?青小 ...