ansible的脚本------playbook剧本

playbook组成部分:

  • 1.task 任务:包含要在目标主机上执行的操作,使用模块定义这些操作。每个都是一个模块的调用。
  • 2.variables 变量:存储和传递数据。变量可以自定义,可以在playbook当中定义为全局变量,也可以外部传参。
  • 3.Templates 模板:用于生成配置文件。模板是包含占位符的文件。占位符有ansible在执行时转化为变量值
  • 4.handlers 处理器:当需要有变更的时候,可以执行触发器。
  • 5.Roles 角色:是一种组织和封装playbook的。允许把相关的任务,变量,模板和处理器组织成一个可复用的单元。

实例模板

安装http并且设置页面内容

cd /opt
vim test1.yml#this is our first playbook
- name: first play
一个name就是一个任务名,名字可以不写。gather_facts: false
是否收集目标主机的系统信息,false就是不收集hosts: 20.0.0.30
执行的目标主机是什么remote_user: root
在目标主机执行的用户tasks: - name: ping testping:- name: close selinuxcommand: '/sbin/setenforce 0'ignore_errors: True- name: close firewalldservice: name=firewalld state=stopped- name: install httpdyum: name=httpd state=latest- name: start httpdservice: enabled=true name=httpd state=started- name: editon index.htmlshell: echo "this is httpd" > /var/www/html/index.htmlnotify: restart httpdhandlers:- name: restart httpdservice: name=httpd state=restartedwq

检查语法是否正确

ansible-playbook test1.yml --syntax-check
检查语法是否正确

错误演示如上图

正确演示如上图

playbook常用脚本命令

ansible-playbook test1.yml --list-task
一般运行会有几个taskansible-playbook test1.yml --list-hosts
检查生效的目标主机

开始运行脚本

ansible-playbook test1.yml
开始运行可以在目标主机   tail -f /var/log/messages
查看

安装成功

此外,我们还可以指定剧本的开始位置

ansible-playbook test1.yml --start-at-task='install httpd'

安装时如何切换用户

#this is our first playbook
- name: first play
一个name就是一个任务名,名字可以不写。gather_facts: false
是否收集目标主机的系统信息,false就是不收集hosts: 20.0.0.30
执行的目标主机是什么remote_user: root
在目标主机执行的用户become: yesbecome_user: roottasks: - name: ping testping:- name: close selinuxcommand: '/sbin/setenforce 0'ignore_errors: True- name: close firewalldservice: name=firewalld state=stopped- name: install httpdyum: name=httpd state=latest- name: start httpdservice: enabled=true name=httpd state=started- name: editon index.htmlshell: echo "this is httpd" > /var/www/html/index.htmlnotify: restart httpdhandlers:- name: restart httpdservice: name=httpd state=restarted

指定声明用户

ansible-playbook test1.yml -u root -k

传参变量

#this is second playbook
声明和引用变量,以及外部传参变量
- hosts: 20.0.0.30remote_user: rootvars:groupname: zzzusername: hjtasks:- name: create groupgroup:name: "{{ groupname }}"system: yesgid: 111- name: create useruser:name: "{{ username }}"uid: 1011group: "{{ groupname }}"shell: /sbin/nologin- name: copy filecopy:content: "{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address']}}"dest: /opt/ky32.txt

"{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address']}}":
获取目标主机IP地址,复制出来放到dest指定的路径中inventory_hostname:目标的主机名
ansible_default_ipv4:获取目标主机名

外部传参

条件判断

when......

when是一个比较常见的应用场景,实现了满足条件即执行,不满足即跳过的任务。

when 满足条件就执行,不满足不执行

指定IP输出   “位置判断”

#this is when test
- hosts: all
可以用主机的IP地址,也可以是用组名,也可以用allremote_user: roottasks:- name: test whendebug:msg: '位置判断'when: ansible_default_ipv4.address == '20.0.0.30

语法和shell差不多,   !=表示不等于,也就是   “除了”

条件满足才会执行

扩展

在20.0.0.30上安装nginx

在20.0.0.50上安装httpd

- hosts: allremote_user: roottasks:- name: nginxyum: name=nginxwhen: ansible_default_ipv4.address == '20.0.0.30'- name: nginx infodebug:msg: "安装nginx"when: ansible_default_ipv4.address == '20.0.0.30'- name: httpyum: name=httpdwhen: inventory_hostname == '20.0.0.50'

playbook当中的循环

ansible有多种循环格式,with_items循环遍历

- hosts: 20.0.0.30remote_user: rootgather_facts: falsetasks:- debug:msg: "{{ item }}"with_items: [a,b,c,d]声明变量item,playbook的内置变量with_items,会把items的值遍历列表当中的a b c d
把item遍历成abcd

如果修改成这样,结果会如何?

相当于 for i in (a,b,c,d,1,2,3,4)

但是with_items还是把两个列表当成整体进行遍历

list循环

touch循环

组循环

组循环,列表当中的值一一对应,打印出来

少的部分会用none补上

列表里的元素定义了循环的次数

第二层列表相当于内循环。

a1,a2,a3,a4.b1,b2,b3,b4.c1,c2,c3,c4,d1,d2,d3,d4

with_items 最常用

with_list 列表分组循环

with_togther 列表对应的列,以数据结合的方式循环

with_nested 相当于双重循环(第一层定义了循环的次数,第二层表示第一层的每个元素会循环几次)

扩展

创建两个用户 test1,test2

他们的组分别是 dn1 dn2


得先创建组

yum一键安装tree,sl,nginx,httpd,vsftpd,dhcp

- name: play1hosts: 20.0.0.50gather_facts: falsetasks:- name: yum infoyum: name={{ item }} state=latestwith_items:- tree- sl- nginx- httpd- vsftpd- dhcp

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

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

相关文章

Navicat16的下载与安装

Navicat16的下载与安装 1、官网下载地址:https://www.navicat.com.cn/download/navicat-premium 当然有的朋友在官网下载比较慢,我也为大家准备好了百度网盘链接 链接:https://pan.baidu.com/s/1dUcTSHr3761Oayh0-WfolA?pwdwfpl 提取码&am…

Nature Commun|ATAC-seq探究复发性小儿B系急性淋巴细胞白血病的染色质可及性图谱

表观基因组学分析是解释非编码基因组功能的重要方法之一。表观基因组学特征作为肿瘤细胞的基本特征,对发病机制、临床行为和治疗具有影响。在所有表观基因组标记中,组蛋白修饰和 DNA 甲基化已得到最广泛的研究,以深入了解表观基因组失调。 染…

车辆违规实线变道检测系统:融合Gold-YOLO改进YOLOv8

1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 研究背景与意义 随着城市化进程的加快和交通工具的普及,道路交通安全问题日益凸显。其中,车辆违规实线变道是导致交通事故的重要原因之一。在道路上&…

【办公软件】C# NPOI 操作Excel 案例

文章目录 1、加入NPOI 程序集,使用nuget添加程序集2、引用NPOI程序集3、设置表格样式4、excel加载图片5、导出excel 1、加入NPOI 程序集,使用nuget添加程序集 2、引用NPOI程序集 private IWorkbook ExportExcel(PrintQuotationOrderViewModel model){//…

虾皮电商 电商平台:东南亚最大的跨境电商平台

虾皮电商(Shopee)是新加坡的一家跨境电商平台,隶属于Sea Group公司。虾皮电商以其强大的社交功能和便捷的物流服务而闻名,为卖家和买家提供了出色的交易体验。本文将介绍虾皮电商的发展历程、优势以及为卖家提供的一站式解决方案。…

JVM征服面试篇-亿及流量系统设计(学习笔记)

一、如何拆解亿级流量系统-百万级结算系统如何设置JVM 1.先确认如下问题: 2.第一步:确定业务背景和核心流程 3.第二步:确认系统的压力在哪里 3.第三步:确定QPS 4.第四步:确定单笔订单耗时,寻找性能瓶颈 5.…

金蝶报表二开

本案例描述: 折旧明细报表中加入字段:存放地点、成本中心部门、使用人组织三个字段。 参考社区案例:报表二次开发添加自定义字段的指导方案 步骤: 1、加入报表插件 继承原报表的类。重写BuilderReportSqlAndTempTable、GetRe…

MyBatis 运行原理

MyBatis框架在操作数据库时,大体经过了8个步骤: 1.读取 MyBatis 配置文件:mybatis-config.xml 为 MyBatis 的全局配置文件,配置了 MyBatis 的运行环境等信息,例如数据库连接信息。 2.加载映射文件:映射文…

JDBC编程(主要针对其流程)

JDBC编程 注:在本篇博客中,使用的数据库是mysql!!! 一、JDBC编程六步 1、注册驱动 这步就是在告诉Java程序,即将要连接的为哪个品牌的数据库, 这里有两种方法 ① //就是使用一个了多态&am…

Dokit 开源库:简化 Android 应用开发的利器

Dokit 开源库:简化 Android 应用开发的利器 一、Dokit 简介二、Dokit 功能三、Dokit 使用3.1 DoKit Android 最新版本3.2 DoKit Android 接入步骤 四、总结 在 Android 应用开发过程中,我们经常需要处理调试、性能优化和用户体验等方面的问题。然而&…

stm32学习总结:4、Proteus8+STM32CubeMX+MDK仿真串口收发

stm32学习总结:4、Proteus8STM32CubeMXMDK仿真串口收发 文章目录 stm32学习总结:4、Proteus8STM32CubeMXMDK仿真串口收发一、前言二、资料收集三、STM32CubeMX配置串口1、配置开启USART12、设置usart中断优先级3、配置外设独立生成.c和.h 四、MDK串口收发…

期货股市联动(期股联动助推资本市场上扬)

期股联动——期货股市助推资本市场上扬 随着我国资本市场的不断发展,期货和股票这两个市场也在逐渐紧密地联系起来。期货和股票的相互作用是一种“期股联动”,它能够促进资本市场的上扬。 期货与股票市场 期货市场是一种标准化的场外交易市场&#xf…

【jvm从入门到实战】(十) 实战篇-内存调优

内存溢出和内存泄漏:在Java中如果不再使用一个对象,但是该对象依然在GC ROOT的引用链上,这个对象就不会被垃圾回收器回收,这种情况就称之为内存泄漏。内存泄漏绝大多数情况都是由堆内存泄漏引起的。少量的内存泄漏可以容忍&#x…

mysql:查看尝试连接mysql服务器的次数(包含成功和失败的尝试)

运行命令show global status like Connections;查看尝试连接mysql服务器的次数(包含成功和失败的尝试)。 例如:

华为云Stack 8.X 流量模型分析(二)

二、流量模型分析相关知识 1.vNIC ​ 虚拟网络接口卡(vNIC)是基于主机物理 NIC 的虚拟网络接口。每个主机可以有多个 NIC,每个 NIC 可以是多个 vNIC 的基础。 ​ 将 vNIC 附加到虚拟机时,Red Hat Virtualization Manager 会在虚拟机之间创建多个关联的…

七:爬虫-数据解析之正则表达式

七:正则表达式概述 正则表达式,又称规则表达式,(Regular Expression,在代码中常简写为regex、regexp或RE),是一种文本模式,包括普通字符(例如,a 到 z 之间的字母&#xf…

如何下载知网论文、专利的PDF格式

知网的论文格式有其特有的格式:CAJ。将CAJ格式转化为Word或者PDF非常麻烦,且会出现乱码的情况,直接用知网官方的CAJ浏览器也不太方便。为此,困扰了许久。 其实,知网可以直接下载PDF格式,只需在浏览器上安装…

Python启动提示ERROR: [WinError 10013] ��һ�ַ���Ȩ�޲�����ķ�ʽ����һ�������׽��ֵij��ԡ�

启动项目后: 其实就是默认的5000端口号被占用,端口号冲突 ,改下端口即可。 点击:编辑配置 空格加 --port5001 启动成功,点击下图标记位置

【STM32工具篇】使用CLion开发STM32

本文主要记录使用CLion开发STM32,并调试相关功能 使用的CLion版本:2023.3.1 CLion嵌入式配置教程:STM32CubeMX项目 |CLion 文档 (jetbrains.com) OpenOCD官网下载:Download OpenOCD for Windows (gnutoolchains.com) GNU ARM工…

【C++】理解string类的核心理念(实现一个自己的string类)

目录 一、引言 二、自我实现 1.成员变量的读写 2.构造与析构 3.迭代器 4.插入字符或字符串 尾插 中间插入 5.删除字符或子字符串 6.查找字符或子串 7.获取子串 三、补充 一、引言 实现自己的 string 类是学习 C 语言和面向对象编程的一个好方法。通过编写一个简单的…