Playbook使用,编写YAML
YAML是什么?
- YAML是一个可读性高、用来表达数据序列的格式语言
- YAML:YAML Ain't a Markup Language
- YAML以数据为中心,重点描述数据的关系和结构
YAML的格式要求如下:
- "#"代表注释,一般第一行为三个横杠(---)
- 键值(key/value)对使用":"表示,数组使用"-"表示
- key和value之间使用":"分隔
- ":"后面必须有空格
- 一般缩进由两个或以上空格组成
- 相同层级的缩进必须对齐,缩进代表层级关系
- 全文不可以使用tab键
- 区分大小写
- 扩展名为yml或者yaml
- 跨行数据需要使用>或者|,其中|会保留换行符
YAM注意-和:后面必须有空格。
L示例展示:
1.
---
"诗仙": "李白"
或者
"诗仙":
"李白"
2.数组的例子
---
- "李白"
- "杜甫"
- "白居易"
- "唐僧"
#使用一行表示数组的例子
---
"诗人": ["李白","杜甫","白居易"]
#键值对和数组符合例子:
---
"诗人":
- "李白"
- "杜甫"
- "白居易"
Playbook语法格式要求如下:
- playbook采用YAML格式编写
- playbook文件中由一个或多个play组成
- 每个play中可以包含:
- hosts(主机)、tasks(任务)、vars(变量)等元素组成
- 使用ansible-playbook命令运行playbook剧本
测试Playbook语法格式
1)编写第一个Playbook
hosts、tasks、name是关键词(不可修改),ping是模块,调用不同模块完成不同任务。
# vim ~/ansible/test.yml
---
- hosts: all #host定义要远程的谁那个主机,或组
tasks: #定义远程后要执行的任务
- name: ping #name后面的具体内容可以任意
ping:
#ansible-playbook test.yml
############################################################
2)定义多个主机和任务
hosts由一个或多个组或主机组成,逗号分隔,tasks由一个或多个任务组成,多个任务按顺序执行,执行ansible-playbook命令可以使用-f选项自定义并发量。
#vim test1.yml
---
- hosts: test,webserver #hosts定义需要远程哪些被管理主机,hosts是关键
tasks:
- name: ping
ping:
- name: shell
shell: touch ~/shell.txt
# ansible-playbook ~/ansible/test.yml -f 5
###############################################################
3)多个play的Playbook文件
# vim ~/ansible/test2.yml
#第一个play剧目
---
- hosts: test
tasks:
- name: This is first play
ping:
#第二个play剧目
- hosts: webserver
tasks:
- name: This is second play
ping:
##############################################################
用户管理,创建系统账户、账户属性、设置密码(ansible-doc user)。
#vim test_user.yml
---
- hosts: webserver
tasks:
- name: Add the user 'johnd'
user:
name: johnd
uid: 1040
group: daemon
password: "{{ '123' | password_hash('sha512') }}"
# vim ~/ansible/user_johnd.yml
---
- hosts: webserver
tasks:
- name: Remove the user 'johnd'
user:
name: johnd
state: absent
#删除系统账户johnd,state的值设置为absent是删除用户
############################################################
3)使用playbook管理软件(ansible-doc yum)
RHEL或CentOS系统中的软件有组包的概念,使用yum grouplist或者dnf grouplist可以查看组包的名称。
# vim ~/ansible/package.yml
---
- hosts: webserver #需要远程的主机是谁
tasks: #定义剧本需要执行的任务
- name: Install a list of packages #第一个任务的描述信息
yum: #调用yum模块安装软件
name: #安装软件的名字,它的值有多个,使用数组-
- httpd #安装httpd软件
- mariadb #安装mariadb软件
- mariadb-server #安装mariadb-server
- name: install the 'RPM Development Tools' package group #第二个任务的描述信息
yum: #调用yum模块安装软件组包
name: "@RPM Development Tools" #安装哪个组包,@是关键词
- name: update software #第三个任务的描述信息
yum: #调用yum模块升级软件
name: '*' #需要升级哪些软件
state: latest #latest代表升级软件
#备注:state的值可以是(present|absent|latest)
#present代表安装软件(默认是present);absent代表卸载软件
#latest代表升级软件
##############################################
Ansible特殊模块
################################################
1.setup模块
ansible_facts用于采集被管理设备的系统信息,所有收集的信息都被保存在变量中,每次执行playbook默认第一个任务就是Gathering Facts,使用setup模块可以查看收集到的facts信息。
# ansible test -m setup
192.168.4.10 | SUCCESS => {
"ansible_facts": {
"ansible_all_ipv4_addresses": [
- ansible_all_ipv4_addresses #IP地址
- ansible_bios_version #主板BIOS版本
- ansible_memtotal_mb #总内存
- ansible_hostname #主机名
- ansible_fqdn #主机的域名
- ansible_devices.sda.partitions.sda1.size #某个磁盘分区的大小
2.debug模块
debug模块可以显示变量的值,可以辅助排错,通过msg可以显示变量的值,变量需要使用{{}}扩起来。
# vim ~/ansible/debug.yml
---
- hosts: test
tasks:
- debug:
var: ansible_all_ipv4_addresses
- debug:
msg: "主机名是:{{ ansible_hostname }}"
- debug:
var: ansible_devices.vda.partitions.sda1.size
- debug:
msg: "总内存大小:{{ ansible_memtotal_mb }}"
#备注调用debug模块显示某些具体的变量值
#debug模块可以显示变量的值,可以辅助排错
#debug模块有两个参数,var和msg(引用变量需要{{}})
#var后面调用变量不需要使用{{}}
#msg后面调用变量需要使用{{}}
Playbook使用,编写YAML的更多相关文章
- 如何不编写 YAML 管理 Kubernetes 应用?
Kubernetes 将自身边界内的事物都抽象为资源.其中的主要部分,是以 Deployment.StatefulSet 为代表的 workload 工作负载控制器,其他各类资源都围绕这些主要的资源工 ...
- ansible playbook实践(三)-yaml文件写法
playbook基于YAML语法来编写,基本语法规则如下: 1.大小写敏感 2.使用缩进表示层级关系 3.缩进时不允许使用Tab键,只允许使用空格 4.缩进的空格数目不重要,只要相同层级的元素左侧对齐 ...
- Ansible的Playbook的编写
在Ansible中,将各个模块组合起来成为一个YAML格式的配置文件,这个配置文件叫做Playbook, Playbook和模块的关系类似于shell脚本和Linux命令之间的关系. Playbook ...
- playbook详解—YAML格式的文本
在playbook中有一些核心的指令 hosts:指明命令运行在哪个node之上 remote_user:在远端的node之上以什么用户的身份运行命令 var:给模板传递变量值 tasks:指明需要执 ...
- Ansible_编写Playbook文件
一.Playbook的实施 1.Ansible playbook与临时命令概述: 临时命令可以作为一次性命令对一组目标主机运行一项简单的任务 play是针对清单中选定的主机运行的一组有序任务.play ...
- ansible playbook实践(二)-基础相关命令
ansible相关的命令: ansible 用来执行ansible管理命令 ansible-doc 用来获取模块的帮助文档 ansible-playbook 当有众多任务时,可编写成playbook ...
- devops工具-Ansible进阶playbook&roles
一.playbook介绍 playbook 是 Ansible 管理配置.部署应用的核心所在,一个playbook由有多“play组成”,而一个play实际就是一个task,每个task是由多 ...
- ansible笔记(10):初识ansible playbook
ansible笔记():初识ansible playbook 假设,我们想要在test70主机上安装nginx并启动,我们可以在ansible主机中执行如下3条命令 ansible test70 -m ...
- Ansible之playbook的使用总结 - 运维笔记
之前详细介绍了Ansible的安装, 配置, 以及Ansible常用模块的使用. 下面对Ansible的playbook用法做一小结. 为什么引入playbook?一般运维人员完成一个任务, 比如安装 ...
随机推荐
- 2020-05-16:如何保证redis和mysql数据一致?
福哥答案2020-05-16:
- CentOS7基于ss5搭建Socks5代理服务器
简介 环境 节点名 IP 软件版本 硬件 网络 说明 falcon-binary 172.19.0.6 list 里面都有 2C4G Nat,内网 测试环境 部署 准备编译环境和依赖 #安装编译环境和 ...
- Mybatis-05-使用注解开发
使用注解开发 1 面向接口编程 原因: 解耦.可扩展性.提高复用性 关于接口的理解 定义与实现的分离 两类接口 一个个体的抽象,abstract class 一个个体某个方面的抽象,interface ...
- 如何解决spring boot 项目导入依赖后代码报错问题
如何解决spring boot 项目导入依赖后代码报错问题 2020-08-15 14:17:18 代码截图如图所示(由于本人问题已经解决,没来得及截图,所以在网上找了一张图片)
- 【SP2916】Can you answer these queries V - 线段树
题面 You are given a sequence \(a_1,a_2,...,a_n\). (\(|A[i]| \leq 10000 , 1 \leq N \leq 10000\)). A qu ...
- start-stop-daemon: matching on world-writable pidfile /var/run/redis/redis-server.pid is insecurefailed
Microsoft Store上 看到最新的Ubuntu 20.04 LTS 已经适配到WSL上了, 于是卸载了老版本 18.04 LTS,安装上了最新版本的. 第一次启动会比较慢,需耐心等待 Ins ...
- 【算法•日更•第二十八期】图论:强连通+Tarjan算法(一)
▎前言 一直都想学习这个东西,以为很难,结果发现也不过如此. 只要会些图论的基础就可以了. ▎强连通 ☞『定义』 既然叫强连通,那么一定具有很强的连通性. 强连通:就是指在一个有向图中,两个顶点可以互 ...
- Ubuntu18.04 安装 Fabric & 使用 Fabric 测试网络
前言: 本文介绍在 Ubuntu 18.04 中安装 Fabric, 并对 官方文档中的一个小案例(Using the Fabric test network)进行测试. 目的: 初步了解 Fabri ...
- 在.NET Core中使用MongoDB明细教程(2):使用Filter语句检索文档
在上篇文章我们介绍了一些驱动程序相关的基础知识,以及如何将文档插入到集合中.在这篇文章中,我们将学习如何从数据库中检索文档. 作者:依乐祝 译文地址:https://www.cnblogs.com/y ...
- 企业项目实战 .Net Core + Vue/Angular 分库分表日志系统 | 控制反转搭配简单业务
教程预览 01 | 前言 02 | 简单的分库分表设计 03 | 控制反转搭配简单业务 说明 我们上一节已经成功通过 连接提供程序存储库,获取到了 连接提供程序,但是连接提供程序和数据库连接依赖太深, ...