Ansible playbook详解
Ansible playbook详解
playbook是ansible用于配置,部署,和被管理被控节点的剧本
playbook常用的YMAL格式:(文件名称以 .yml结尾)
1、文件的第一行应该以 "---" (三个连字符)开始,表明YMAL文件的开始。
2、在同一行中,#之后的内容表示注释,类似于shell,python和ruby。
3、YMAL中的列表元素以”-”开头然后紧跟着一个空格,后面为元素内容。
4、同一个列表中的元素应该保持相同的缩进。否则会被当做错误处理。
5、play中hosts,variables,roles,tasks等对象的表示方法都是键值中间以":"分隔表示,":"后面还要增加一个空格。
playbook由三个部分组成:
host部分:使用host指示使用哪个主机或主机组来运行下面的tasks
remote_user:指定远程主机中的哪个用户来登录远端系统,在远端系统执行tasks的用户
tasks:指定远端主机将要执行的一系列动作,tasks的核心为ansible的模块
playbook的核心元素:
hosts:主机组;
tasks:任务列表
variables:变量,设置方式有四种
Templates:包含了模板语法的文本文件
Handlers:由特点条件触发的任务
[root@server ansible]# vim nginx.yml
---
- hosts: webremote_user: roottasks:- name: install nginxyum: name=nginx state=present- name: copy nginx.confcopy: src=/tmp/nginx.conf dest=/etc/nginx/nginx.conf backup=yesnotify: reload #当nginx.conf发生改变时,通知给相应的handlerstags: reloadnginx #打标签- name: start nginx serviceservice: name=nginx state=startedtags: startnginx #打标签handlers: #注意,前面没有-,是两个空格- name: reloadservice: name=nginx state=restarted #为了在进程中能看出来
运行前的三部曲
检查错误:ansible-playbook nginx.yml --syntax-check
列出所有任务:ansible-playbook nginx.yml --list-task
列出在那些机器执行:ansible-playbook nginx.yml --list-hosts
运行:ansible-playbook nginx.yml
variables部分(vars为调用定义变量)
1.facts:可直接调用
setup模块就是通过facts组件来实现的,用setup模块获取,直接放入剧本中调用即可
2.用户自定义变量
vars :
- var1: cc1
- var2: cc2
1.如果未在剧本中定义变量可以使用 ansible-playbook nginx.yml -e rpmname=keepalived
2.修改剧本定义
模板 templates
模板支持:
字符串:使用单引号或双引号;
数字:整数,浮点数;
列表:[item1, item2, ...]
元组:(item1, item2, ...)
字典:{key1:value1, key2:value2, ...}
布尔型:true/false
算术运算:
+, -, *, /, //, %, **
比较操作:
==, !=, >, >=, <, <=
逻辑运算:
and, or, not
修改剧本: 修改剧本来定义变量
此处的rpmname代表的调用的文件名称为rpmname,下面的nginxport为此文件中的变量模块。copy模块也需要修改为template模块。
字典
- name: install some packages
yum: name={{ item }} state=present
with_items:
- nginx
- memcached
- php-fpm传入多个参数
- name: add some groups
group: name={{ item }} state=present
with_items:
- group11
- group12
- group13
- name: add some users
user: name={{ item.name }} group={{ item.group }} state=present
with_items:
- { name: 'user11', group: 'group11' }
- { name: 'user12', group: 'group12' }
- { name: 'user13', group: 'group13' }相当于一个一个传参给定义的相应接收的位置
- 如何判别判断电脑硬件故障?
- 「Verilog学习笔记」用优先编码器①实现键盘编码电路
- Confluence需要什么插件?画图!
- 突然消失的桌面文件如何恢复?详细教程让你轻松解决问题!
- SQL必知会(二)
- python爬虫整理
- hadoop 大数据环境配置 rsync命令 hadoop(三)
- Direct3D拾取
- get函数
- SpringBoot项目中ModelMapper配置以及使用
- 进阶SQL——数据表中多列按照指定格式拼接,并将多行内容合并为map拼接
- 20.1 platform 设备驱动
- 61基于matlab的GWO算法的参数工具箱,图形界面,目标函数的默认名称为CostFunction。
- matlab导入txt数据
- GCN代码讲解
- 面试被问答3
- 阿里云国际站:应用实时监控服务