news 2026/4/16 18:09:18

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/16 17:22:29

Comtos Linux 追求的哲学

【Comtos Linux 追求的哲学】哲学&#xff0c;以思辨探索世界的普遍本质与意义‌。 科学&#xff0c;以实证法研究具体领域的规律。 技术&#xff0c;旨在改造世界、解决实际问题。在计算机操作系统领域&#xff0c;科学与技术光芒彰显。而哲学之光则暗淡。科学与技术指导着事物…

作者头像 李华
网站建设 2026/4/16 14:05:57

Nginx核心架构设计

目录 1 Nginx核心架构 2 架构组件和工作原理 3 代理原理 1 Nginx核心架构 2 架构组件和工作原理 3 代理原理

作者头像 李华
网站建设 2026/4/16 11:56:40

《Effective C++》电子书免费分享

Effective C 中文版第三版 高清PDF资料免费分享&#xff0c;只可用于学习使用链接&#xff1a;https://pan.baidu.com/s/1ZbIFI6kAhqnnOHVit7BNdQ?pwdN858觉得有用可以点个赞哦

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

Asio应用(高级):构建高性能、安全、跨平台的网络系统

从异步模型到高级应用&#xff0c;这一步跨越的不只是技术栈的扩展&#xff0c;更是从“能用”到“卓越”的工程思维转变。本文将带你深入Asio的高级应用领域&#xff0c;掌握构建企业级网络系统的核心技能。 1. 复杂协议实现&#xff1a;超越TCP/UDP HTTP服务器实现&#xff1…

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

苹果叶片病害检测与分类:Yolo11-C3k2-iRMB-Cascaded模型创新应用详解

本数据集名为"apple diseases detection - v3 apppppppppl"&#xff0c;是一个专门用于苹果叶片病害检测的计算机视觉数据集&#xff0c;采用YOLOv8格式标注。该数据集由qunshankj平台用户提供&#xff0c;采用MIT许可证授权&#xff0c;于2023年9月2日导出。数据集共…

作者头像 李华
网站建设 2026/4/15 23:54:33

实习面试题-ZooKeeper 原理面试题

1.ZooKeeper 使用推送模式还是拉取模式来通知客户端? 回答重点 ZooKeeper 使用的是推送模式(push model)来通知客户端。 扩展知识 1)什么是推送模式和拉取模式? 推送模式(Push Model)意味着服务器主动将数据或变更推送给客户端;而拉取模式(Pull Model)则是客户端…

作者头像 李华