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

ansible-playbook 剧本

1.Playbook介绍

一个剧本里面可以有多个play(任务列表),每个play只能有一个tasks(只有一个任务),每个tasks可以有多个name(指定描述)

playbook是ansible用于配置,部署,和管理被控节点的剧本。通过playbook的详细描述,执行其中的tasks,可以让远端主机达到预期的状态。playbook是由一个或多个”play”组成的列表。 当对一台机器做环境初始化的时候往往需要不止做一件事情,这时使用playbook会更加适合。通过playbook你可以一次在多台机器执行多个指令。通过这种预先设计的配置保持了机器的配置统一,并很简单的执行日常任务。

工作原理:

ansible通过不同的模块实现相应的管理,管理的方式通过定义的清单文件(hosts)所管理的主机包括认证的方式连接的端口等。所有的功能都是通过调用不同的模块(modules)来完成不同的功能的。不管是执行单条命令还是play-book都是基于清单文件。执行的方式可以是对本地执行也可以通过ssh的方式对远程主机进行操作,常见的是通过ssh的方式,对远程主机进行操作。

playbook格式

playbook由YMAL语言编写。YMAL格式是类似于JSON的文件格式,便于人理解和阅读,同时便于书写。

核心元素:
Playbooks  
Variables     #变量元素,可传递给Tasks/Templates使用;  
Tasks          #任务元素,由模块定义的操作的列表,即调用模块完成任务;  
Templates   #模板元素,使用了模板语法的文本文件;  
Handlers     #处理器元素,通常指在某事件满足时触发的操作;  
Roles          #角色元素

playbook的基础组件:
name:
    定义playbook或者task的名称(任务的描述信息),每一个play都可以完成一个任务。
hosts: 
    playbook中的每一个paly的目的都是为了让某个或某些以某个指定用户的身份执行任务。hosts用于指定要执行指定任务的主机.
user :
    remote_user则用于指定远程主机上的执行任务的用户,也可以使用user(基本上是root)
tasks :
    任务列表play的主体部分是task list. task list中的各任务按次序逐个在hosts中指定的所有主机上执行,即在所有主机上完成第一个任务后再开始第二个。
vars:
   定义变量(如果不使用内部变量需要提前定义)定义到剧本中
vars_files:
  调用定义变量文件   定义到文件中
notify:
    任务执行结果如果是发生更改了的则触发定义在handler的任务执行
handlers:
    用于当前关注的资源发生变化时采取一定指定的操作

写剧本注意项:
不可以使用tab
同级元素对齐
一个key对应一个值是字典
:后面是空格
通过缩进表示层级关系
 中间有错,直接退出不接着执行,想要有错接着执行要加参数
 =识别不到,可以用:

2. 剧本

2.1 

参数解释:
    hosts: 参数指定了对哪些主机进行操作;
    user: 参数指定了使用什么用户登录远程主机操作;
    tasks: 指定了一个任务.
    name:参数同样是对任务的描述,在执行过程中会打印出来。

[root@ansible-server ~]# cd /etc/ansible/
[root@ansible-server ansible]# vim test.yml  #创建文件必须以.yml结尾
---   #分隔符也可以不写- hosts: webservers1user: roottasks:- name: playbook_testfile: state=touch path=/tpm/playbook.txt
检测语法:
[root@ansible-server ansible]# ansible-playbook --syn
http://www.xdnf.cn/news/9642.html

相关文章:

  • Python编程7——面向对象编程2
  • 华为OD机试真题——模拟工作队列(2025A卷:200分)Java/python/JavaScript/C/C++/GO最佳实现
  • 智能体通信协议之A2A和ANP对比分析
  • 【测试报告】博客系统
  • 学习python day10
  • 5.2.2二叉树的存储结构
  • 电脑软件管家 免安装便携 四十多种功能系统优化”“磁盘清理”“隐私保护
  • Windows中“无法成功完成操作,因为文件包含病毒或潜在的垃圾软件
  • 辛格迪客户案例 | 合规升级之路:辛格迪助力倍特药业迈向卓越
  • 面对 UI 差异化的调试难题:本地多设备测试中的 WebDebugX 应用实录
  • 【蓝桥杯嵌入式】【复盘】第15届省赛真题
  • Python学习(3) ----- Python的函数定义及其使用
  • OpenLayers 加载网格信息
  • [CISCN 2021初赛]glass
  • 【第2章 绘制】2.15 剪辑区
  • 【摄影教程】
  • 使用jessibuca+wvp+zlm实现html无插件播放摄像头实时画面
  • promise详细总结
  • VTK|Z轴拉伸功能的实现
  • 【Redis】通用命令
  • 使用Milvus运行一个Milvus单机版实例
  • 什么是 SRM、ERP、SCM,如何科学选型采购系统
  • 【Python】 -- 趣味代码 - 皮卡丘
  • 打造卓越客户支持体验:知识共享驱动服务优化
  • 利用openwrt路由器和随身WIFI搭建CPE
  • 世界模型:AGI突破口?一文了解NVIDIA Cosmos 平台
  • PyTorch 入门学习笔记
  • 【Python】 -- 趣味代码 - 数字游戏
  • 从 0 开始学习大模型应用开发(加餐二)- 使用Spring AI开发MCP系统
  • Java 事务管理:在分布式系统中实现可靠的数据一致性