当前位置: 首页 > news >正文

39.Ansible: 包含与导入

Ansible: 包含与导入

Ansible Playbook 中的 hosts: 字段必须引用在主机清单(Inventory)中明确定义的主机或组名

如果主机清单里面没有写ip,那么在playbook里面写的ip即使是正确的也依然不能执行

playbook引用主机清单的方式:

模式类型模式示例描述与解释
指定单个主机node1匹配清单中名为 node1 的主机。
node1.example.com匹配 FQDN (完整域名) 为 node1.example.com 的主机。
192.168.122.10匹配 IP 地址为 192.168.122.10 的主机。
指定主机组net匹配主机组 net 中的所有主机。
特殊关键字all匹配所有受管主机,这是最常用的模式之一。
通配符匹配'*'匹配所有主机,功能同 all通常需要引号以防止 Shell 扩展。
'*.example.com'匹配所有以 .example.com 结尾的主机名。
192.168.122.*'匹配 IP 地址在 192.168.122.0/24 网段的所有主机。
'web*'匹配所有以 web 开头的主机名。
集合操作net:webserver并集:匹配在 net webserver 组中的主机。
net:&webserver交集:匹配同时net webserver 组中的主机。
net:!node1排除:匹配在 net 组中但排除主机 node1 的所有主机。
字符范围node[1-5]匹配 node1, node2, node3, node4, node5
node[a-d]匹配 nodea, nodeb, nodec, noded

serial参数

Handlers 在任务中通过 notify 触发,但只在所有任务都运行完毕后一次性执行的操作(通常用于重启服务)。

  • 如果 Playbook 失败:即使前面5台主机的任务通知了 handler(例如 notify: restart httpd),这些 handler 也不会被执行

  • 这是因为 Ansible 的设计是:只有在所有主机的所有任务都成功时,才会触发 handlers,以确保状态的一致性。

  • httpd 软件包已经被安装在了前5台主机上。

  • 但是,如果安装任务后有 notify: start httpdnotify: restart httpd,那么 httpd 服务可能没有被启动,因为 handler 没有被触发

当serial的参数为2时,会先让2台主机运行所有任务,然后再让后面2台主机运行所有任务,这样如果其中一台主机出现错误,因为前面的主机已经跑完整个流程,就不需要重新启动

---
- name: a1hosts: node1,node2,node3serial: 2tasks:- name: a2debug:msg: 123- name: a3debug:msg: 234

在这里插入图片描述


导入

当我们需要重复安装时,可以通过导入提前写好的剧本或者任务来减少工作量

---
- name: repohosts: node1,node2,node3tasks:- name: repo1yum_repository:name: baseosdescription: aabaseurl: http://ansible.example.com/rhel9/BaseOSenabled: yesgpgcheck: no- name: repo2yum_repository:name: appstreamdescription: aa1baseurl: http://ansible.example.com/rhel9/AppStreamenabled: yesgpgcheck: no

导入node2然后安装httpd

[student@master ansible]$ vim httpd.yml
---
- name: httpd1hosts: node2import_playbook: repo.ymltasks:- name: httpd2yum:name: httpdstate: present

在这里插入图片描述

写一个安装samba服务的任务

---
- name: s1yum:name: sambastate: present

导入到node3

---
- name: s3import_playbook: repo.yml
- name: s4hosts: node3tasks:- import_tasks: samba.yml

在这里插入图片描述


包含

用include_tasks: samba.yml可以查看包含任务的地址

---
- name: a1hosts: node2tasks:- include_tasks: samba.yml

在这里插入图片描述

http://www.dtcms.com/a/364912.html

相关文章:

  • FastVLM:高效视觉编码助力视觉语言模型突破高分辨率效率瓶颈
  • 独家|字节Seed部门增发百万期权,大模型战线开启“锁人”模式
  • 【golang长途旅行第37站】Redis连接池
  • MMD动画(一)模型、动作、音乐导入
  • 【大前端】React 父子组件通信、子父通信、以及兄弟(同级)组件通信
  • 科技赋能田园:数字化解决方案开启智慧农业新篇章
  • centos9 docker启动不起来,docker启动发生堵塞问题!
  • 【明道云】[工作表控件5] 手机控件的格式化处理
  • 【机器学习】实战:市场增长点分析挖掘项目
  • SyncBack 备份同步软件: 使用增量备份, 节省网络传输及存储成本
  • 【NVIDIA B200】2.all_reduce_perf NVIDIA B200 8-GPU 系统 All-Reduce 性能深度解析
  • 力扣115:不同的子序列
  • 热烈庆祝 | 一二三物联网携这款产品入选2025年度山东省首台(套)技术装备生产企业及产品名单
  • Day20 JavaScript 进阶核心:IIFE、代码规范、调试与对象模型
  • AI优化SEO关键词策略指南
  • 时序数据库选型指南:Apache IoTDB快速部署与实战应用
  • 时序数据库IoTDB的核心优势
  • mysql第五天学习 Mysql全局优化总结
  • 如何使文件夹内的软件或者文件不受windows 安全中心的监视
  • FastGPT社区版大语言模型知识库、Agent开源项目推荐
  • 智慧用电安全解决方案:打造全流程可视化管控
  • 知微集:Python中的线程Thread(一)
  • MCP是什么? 小白如何学习使用MCP?一篇文档带你详细了解神秘的MCP
  • 【C++】控制台输入与输出
  • osgb转b3dm转glb小工具流程-解决办法
  • Linux内核进程管理子系统有什么第四十一回 —— 进程主结构详解(37)
  • 《用 Flask 构建用户认证系统:从零开始实现注册与登录功能》
  • 10.2 工程学中的矩阵(2)
  • 基于Docker和Kubernetes的CI/CD流水线架构设计与优化实践
  • 加解密安全-侧信道攻击