ansible-playbook剧本
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主要有以下四部分构成:
- target section:定义将要执行playbook的远程主机组
- variable section:定义playbook运行时需要使用的变量
- task section:定义将要在远程主机上执行的任务列表
- 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剧本的更多相关文章
- 2.Ansible Playbook剧本
1.playbook?playbook翻译过来就是"剧本",那playbook组成如下 play: 定义的是主机的角色 task: 定义的是具体执行的任务 playbook: 由一 ...
- ansible基础-playbook剧本的使用
ansible基础-playbook剧本的使用 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.YAML概述 1>.YAML的诞生 YAML是一个可读性高,用来表达数据序 ...
- ansible的playbook剧本
一.playbook剧本介绍 1)playbook介绍 Playbooks是Ansible的配置,部署和编排语言.它们可以描述您希望远程系统执行的策略,或一般IT流程中的一组步骤. 如果说ansibl ...
- Ansible之playbook剧本
Ansible之playbook剧本 目录 Ansible之playbook剧本 1. playbook的组成 2. 剧本示例test1 2.1 剧本制作 2.2 准备http.conf 2.3 运行 ...
- ansible笔记(10):初识ansible playbook
ansible笔记():初识ansible playbook 假设,我们想要在test70主机上安装nginx并启动,我们可以在ansible主机中执行如下3条命令 ansible test70 -m ...
- Ansible Playbook 简介
我们去远程执行命令时要使用 command 模块,拷贝文件时要使用 copy 模块,如果我们要操作的东西很多,那就要执行很多条不同模块的命令Playbook 是一个 yaml 配置文件,我们可以把不同 ...
- Ansible playbook基础组件介绍
本节内容: ansible playbook介绍 ansible playbook基础组件 playbook中使用变量 一.ansible playbook介绍 playbook是由一个或多个“pla ...
- ansible入门四(Ansible playbook基础组件介绍)
本节内容: ansible playbook介绍 ansible playbook基础组件 playbook中使用变量 一.ansible playbook介绍 playbook是由一个或多个“pla ...
- ansible playbook模式及语法
一.什么是playbook及其组成 什么是playbook playbook 翻译过来就是"剧本" playbook的组成 play:定义的是主机的角色 task:定义的是具体执行 ...
- Playbook剧本小结
1.Playbook剧本小结 1.什么是playbook,playbook翻译过来就是"剧本",那playbook组成如下 play: 定义的是主机的角色task: 定义的是具体执 ...
随机推荐
- 51开发环境的搭建--KeilC51的安装及工程的创建
学习单片机的开发,单靠书本的知识是远远不够的,必须实际操作编程才能领会书中的知识点,起到融会贯通的效果.51单片机作为入门级的单片机--上手容易.网上资源丰富.单片机稳定性及资源比较丰富.通过串口即可 ...
- JSPatch 部署安全策略
本文转载至 http://blog.cnbang.net/tech/2879/ 使用 JSPatch 有两个安全问题: 传输安全:JS 脚本可以调用任意 OC 方法,权限非常大,若被中间人攻击替换代码 ...
- iOS - 转场动画
苹果在 iOS7 定制了 ViewController 的切换效果 一 在iOS5和iOS6之前,ViewController的切换主要有4种 Push/Pop,NavigationViewCotnr ...
- Android四大组件之BrocastReceive
- sql查看本机IP地址
CREATE FUNCTION [dbo].[GetCurrentIP] () ) AS BEGIN ); SELECT @IP_Address = client_net_address FROM s ...
- 【前端系列】移动前端开发之viewport的深入理解
在页面上没有设置width所以样式显示有问题,本来选择的响应式模式的320*410结果看到页面的实际宽度确实980px. 本文转载自: 在移动设备上进行网页的重构或开发,首先得搞明白的就是移动设备上的 ...
- 【大数据系列】MapReduce示例好友推荐
package org.slp; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import ...
- Ubuntu 14.04 LTS 火狐浏览器中,鼠标选择文字被删除的解决办法
这篇文章主要介绍了Ubuntu 火狐浏览器中,鼠标选择文字被删除的解决办法,需要的朋友可以参考下在终端中输入命令: ibus-setup将 “在应用程序窗口中启用内嵌编辑模式“ 选项取消
- pip安装python包出现Cannot fetch index base URL http://pypi.python.org/simple/
pipinstall***安装python包,出现 Cannot fetch index base URL http://pypi.python.org/simple /错误提示或者直接安装不成功. ...
- EJBCA的安装(基于Ubuntu 16.04 LTS + wildfly8 + ejbca6.3.11 + jdk7)
前一段时间折腾了一下PKI,用EJBCA在研究院内网搭建了一个CA,目前是提供给手机端(安卓和IOS)来和服务器端(nginx + Java应用)做安全连接的(客户端和服务器端双向认证) 由于EJBC ...