news 2026/4/23 19:41:10

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/4/20 20:20:11

盘点全球领先照明企业:技术优势与市场特色全解析

鉴于LED照明行业处于高速发展的状况下&#xff0c;许多厂家依据各自的技术积累以及市场定位&#xff0c;为全世界用户给予了丰富多样的照明解决办法。这篇文章的意图就是梳理与介绍行业里部分具有代表性最为领先的企业&#xff0c;经由剖析它们的发展进程、技术特性以及核心优势…

作者头像 李华
网站建设 2026/4/23 16:03:48

日拱一卒之最小二乘法

日拱一卒之最小二乘法 由于最小二乘法在最近出现的频率比较高&#xff0c;所以单独拎出来研究研究&#xff0c;b站上有个几何的解读&#xff0c;虽然感觉弄得不错&#xff0c;但是还是觉得有点深了&#xff0c;而且有点快&#xff0c;各种公式的嵌套看的有点乱&#xff0c;于是…

作者头像 李华
网站建设 2026/4/19 20:40:37

PS 例程大全

PS 例程大全&#x1f4da; PS 基础语法ps [options]&#x1f527; 常用选项组合组合说明输出内容ps auxBSD风格&#xff0c;最常用所有用户的所有进程ps -efUNIX/标准风格完整格式列表ps -eF扩展完整格式更多细节ps -ely长格式详细技术信息ps -ejH显示进程树层次结构ps -eLf显示…

作者头像 李华
网站建设 2026/4/23 14:42:29

基于vue的个人博客论坛交流网站_sdj10346_springboot php python nodejs

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

作者头像 李华
网站建设 2026/4/20 7:07:00

wangEditor支持pdf书签目录结构导入功能

《一个独立开发者的"Word粘贴大作战"&#xff1a;从抓狂到真香的技术冒险》 ——上海野生程序员的血泪实录 第一章&#xff1a;当甲方爸爸说"要能粘贴Word图片"时&#xff0c;我的表情是这样的 事情是这样的&#xff1a;我独自开发了一个网站&#xff08…

作者头像 李华