6.Ansible Playbooks介绍

news/2024/10/19 5:26: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 servershosts: alltasks:- name: Ping testping: 
    

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

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


http://www.ppmy.cn/news/107168.html

相关文章

四段论提问让ChatGPT更懂你心!

用户故事是描述客户需求的方法,通常记为四段论的格式: 角色-功能-目的-验收标准。 如: 作为一个家庭主妇,我需要一个30平方米的餐厅,用以招待10位客人聚餐。 我希望这个餐厅&…

算法 求数据的每一位

代码段 分析 用到的变量 int number 保存输入的值 int count0;计数值 int bit_array[10];保存每一位的值 循环内容 每次使用取余% 必定得到数据的最后一位 并且用数组保存 每次使用除以10 让数据减少一位(从右到左) 让count的值递增 可以更新数组下标 …

KUC755AE105 3BHB005243R0105 串行连接的自动配置

KUC755AE105 埃德蒙顿(pr web)-2007年5月23日-MatrikonOPC宣布为Allen-Bradley PLC发布MatrikonOPC服务器。该OPC服务器为所有Allen-3BHB005243R0105 分布式控制系统(DCS)提供了可靠的连接,代表了连接Allen-Bradley设备的真正的“一体化”解决方案。Allen-Bradley…

Pod相关操作命令

Pod相关操作命令 Pod setup # CocoaPods 将信息下载到~/.cocoapods/repos 目录下。如果安装 CocoaPods 时不执行此命令,在初次执行pod intall 命令时,系统也会自动执行该指令 pod --version # 检查 CocoaPods 是否安装成功及其版本号 pod repo update #…

SpingBoot+LayUI 实现酒店管理系统编写

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

C++读写文本文件

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

Java--Stream流详解仅供学习

Java 8中新增的Stream可以让你非常方便地对集合进行过滤,映射,切片等各种操作。Stream流可连续调用多个操作,可以单独执行,也可以合并一起执行。 创建Stream Java 8中通过 Collection 接口增加了 stream() 和 parallelStream() 方…

VM——编写脚本,TCP发送16进制字符串

1、参考: (1)​​​(246条消息) TCP中发送接收16进制数(16进制字符串与字节数组之间的转换)_tcp发送16进制字符串_start_continue的博客-CSDN博客 (2)(246条消息) C#byte String转换_c# byte转…