6.Ansible Playbooks介绍

news2024/11/24 3:29:20
  1. 什么是Ansible Playbooks
    Ansible PlaybookAnsible的编排语言。在Playbooks中, 我们定义了我们想要Ansible做什么。这是一组你提供给Ansible的指令来发挥它的魔力。
    在这里插入图片描述
    例如上面的例子, 它可以像在不同服务器上按顺序运行一系列命令一样简单,并以特定顺序重新启动这些服务器。或者, 它可能像在公共和私有云基础架构中部署数百个VM一样复杂,为VM提供存储, 设置其网络和群集配置,配置其上的应用程序(如Web服务器或数据库服务器), 设置负载平衡,设置监控组件, 安装和配置备份客户端以及使用有关新VM的信息更新配置数据库等。

  2. Playbooks的编写
    让我们仔细看看行动手册是如何编写的。请记住, 所有Playbook都是以YAML格式编写的,就是为什么我们之前花了一些时间来介绍YAML。
    Playbook是包含一组Play的单个YAML文件。
    一个Play定义了一组要在单个或一组主机上运行的活动。
    tasks是要在主机上执行的单个操作。tasks包括在主机上执行命令或脚本、在主机上安装包, 或者执行关闭或重新启动操作。在这里插入图片描述让我们来看看实际的Paly。这里显示的是一个简单的Ansible Playbook, 其中包含一个名为play 1的单一play。此Play的目的是在本地主机上一个接一个地运行一组活动。
    请记住, 要运行这些操作的hosts是和name以及tasks同一级别定义的。在本例中, 我们只想在本地主机上进行测试, 这就是将其设置为localhost的原因。hosts可能是你Inventory文件里的任何东西。
    接下来, 我们在主机上一个接一个地运行一组命令。首先, 我们打印日期, 然后在服务器上运行脚本,然后使用YAML模块安装httpd包, 最后使用service模块启动Web服务器。

    让我们看看这个示例剧本格式, 并尝试将它与我们在前面的YAML部分中学习的内容联系起来。我做了一个小改动, 把任务列表分成两个单独的部分。
    在这里插入图片描述
    YAML文件是我们的Playbook,包含两个Play,每一个Play是数组list,这由破折号-指出。每个Play又是一个字典,并有一组名为namehoststasks的属性。记住, 这些是字典的属性,所以顺序并不重要。所以, 即使你交换了namehosts的位置,它仍然有效。
    但是, 对于tasks来说, 这是不一样的。如您所见, 这些任务是一个lists数组,由破折号表示。lists是有序的集合,因此条目的位置很重要。如果您在这里交换条目的位置,将会使得意义变得不同。
    因此, YAML格式是开发Playbook的关键,您必须特别注意文件的结构。
    在这里插入图片描述

    hosts指定为localhost,这意味着任务下列出的所有这些操作都将在本地主机上执行。您可以在此处指定任何主机或组,但必须确保在创建的Inventory文件中首先定义主机或组。Inventory文件中定义的主机必须与Playbook中使用的hosts匹配,并且从inventory文件中检索主机的所有连接信息。如果指定了一个组,则列出的任务将同时在该组下列出的所有主机上执行。

    让我们转向moduletasks运行的不同操作称为module
    在这里插入图片描述
    在本例中, commandscriptyumservice都是Ansible模块。还有数百个其他模块可开箱即用。有关这些模块的信息可以在Ansible文档网站上找到,或者您可以简单地运行ansible-doc -l命令。目前,您只需要了解基本的command模块。稍后, 我们将更详细地介绍其他一些基本模块。
    最后, 一旦你成功地构建了Ansible剧本, 你如何运行它?很简单
    执行ansible-playbook命令并指定您刚刚创建的Ansible playbook的名称, 就这样。如果你执行ansible-playbook --help命令,你将了解更多关于这个命令的一些附加参数。我们将在后面的部分中讨论其中的一些。
    在这里插入图片描述

  3. Ansible中运行命令的两种方式
    一种是使用ansible命令直接运行,一种是使用ansible-playbook命令。第一种方式适合于一次性任务,例如通过ping命令controllertarget主机之间的连通性;重启主机等,这不是ansible的理想用例,除非是一些特殊的情况;推荐使用第二种方法,而且playbooks可以被保存在github这样的源代码库中。
    例子: 下面的命令,通过ping测试inventory文件中所有的主机的连通性,allansible inventory默认就有的一个分组,表示的是该文件中所有的主机。

    ansible all -m ping -i inventory.tex
    

    通过playbook实现,编写下面这个playbook,ping命令没有参数

    - name: Test connectivity to target servers
      hosts: all
      tasks:
      	- name: Ping test
      	  ping: 
    

    通过ansible-playbook运行上面的playbook,能够达到相同的效果。

    更多关于Ansible的文章,请参考我的Ansible专栏:https://blog.csdn.net/u011069294/category_12331290.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/589297.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Nacos 根据服务名获取所有服务实例的IP和端口列表

需求描述 今天在做一个定时任务数据同步的需求,定时任务是一个单独的微服务,部署了多套,但是全部的可执行任务是在项目启动的时候,加载到内存中进行任务执行。 在这个时候,当在后台管理进行定时任务操作的时候&#…

WebStorm 利用 FileWatchers 实现 JS、CSS 压缩

WebStorm 利用 FileWatchers 实现 JS、CSS 压缩 合理的使用 JS、CSS 压缩可以大大缩减文件的大小,使网页加载速度更快一些(虽然对我来说意义不大,因为我不做前端。。。)。 为什么会有这篇文章,是因为在做一些 JS 逆向…

Dropwizard 中使用Jersey开发Restful接口(修改、删除)

前面我们介绍了使用Jersey开发查询、新增接口,并规范了响应报文格式,如果您想了解,可以参考: Dropwizard 中使用Jersey开发Restful接口(查询接口)https://blog.csdn.net/m1729339749/article/details/1308…

C++内存总结

1.2 C内存 参考 https://www.nowcoder.com/issue/tutorial?tutorialId93&uuid8f38bec08f974de192275e5366d8ae24 1.2.1 简述一下堆和栈的区别 参考回答 区别: 堆栈空间分配不同。栈由操作系统自动分配释放 ,存放函数的参数值,局部变…

uCOSii消息邮箱管理

uCOSii消息邮箱管理 (MESSAGE MAILBOX MANAGEMENT) 消息邮箱主要用于中断和任务之间进行邮件传递,或者是在任务与任务之间进行邮件交换。 1、消息邮箱管理重点需要了解下面几个函数 消息邮箱指针OSMboxCreate(消息邮箱数据块指针) 建立并初始化一个消息邮箱,在初…

一文秒懂BI是什么?

在数字化时代背景下,商业智能(Business Intelligence,简称BI)成为了信息化热词,我们经常能听到企业说“上BI”、“建设BI系统”、“构建BI决策平台”“BI数据分析”“BI可视化”等内容。 一、那么BI到底是什么呢&…

如何在IEEE的模板中引用Arxiv中的论文

如何在IEEE的模板中引用Arxiv中的论文 本文章记录如何在IEEE Transactions的模板中,引用Arxiv中的论文,记录具体的论文格式信息。 目录 如何在IEEE的模板中引用Arxiv中的论文1.在IEEE的模板中引用Arxiv中的论文格式是怎么样的呢?2.在bib文件…

C# 事件(event)

目录 一、概述 二、事件和委托的区别 委托和事件的概念 委托和事件的作用 委托和事件的区别 三、事件的基本用法 结束 一、概述 事件是一种特殊的多播委托,仅可以从声明事件的类(或派生类)或结构(发布服务器类&#xff09…

Revit中门窗的翻转控件该如何添加?

一、门窗的翻转控件该如何添加? 放置过门窗的小伙伴会发现,门窗是可以进行左右前后进行翻转的,可以通过这些小按钮或是空格键进行门窗的朝向,十分的人性化,可以帮我们更好的放置门窗。一般上我们创建门窗族时系统会自动为我们添加…

我们和ChatGPT聊了聊BI的未来

ChatGPT是什么? ChatGPT是OpenAI开发的聊天机器人,2022年11月上线,迅速火爆全球,1周突破100万用户,仅用2个月全球突破1亿用户,碾压史上所有应用程序。美国有学生用ChatGPT写论文拿下全班最高分,ChatGPT可以…

微信支付链接二维码生成

1、进入composer官方网站,搜索phpqrcode安装包 composer命令安装 composer require aferrandini/phpqrcode 生成二维码图片的公共方法: // 公用二维码生成 static function setQrcode($url){//二维码图片保存路径$path advert/qrcode/.date("Ymd&q…

JavaScript高级二、构造函数常用函数

零、文章目录 JavaScript高级二、构造函数&常用函数 1、深入对象 &#xff08;1&#xff09;创建对象三种方式 利用对象字面量创建对象 利用 new Object 创建对象 利用构造函数创建对象 案例如下&#xff1a; <!DOCTYPE html> <html lang"en"&g…

干货分享:小红书商业化+微信社区运营,引流自动裂变拓客方案

干货分享&#xff1a;小红书商业化微信社区运营&#xff0c;引流自动裂变拓客方案 背景&#xff1a;2023为止小红书基本已是当代年轻人都会下载和使用的软件了&#xff0c;小红书是生活方式平台和消费决策入口&#xff0c;通过智能机器人学习和对用户的精准智能匹配走红&#x…

chatgpt赋能python:Python中datetime的用法

Python 中datetime的用法 介绍 在 Python 中&#xff0c;datetime 是一个非常重要和常用的模块&#xff0c;它提供了很多操作日期和时间的函数。datetime 模块中最主要的三个类是 datetime、date 和 time。其中 datetime 类是 date 和 time 的组合&#xff0c;所以这里只介绍…

C++读写文本文件

2023年5月30日&#xff0c;周二下午&#xff1a; 这几天学习了C对文本文件的读写&#xff0c;写篇博客来总结一下 由于内容太多&#xff0c;我没法一次性写完&#xff0c;之后会不定期更新的 我使用C标准库中的fstream库来读写文本文件 用fstream来读写文本文件有两种方式&a…

element dialog对话框中select/cascader 弹窗不跟随问题

Element 在使用对话框中出现的情况 Select 选择器 Cascader 级联选择器 在这两种组件组合使用是出现了滑动 弹出框不跟随情况&#xff0c;如下 出现这种情况原因是因为弹出框相对的位置是body&#xff0c;展示后&#xff0c;如果body不动&#xff0c;所以弹窗位置不会发生改变…

研发工程师玩转Kubernetes——创建一个测试容器

测试容器并不是什么都没有的容器&#xff0c;只是它没有我们期望的常驻进程。我们常用它来做一些测试。 举个例子&#xff0c;在《研发工程师玩转Kubernetes——自动扩缩容》中我们使用本地wrk进行了压力测试。如果我们希望进入容器手工调用wrk&#xff0c;该怎么做呢&#xff…

后摩尔时代,洞见第三代功率半导体器件参数测试的趋势和未来!

前言 2022年&#xff0c;全球半导体产业连续高增长&#xff0c;进入调整周期。与此形成对比&#xff0c;在新能源汽车、光伏、储能等需求带动下&#xff0c;第三代半导体产业保持高速发展&#xff0c;全球化供应链体系正在形成&#xff0c;竞争格局逐步确立&#xff0c;产业步…

网络协议格式 | 以太网帧、ARP数据报、IP数据报、UDP数据报、TCP数据报

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和…

计算机视觉实战--OpenCV进行红绿灯识别

前言&#xff1a; Hello大家好&#xff0c;我是Dream。 OpenCV是一个开源的计算机视觉库&#xff0c;可以用于实现各种图像和视频处理任务&#xff0c;包括红绿灯识别。可以帮助自动驾驶汽车、智能交通系统等设备准确地识别红绿灯的状态&#xff0c;以便做出正确的决策。今天&a…