news 2026/5/12 18:09:40

Ansible-Playbook

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Ansible-Playbook

ansible-Playbook是一系列ansible命令的合集,使用的是yaml语言进行编写的,自上而下的顺序进行执行,并且可以进行使用变量

Yaml语法

yaml语言是专门使用于进行编写配置文件的

大小写敏感

使用缩进来进行表示层级关系

缩进的空格数不重要,只要相同层级的在左侧对齐就可以

#表示注释

支持的数据类型1、纯量:单个,不可以再分的值,数据最小单位,单个变量2、数组:一组按次序排序的值,数组元素使用-开头3、对象:键值对合集 使用冒号结构 例如name: android 冒号后面必须使用空格 语法案例 name:Tom age:27 wife: name:jerry age:25 children: -name: jack age:15-name: bob age:14

Playbook基本语法

所有写的playbook文件必须使用.yml进行结尾

执行playbook语法 ansible-playbook yml文件

playbook是自上到下执行的 中间有报错的不影响 修复之后可以反复执行

playbook结构说明,playbook是由一个或者是多个play组成的,一个task就是对ansible的模块的调用,将多个play安装顺序的组织到playbook中就是编排
playbook案例

安装在nfs主机上安装http服务,自定义网页为 Hello playbook http路径:/var/www/html/index.html

#准备好网页资源[root@m01 http]# cat index.htmlHELLO PLAYBOOK!!!#编写playbook[root@m01 http]# cat http.yml-name:install httpshosts:nfstasks:-name:install httpdyum:name:httpdstate:present-name:copy wordcopy:src:/http/index.htmldest:/var/www/html/index.html-name:start httpssystemd:name:httpdstate:startedenabled:yes#执行剧本[root@m01 http]# ansible-playbook http.ymlPLAY[install https]*********************************************************** TASK[Gathering Facts]*********************************************************ok:[nfs]TASK[install httpd]***********************************************************ok:[nfs]TASK[copy word]***************************************************************changed:[nfs]TASK[start https]*************************************************************changed:[nfs]PLAY RECAP*********************************************************************nfs:ok=4 changed=2 unreachable=0 failed=0#验证访问nfs的80端口[root@m01 http]# curl 10.0.0.31:80HELLO PLAYBOOK!!!
ansible-playbook常用选项

-v 打印运行的结果

-vv 打印任务运行的结果以及任务的配置信息

-vvv 打印包含的远程信息

-vvvv 具体的详细信息

#校验playbook的语法--syntax-check[root@m01 http]# ansible-playbook --syntax-check http.ymlplaybook: http.yml#测试运行playbook-C 测试运行 不会真的进行执行[root@m01 http]# ansible-playbook -C http.ymlPLAY[install https]*********************************************************** TASK[Gathering Facts]********************************************************* ok:[nfs]TASK[install httpd]*********************************************************** ok:[nfs]TASK[copy word]*************************************************************** ok:[nfs]TASK[start https]************************************************************* ok:[nfs]PLAY RECAP ********************************************************************* nfs:ok=4changed=0unreachable=0failed=0skipped=0rescued=0ignored=0
多个任务的playbook案例

在nfs上进行安装http服务启动并且安装mariadb

#编写剧本[root@m01 http]# cat more.yml- name: use httpd hosts: nfs tasks: - name: start httpd yum: name: httpd state: present - name: copy copy: src: /http/index.html dest: /var/www/html/index.html - name: systemd systemd: name: httpd state: started enabled:yes- name:installmariadb hosts: nfs tasks: - name: yum yum: name: - mariadb - mariadb-server state: present - name: started systemd: name: mariadb state: started enabled:yes执行剧本[root@m01 http]# ansible-playbook more.ymlPLAY[use httpd]************************************************************************************************************************************************** TASK[Gathering Facts]******************************************************************************************************************************************** ok:[nfs]TASK[start httpd]************************************************************************************************************************************************ ok:[nfs]TASK[copy]******************************************************************************************************************************************************* ok:[nfs]TASK[systemd]**************************************************************************************************************************************************** ok:[nfs]PLAY[install mariadb]******************************************************************************************************************************************** TASK[Gathering Facts]******************************************************************************************************************************************** ok:[nfs]TASK[yum]******************************************************************************************************************************************************** changed:[nfs]TASK[started]**************************************************************************************************************************************************** changed:[nfs]PLAY RECAP ******************************************************************************************************************************************************** nfs:ok=7changed=2unreachable=0failed=0skipped=0rescued=0ignored=0
ignore_error模块可以忽略错误信息
#使用方法- name:installmariadb hosts: nfs tasks: - name: yum yum: name: - mariadb - mariadb-server state: present - name: started systemd: name: mariadb state: started enabled:yesignore_errors: True
Handler模块

handler事实上就是一个task,但是这个task默认是不执行的,只有被触发才会进行使用,通过notify进行监控某个或某几个task,一旦task执行结果有变化就触发执行handler

handler会在所有的play执行完成之后最后执行一次

Handler 的核心使用场景是:处理 “配置变更后需要重启 / 重载服务” 的场景(这是运维中最常见的需求)。

举个通俗的例子:你管理一台 Nginx 服务器,日常操作有两个步骤:

  1. 修改 Nginx 的配置文件(<font style="color:rgb(0, 0, 0);">/etc/nginx/nginx.conf</font>);
  2. 如果配置文件改了,就重启 Nginx 服务(让配置生效);如果没改,就不用重启。
- name:testhandler usage hosts: nfs tasks:# 任务1:安装httpd(若已安装,changed: false;若未装,changed: true)- name:installhttpd package yum: name: httpd state: present# 任务2:拷贝httpd配置文件(若文件有变化,changed: true,触发Handler;否则不触发)- name: copy httpd configfilecopy: src: /tmp/httpd.conf# 控制端的配置文件dest: /etc/httpd/conf/httpd.conf# 目标主机的配置文件notify: restart httpd# 关键:通知名为“restart httpd”的Handler# 定义Handlers部分:这里是所有Handler任务handlers:# Handler任务:重启httpd服务(名称要和notify的名称完全匹配)- name: restart httpd systemd: name: httpd state: restarted enabled:yes
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/3 20:19:28

会员管理系统如何成为企业数字化转型的增长核心

在当下企业朝着数字化转型迈进的这一进程期间&#xff0c;那种会员管理系统所担当的角色&#xff0c;已然是从单纯的仅用于记录客户信息的工具&#xff0c;转变成为能够推动业务获得增长的核心动力装置了。有一个具备高效性能的会员管理系统&#xff0c;它能够对来自多个渠道的…

作者头像 李华
网站建设 2026/5/3 19:53:56

班级成绩分析报告,学科对比与教学调整建议

摘要Top Pick&#xff1a;爱查分 核心价值&#xff1a;从海量成绩数据中自动提炼教学洞察&#xff0c;让班级管理从"凭感觉"到"用数据说话" 关键亮点&#xff1a;一键生成期末总结报告 | 学科优劣势自动识别 | 分数段分布可视化 | 学生进步轨迹追踪 | 年级…

作者头像 李华
网站建设 2026/4/18 15:08:22

C#之文件读取

PathPath类位于System.IO命名空间&#xff0c;是一个静态类&#xff0c;可以用来操作路径的每一个字段路径相对路径: 程序运行(.exe文件)文件所在目录为参考点./ : 从参考点目录下查找, 当前目录../ 上级目录 参考点目录上级目录//参考点: D:\2511班\code\code_12_10\app1\bin\…

作者头像 李华
网站建设 2026/4/28 12:27:40

基于vue的健身房管理系统_tgk4bbwq_springboot php python nodejs

目录 具体实现截图项目介绍论文大纲核心代码部分展示项目运行指导结论源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作 具体实现截图 本系统&#xff08;程序源码数据库调试部署讲解&#xff09;同时还支持java、ThinkPHP、Node.js、Spring…

作者头像 李华
网站建设 2026/5/9 12:44:15

HTTP协议在JSP大附件上传中如何优化性能?

大文件上传系统开发指南&#xff08;基于原生JSSpringBoot&#xff09; 老铁&#xff0c;先别慌&#xff01;让我帮你捋一捋这个"毕业设计找工作"双重大礼包 兄弟&#xff0c;看到你的需求我仿佛看到了当年被毕业设计支配的恐惧。不过别担心&#xff0c;我这个&quo…

作者头像 李华
网站建设 2026/5/12 5:29:23

JAVA中如何利用JSP实现视频文件的分片上传?

企业级大文件安全传输解决方案 作为广东IT行业软件公司的项目负责人&#xff0c;针对贵司的大文件传输需求&#xff0c;我提供以下专业解决方案。本方案完全满足高稳定性、高安全性要求&#xff0c;支持100G级别文件传输&#xff0c;并具备完善的信创国产化适配能力。 核心功…

作者头像 李华