【Ansible】04

【Ansible】03

任务块

block任务块

  • 使用 block 可以将多个任务合并为一个组
  • 可以将整个 block任务组 , 一起控制是否要执行
# 如果webservers组中的主机系统发行版是Rocky,则安装并启动nginx
[root@pubserver ansible]# vim block1.yml
---
- name: block taskshosts: webserverstasks:- name: define a group of tasksblock:- name: install nginx   # 通过yum安装nginxyum:name: nginxstate: present- name: start nginx     # 通过service启动nginx服务service:name: nginxstate: startedenabled: yeswhen: ansible_distribution=="Rocky"   # 条件为真才会执行上面的任务[root@pubserver ansible]# ansible-playbook block1.yml

rescue 和 always

  • block 组成任务组
  • resuce 判定任务组中是否有失败组 ( failed ) , 失败则执行 resuce 中的任务
  • always 不与任务组的成功与否关联 , 总是执行任务
[root@pubserver ansible]# vim block2.yml
---
- name: block testhosts: webserverstasks:- name: block / rescue / always test1block:- name: touch a filefile:path: /tmp/test1.txtstate: touchrescue:- name: touch file test2.txtfile:path: /tmp/test2.txtstate: touchalways:- name: touch file test3.txtfile:path: /tmp/test3.txtstate: touch# 执行playbook web1上将会出现/tmp/test1.txt和/tmp/test3.txt
[root@pubserver ansible]# ansible-playbook block2.yml
[root@web1 ~]# ls /tmp/test*.txt
/tmp/test1.txt  /tmp/test3.txt# 修改上面的playbook,使block中的任务出错
[root@web1 ~]# rm -f /tmp/test*.txt
[root@pubserver ansible]# vim block2.yml
---
- name: block testhosts: webserverstasks:- name: block / rescue / always test1block:- name: touch a filefile:path: /tmp/abcd/test11.txtstate: touchrescue:- name: touch file test22.txtfile:path: /tmp/test22.txtstate: touchalways:- name: touch file test33.txtfile:path: /tmp/test33.txtstate: touch# 因为web1上没有/tmp/abcd目录,所以block中的任务失败。但是playbook不再崩溃,而是执行rescue中的任务。always中的任务总是执行
[root@pubserver ansible]# ansible-playbook block2.yml
[root@web1 ~]# ls /tmp/test*.txt
/tmp/test22.txt  /tmp/test33.txt

loop 循环

  • 相当于 shell 中的 for循环
  • ansible 中循环用到的变名名称是固定的 , item
# 在test组中的主机上创建5个目录/tmp/{aaa,bbb,ccc,ddd,eee}
[root@pubserver ansible]# vim loop1.yml
---
- name: use loophosts: webserverstasks:- name: create directoryfile:path: /tmp/{{item}}state: directoryloop: [aaa,bbb,ccc,ddd,eee]# 上面写法,也可以改为:
---
- name: use loophosts: webserverstasks:- name: create directoryfile:path: /tmp/{{item}}state: directoryloop: - aaa- bbb- ccc- ddd- eee[root@pubserver ansible]# ansible-playbook loop1.yml# 使用复杂变量。创建zhangsan用户,密码是123;创建lisi用户,密码是456
# item是固定的,用于表示循环中的变量
# 循环时,loop中每个-后面的内容作为一个整体赋值给item。
# loop中{}中的内容是自己定义的,写法为key:val
# 取值时使用句点表示。如下例中取出用户名就是{{item.uname}}
[root@pubserver ansible]# vim loop_user.yml
---
- name: create usershosts: webserverstasks:- name: create multiple usersuser:name: "{{item.uname}}"password: "{{item.upass|password_hash('sha512')}}"loop:- {"uname": "zhangsan", "upass": "123"}- {"uname": "lisi", "upass": "456"}[root@pubserver ansible]# ansible-playbook  loop_user.yml

role 角色

  • role角色 , 可以实现playbook重复使用
  • 角色role相当于把任务打散 , 放到不同的目录中
  • 再把一些固定的值 , 如用户名 , 软件包 , 服务等 , 用变量来表示
  • role 角色定义好之后, 可以在其他playbook中直接调用
1. 书写不同内容到对应目录的 main.yml
1) 创建motd模板文件 [ roles/motd/templates/motd ]
[root@pubserver ansible]# vim roles/motd/templates/motd
Hostname: {{ansible_hostname}}
Date: {{ansible_date_time.date}}
Contact to: {{admin}}
2) 创建变量 [ roles/motd/vars/main.yml ]
[root@pubserver ansible]# vim roles/motd/vars/main.yml  # 追加一行
admin: zzg@tedu.cn
3) 创建任务 [ roles/motd/tasks/main.yml ]
[root@pubserver ansible]# vim roles/motd/tasks/main.yml  # 追加
- name: modify motdtemplate:src: motd      # 这里的文件,自动到templates目录下查找dest: /etc/motd
2. 创建 playbook , 调用motd角色
[root@pubserver ansible]# vim role_motd.yml
---
- name: modify motd with rolehosts: webserversroles:- motd
3. 执行playbook
[root@pubserver ansible]# ansible-playbook role_motd.yml 

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

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

相关文章

个人搭建alist网盘的经验记录备忘

1、搭建宝塔LINUX面板,安装Docker 2、添加仓库 3、从镜像拉取xhofe/alist:latest 4、添加容器 5、新建一个网站,别忘记申请个SSL证书,重要的是反向代理 6、新建个mysql数据库 7、修改alist数据库的链接地址,方便自己备份&a…

如何有效地进行汽车制造业文件共享,一文了解

随着数字化转变,企业的业务文件大多通过电子形式在内外部流转。这增加了外发文件数据泄露或被篡改的风险,如何保护外发文件安全已成为企业不容忽视的课题。其中汽车制造业是一个高度依赖文件共享与协作的行业,涉及设计图纸、技术文件、供应链…

Docker命令总结

一.Docker常用命令总结 1.镜像命令管理 指令描述ls列出镜像build构建镜像来自Dockerfilehistory查看历史镜像inspect显示一个或多个镜像的详细信息pull从镜像仓库拉取镜像push推送一个镜像到仓库rm移除一个或多个镜像prune一处未使用的的镜像,没有被标记或被任何容…

【用户投稿】Apache SeaTunnel 2.3.3+Web 1.0.0版本安装部署

项目概要 Apache SeaTunnel 是一个分布式、高性能、易扩展的数据集成平台,用于实时和离线数据处理,支持多种数据源之间的数据迁移和转换。 其中,Apache-seatunnel-web-1.0.0-bin.tar.gz和apache-seatunnel-2.3.3-bin.tar.gz代表了 Apache SeaTunnel Web…

RTT学习 开发环境搭建

添加文件到工程 BSP下的applications文件夹用于存放用户自己的应用代码,目前只有一个main.c文件,如果用户的应用代码不是很多,建议相关源文件都放在这个文件夹下面,在applications文件夹下新增两个简单的文件hello.c和hello.h。 …

什么是正向代理和反向代理

正向代理和反向代理是两种不同的代理服务器配置方式,它们在代理的方向和作用上有所不同。 一、正向代理(Forward Proxy) 代表客户端发送请求到其他服务器的代理服务器。客户端将请求发送给正向代理服务器,然后由正向代理服务器代…

如何使用OSI七层模型的思路进行Linux网络问题排障?

在运维工作中,我们可能经常遇到诸如服务器无法远程连接、网站无法访问等各种网络问题。此时你是否想过,我们常背的OSI七层模型,能在处理这样的实际问题中发挥什么样的作用呢? 基于OSI架构的方法论,我们可以使用自下而…

ATFX汇市:欧元区和美国的制造业PMI将发布,市场预期乐观

ATFX汇市:今日16:00,市场研究机构Markit将发布欧元区4月制造业PMI初值,前值为46.1,预期值46.6,预期将增加0.5个百分点。历史数据看,最近三个月,欧元区的制造业PMI均处于较高水平,期间…

Springboot+Vue项目-基于Java+MySQL的房屋租赁系统(附源码+演示视频+LW)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:Java毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计 &…

从0到1带你玩转pandas

学习 pandas 的过程可以分为几个阶段,每个阶段都围绕着不同的核心技能和概念。下面是一个为初学者设计的学习大纲: 一. 基础介绍 学习如何安装和设置 pandas 以及了解它的基本概念是开始使用 pandas 进行数据分析的第一步。下面我将详细介绍这些步骤&am…

前端开发攻略---封装日历calendar组件(纯手搓),可以根据您的需求任意改变,可玩性强

1、演示 2、代码 <template><div class"box" v-if"startMonth.year"><div class"left"><div class"top"><span class"iconfont" click"changeMonth(-1)">左</span><span&…

一个基于更新频率和卡片等级、浏览量的动态推荐排序算法

需求背景 真实场景会更复杂一些&#xff0c;下面抽象出一个简单的示例来举栗子&#xff1a; 比如现在有一个卡片列表&#xff0c;卡片自身有卡片的创建时间、卡片等级、浏览量几个关键字段。 如果单纯的根据卡片等级去排序&#xff0c;那么很容易导致一些高等级的旧卡片一直霸…

jsoncpp解析文件

背景&#xff1a;先用wireshark抓数据帧&#xff0c;过滤自己需要的之后转换为json文件&#xff0c;然后使用jsoncpp工具解析&#xff0c;获取其中有用的数据&#xff0c;最后把数据写入到文件中&#xff0c;之后分析数据或根据数据画图。 我分析的json文件格式如下&#xff0c…

Python学习从0开始——项目一day02数据库连接

Python学习从0开始——项目一day02数据库连接 一、在线云数据库二、测试数据库连接三、数据库驱动介绍四、SQL执行4.1插入测试数据4.2安装数据库连接模块4.3测试SQL语句执行4.4执行SQL的固定步骤及示例 一、在线云数据库 找了一个在线数据库&#xff0c;需要邮箱注册&#xff…

甄美天使1+3退休模式开发|最新升级模式

我是新零售商业架构师肖琳&#xff0c;易创客社交新零售创始‌‌‌‌‌人&#xff0c;擅长品牌从0-1、1-10起盘全过程。易创客新零售&#xff0c;提供商业模式解决方案系统&#xff0c;包括分销系统、微商系统、新零售系统&#xff1b;提供社交新零售陪跑代运营&#xff0c;提供…

Uds的0x10服务

0x10为诊断会话控制&#xff0c;该服务下有三种子功能&#xff0c;分别为默认会话&#xff0c;扩展会话&#xff0c;编程会话。 如果长时间在非默认会话下&#xff0c;没有用诊断仪跟ECU通讯&#xff0c;那么ECU会调回或者是返回到默认会话下。一般UDS协议上推荐是5000毫秒&…

Ubuntu搭建RP2040开发环境-1

Ubuntu搭建RP2040开发环境-1 2024-4-23 hongxi.zhu 前置依赖&#xff08;可选&#xff09; sudo apt-get install vim sudo apt-get install cmake sudo apt-get install libncurses-dev sudo apt-get install libssl-dev sudo apt-get install git一、下载SDK和编译链 下载SD…

【OpenGL概念】QOpenGLWidget类详述--此文档基于Qt5.14.2

一、说明 QOpenGLWidget提供了在Qt应用程序中显示集成OpenGL图形的功能。使用它非常简单&#xff1a;让您的类继承它&#xff0c;并像使用任何其他QWidget一样使用子类&#xff0c;除了您可以选择使用QPainter和标准OpenGL渲染命令之间的区别。 二、QOpenGLWidget概述 QOpenGL…

云原生的基石:containerd引领未来容器发展趋势

文章目录 一、Containerd简介&#xff1a;容器技术的心脏二、Containerd核心原理解析三、Containerd与Docker的关系四、Containerd在云原生应用部署中的作用五、Containerd的扩展性和插件机制六、Containerd的安全特性七、Containerd的性能优化八、Containerd的社区和生态系统九…