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

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
http://www.jsqmd.com/news/88444/

相关文章:

  • 【Git原理与使用】(六)Git 企业级开发模型实战:从分支规范到 DevOps 全流程落地
  • 教程 32 - 几何体系统
  • ChanlunX缠论插件:让技术分析变得简单直观的智能助手
  • 【学习记录】第六周
  • 2025 年全国小学生统一考试 数学
  • Ursa.Avalonia中文显示终极解决方案:告别乱码,打造完美跨平台界面
  • 雷达原理笔记 第一章 雷达的基本原理
  • 2025年年终出国留学机构推荐:聚焦英美澳加等主流国家申请,专家严选10家高成功率服务商案例解析 - 品牌推荐
  • 全网最全 Cursor 配置指南:从入门到高效工作流!建议收藏
  • 日拱一卒之最小二乘法
  • 实用指南:在Linux系统上使用nmcli命令配置各种网络(有线、无线、vlan、vxlan、路由、网桥等)
  • Cursor + MCP:冲击的不仅是前端,而是整个软件开发范式!
  • CF2109C1 Hacking Numbers (Easy Version) 解题报告
  • 一文了解AOSP是什么?
  • “改进滑膜控制与传统控制的永磁同步电机PMSM仿真模型”之理论与实践对比
  • 九尾狐AI赋能传统企业转型白皮书:从“听懂”到“做到”的AI获客实战指南
  • 光伏储能系统搭上虚拟同步发电机(VSG)这趟车,简直像是给新能源装了个智能大脑。今儿咱们直接上硬菜,拆解这个能跑出完美波形的并网仿真模型
  • 门槛低、含金量高!2026大专计算机专业必考8大证书
  • 重构智慧书-第10条:名声与好运
  • 智能中控屏,点亮未来的智能生活
  • 主流小程序服务商功能特点与选择要点分析
  • C#+VisionMaster联合开发(一)_操作方案
  • vue学习笔记二
  • 食品异物检测精度:硬件、软件与方案的关键作用
  • 2025年年终全自动洗车机厂家推荐:聚焦多场景应用与可靠性验证的5款知名品牌深度解析 - 品牌推荐
  • CF2037E Kachinas Favorite Binary String 解题报告
  • 苹果叶片病害检测与分类:Yolo11-C3k2-iRMB-Cascaded模型创新应用详解
  • CF2069B Set of Strangers 解题报告
  • 来探厂啦!探秘itc保伦股份“国产自研”背后的技术底气? - 速递信息
  • YSL口红html+css 6页(黑色老版)