Ansible中的playbook(脚本、剧本)
___ansible简介 ____
ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、
cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命
令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的
是ansible所运行的模块,ansible只是提供一种框架。主要包括:
(1)、连接插件connection plugins:负责和被监控端实现通信;
(2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
(3)、各种模块核心模块、command模块、自定义模块;
(4)、借助于插件完成记录日志邮件等功能;
(5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。
一.Playbook的功能
Playbook与ad-hoc相比,是一种完全不同的运用ansible的方式,类似与saltstack的state状态文件。ad-hoc无法持久使用,playbook可以持久使用。
playbook是由一个或多个play组成的列表,play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible中的task定义好的角色。从根本上来讲,所谓的task无非是调用ansible的一个module。将>多个play组织在一个playbook中,即可以让它们联合起来按事先编排的机制完成某一任务
playbook 是由一个或多个play组成的列表
Playboot 文件使用YAML来写的
二.YAML
1.简介
是一种表达资料序列的格式,类似XML
Yet Another Markup Language
2001年首次发表
www.yaml.org
2.特点
可读性好
和脚本语言交互性号
易于实现
适用程序执行流梳理方式
可扩展性强
3.语法简介
在文件中用[—]开始
在文件中用[…]结尾
次行一般书写文件内容
缩进严格
大小写敏感
key/value可以多行书写也可一行书写,一行书写用,隔开
value可以是个字符串,也可是list
一个play需要包括name和task
name 是描述
task 是动作
一个name只能包含一个task
扩展名称yml或者yaml
4.YAML 列表
[Linux,C++,Java,Python]
- Linux
- C++
- Java
- Python
5.YAML的字典
字典的作用就是存放 键值
三.playbook执行命令
ansible-playbook xxx.yml …
–check|-C ##检测
–list-hosts ##列出hosts
–list-tags ##列出tag
–list-tasks ##列出task
–limit ##指定执行主机
-v -vv ##现实过程
1.Playbook的核心组件
name #可选,建议使用多用于说明
hosts #受控主机列表
tasks #任务
#用与选择执行部分代码
2.基本示例
---
- name: test play book
hosts: all
remote_user: root
tasks:
- name: check hosts
dnf:
name=httpd
state=latest
- name: start httpd
service:
name=httpd
state=started
enabled=yes
...
四.vim 设定技巧
1.作用
在编写yaml文件的时候
对文件格式要求严格
所以修改vim配置以达到简便操作
2.设定
autocmd FileType yaml setlocal ai ts=2 sw=2
setlocal ##设定当前文件
ai ##自动退格对齐 auto indent
ts ##tab建长度为2空格 tabstop=2
sw ##缩进长度为2 shiftwidth=2
et ##把tab键变成空格 expandtab