Linux:ansible-playbook配置文件(剧本)

如果你还没有配置基础的ansible和一些基础用法可以去下面的链接 

playbook是基于ansible的    

Linux:ansible自动化运维工具_鲍海超-GNUBHCkalitarro的博客-CSDN博客

Linux:ansible自动化运维工具_鲍海超-GNUBHCkalitarro的博客-CSDN博客

Linux:ansible自动化运维工具_鲍海超-GNUBHCkalitarro的博客-CSDN博客


 目录

介绍 

 playbook基础组件 

 playbook基础用法(*.yml)

开始测试文件有没有问题

开始执行

查看执行结果

列出该剧本执行主机

查看剧本任务列表

查看标签列表

基础实战

 触发器操作


介绍 

我们完成一个任务,例如安装部署一个httpd服务,我们需要多个模块(一个模块也可以称之为task)提供功能来完成。而playbook就是组织多个task的容器,他的实质就是一个文件,有着特定的组织格式,它采用的语法格式是YAML(Yet Another Markup Language)。YAML语法能够简单的表示散列表,字典等数据结构。

playbook是由一个或多个模块组成的,使用多个不同的模块,完成一件事情。
编写剧本-脚本(playbook)---针对重复性的操作 


 playbook基础组件 

Hosts:运行执行任务(task)的目标主机
remote_user:在远程主机上执行任务的用户
tasks:任务列表
handlers:任务,与tasks不同的是只有在接受到通知时才会被触发
templates:使用模板语言的文本文件,使用jinja2语法。
variables:变量,变量替换{{ variable_name }}
整个playbook是以task为中心,表明要执行的任务。hosts和remote_user表明在哪些远程主机以何种身份执行。其他组件让其能够更加灵活。    

roles:角色。将hosts剥离出去。由tasks、handlers等所组成的一种特定的结构集合

Usage: ansible-playbook playbook.yml
相对于ansible,增加了下列选项:
--flush-cache # 清除fact缓存
--syntax-check # 语法检查
--force-handlers # 如果任务失败,也要运行handlers
--list-tags # 列出所有可用的标签
--list-tasks # 列出将要执行的所有任务
--skip-tags=SKIP_TAGS # 跳过运行标记此标签的任务
--start-at-task=START_AT_TASK # 在此任务处开始运行
--step 一步一步:在运行之前确认每个任务
-t TAGS, --tags=TAGS 只运行标记此标签的任务

YAML有以下基本规则: 
1、大小写敏感 
2、使用缩进表示层级关系 
3、禁止使用tab缩进,只能使用空格键 
4、缩进长度没有限制,只要元素对齐就表示这些元素属于一个层级。 
5、使用#表示注释 
6、字符串可以不用引号标注

7.'-'表示项
8。 ’:‘ 分隔键和值
9.整个文件以‘---’开始,以'...’结束


 playbook基础用法(*.yml)

playbook的语法格式是YAML对空格缩进十分严格
 现在我的主机列表是这样的

hosts详细写法在:Linux:ansible自动化运维工具_鲍海超-GNUBHCkalitarro的博客-CSDN博客

要写的playbook文件后缀必须以   .yml    结尾 

创建一个文件   名字随便写 后缀要yml    我这里叫   a.yml

vim /root/a.yml

放在哪里无所谓

 写入以下内容

---
# --- 代表着开始  ...就是结束
- hosts: web1
# 选择web1主机组   -   代表项   前面两个缩进remote_user: root
# 远程执行的用户tasks:
# tasks是任务列表- name: useradd# 任务名称  四缩进user: name=test1111 state=present# 调用user模块执行tags:- aaa# 标签(别名)
...

---开始...结束上面的#注释就是上面一条命令的解释

开始测试文件有没有问题

ansible-playbook --syntax-check 文件路径

ansible-playbook --syntax-check /root/a.yml

 

没问题,但是预测试,并不真正执行命令

 ansible-playbook -C 文件路径

ansible-playbook -C /root/a.yml

 

如果都没有问题,那么恭喜你,他就可以执行了

开始执行

 ansible-playbook 文件路径

ansible-playbook /root/a.yml 

  

查看执行结果

 现在到了目标主上     刚刚在ansible主服务器远程执行的,成功了

列出该剧本执行主机

ansible-playbook --list-hosts 文件路径

ansible-playbook --list-hosts /root/a.yml 

 

可以看到刚刚写的剧本里的,只有对web1组执行,那个组里包含了 192.168.254.2主机

查看剧本任务列表

ansible-playbook --list-tasks  文件路径

ansible-playbook --list-tasks  /root/a.yml

 那个aaa就是刚刚写的别名   前面的useradd 就是调用的模块

查看标签列表

ansible-playbook --list-tags 文件路径

ansible-playbook --list-tags /root/a.yml 

 aaa就是标签也是别名的意思


基础实战

我现在有两个主机组,现在web1 要求添加一个用户 和一个组   用户名为:tarro1111   组名为:tarrogroup

web2上  把ansible服务器上的/etc/passwd 文件  复制到web2的/root下

vim /root/yml/aaa.yml
---
- hosts: web1remote_user: roottasks:- name: useradduser: name=tarro1111 state=presenttags:- usertarro1111- name: groupaddgroup: name=tarrogroup system=yestags:- grouptarrogroup- hosts: web2remote_user: roottasks:- name: copypasswdcopy: src=/etc/passwd dest=/roottags:- ccc
~                  
ansible-playbook --syntax-check /root/yml/aaa.yml 
ansible-playbook -C /root/yml/aaa.yml 

 测试成功

ansible-playbook /root/yml/aaa.yml

 

成功


 触发器操作

vim /etc/ansible/httpd.yml

随便创建一个*.yml 

---
- hosts: web1
# 对web1主机组执行remote_user: root
# 远程用户使用roottasks:
#任务列表- name: change port# 任务名称command: sed -i 's/Listen\ 80/Listen \ 8080/g' /etc/httpd/conf/httpd.conf  ##调用command模块,编辑httpd文件,更改侦听端口为8080notify:##配置触发条件,触发名称与下列的触发器名称对应- restart httpd server# 这里的和下面的名称一样就行handlers:
##配置触发器- name: restart httpd server##触发器名称service: name=httpd state=restarted  ##调用服务模块,重启httpd服务
...

实战-安装数据库

创建角色目录

mkdir -pv /etc/ansible/roles/mariadb/{files,tasks,handlers}

创建三个目录,分别用于存放,主机组,任务,触发器 这里我管他们分别叫 主机组模块   任务模块    触发器模块  当然这些模块名字是我自己起的,在实际情况中,你也可以使用模块化的思路防止乱,每个模块就是目录

vim /etc/ansible/roles/mariadb/tasks/main.yml

先对我们的《安装数据库》任务模块进行playbook编写    写入一下内容

- name: install mariadbyum: name=mariadb-server state=present- name: move config fileshell: "[ -e /etc/my.cnf ] && mv /etc/my.cnf /etc/my.cnf.bak"- name: provide a new config filecopy: src=my.cnf dest=/etc/my.cnf- name: start mariadbshell: systemctl start mariadb- name: create database testdbshell: mysql -u root -e "create database testdb;grant all on testdb.* to 'tarro'@'192.168.254.%' identified by '123';flush privileges;"notify:- restart mariadb

 

定义触发器的主文件模块

vim /etc/ansible/roles/mariadb/handlers/main.yml

写入 

- name: restart mariadbservice: name=mariadb state=restarted

 

cp /etc/my.cnf /etc/ansible/roles/mariadb/files/

创建主角色(选择主机组模块)

vim /etc/ansible/mariadb.yml
- hosts: web1remote_user: rootroles:- mariadb
ansible-playbook -C /etc/ansible/mariadb.yml 

预测一下

 没问题

ansible-playbook  /etc/ansible/mariadb.yml 

开始执行

没问题,现在sshweb1组主机进行测试

ssh 192.168.254.2

 

mysql -uroot
show databases;

 

show grants for 'tarro'@'192.168.254.%';

成功 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/94186.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL高阶语句之常用查询

目录 常用查询 按关键字排序 区间判断及查询不重复记录 对结果进行分组 限制结果条目 设置别名 通配符 子查询 常用查询 (增、删、改、查) 对 MySQL 数据库的查询,除了基本的查询外,有时候需要对查询的结果集进行处理。 …

P13 VUE 二级menu实现

主要修改以下几个点&#xff1a; CommonAside.vue中 外层便利有孩子节点&#xff0c;关键词key是对应的标签&#xff0c;class动态图表渲染 内层遍历不能再用item&#xff0c;用subitem&#xff0c;遍历该item.childeren&#xff0c;关键词是path&#xff0c; <templat…

51单片机项目(7)——基于51单片机的温湿度测量仿真

本次做的设计&#xff0c;是利用DHT11传感器&#xff0c;测量环境的温度以及湿度&#xff0c;同时具备温度报警的功能&#xff1a;利用两个按键&#xff0c;设置温度阈值的加和减&#xff0c;当所测温度大于温度阈值的时候&#xff0c;蜂鸣器就会响起&#xff0c;进行报警提示。…

C++之std::search应用实例(一百八十九)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

好马配好鞍:Linux Kernel 4.12 正式发布

Linus Torvalds 在内核邮件列表上宣布释出 Linux 4.12&#xff0c;Linux 4.12 的主要特性包括&#xff1a; BFQ 和 Kyber block I/O 调度器&#xff0c;livepatch 改用混合一致性模型&#xff0c;信任的执行环境框架&#xff0c;epoll 加入 busy poll 支持等等&#xff0c;其它…

JixiPix Artista Impresso Pro for mac(油画滤镜效果软件)

JixiPix Artista Impresso pro Mac是一款专业的图像编辑软件&#xff0c;专为Mac用户设计。它提供了各种高质量的图像编辑工具&#xff0c;可以帮助您创建令人惊叹的图像。该软件具有直观的用户界面&#xff0c;使您可以轻松地浏览和使用各种工具。 它还支持多种文件格式&…

权限提升-Windows本地提权-AT+SC+PS命令-进程迁移-令牌窃取-getsystem+UAC

权限提升基础信息 1、具体有哪些权限需要我们了解掌握的&#xff1f; 后台权限&#xff0c;网站权限&#xff0c;数据库权限&#xff0c;接口权限&#xff0c;系统权限&#xff0c;域控权限等 2、以上常见权限获取方法简要归类说明&#xff1f; 后台权限&#xff1a;SQL注入,数…

划分字母区间【贪心算法】

划分字母区间 给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段&#xff0c;同一字母最多出现在一个片段中。 注意&#xff0c;划分结果需要满足&#xff1a;将所有划分结果按顺序连接&#xff0c;得到的字符串仍然是 s 。返回一个表示每个字符串片段的长度的列表。…

睿趣科技:开抖音小店挣钱吗到底

在当今数字化时代&#xff0c;社交媒体平台成为了创业者们寻找商机和赚钱的新途径。而抖音作为一款风靡全球的短视频分享平台&#xff0c;自然也成为了许多人开设小店、进行创业的选择之一。那么&#xff0c;开抖音小店能否真正实现盈利&#xff0c;成为了一个备受关注的话题。…

制造业物联网革命:智慧工厂数据采集与远程监控管理

智慧工厂是指运用现代信息技术和物联网技术&#xff0c;实现制造业生产过程的智能数字化。智慧工厂的工业设备不仅能够自动化运行&#xff0c;还可以通过网络技术帮助企业实现数据采集、远程监控与管理。4G工业网关便成为了智慧工厂通讯的重要组成部分&#xff0c;起到了连接工…

如何排查 Flink Checkpoint 失败问题?

分析&回答 这是 Flink 相关工作中最常出现的问题&#xff0c;值得大家搞明白。 1. 先找到超时的subtask序号 图有点问题&#xff0c;因为都是成功没失败的&#xff0c;尴尬了。 借图&#xff1a; 2. 找到对应的机器和任务 方法很多&#xff0c;这里看自己习惯和公司提供…

Three.js相机参数及Z-Fighting问题的解决方案

本主题讨论透视相机以及如何为远距离环境设置合适的视锥体。 推荐&#xff1a;用 NSDT编辑器 快速搭建可编程3D场景 透视相机是一种投影模式&#xff0c;旨在模仿人类在现实世界中看待事物的方式。 这是渲染 3D 场景最常用的投影模式。 - three.js 如果你看一下 Three.js 文档…