Ansibleplaybook详细介绍和使用方法(ansible-playbook-i)

Ansibleplaybook详细介绍和使用方法(ansible-playbook-i)

浏览次数:
信息来源: 用户投稿
更新日期: 2026-07-16
文章简介

AnsiblePlaybooks提供了一个可重复、可重用、简单的配置管理和多机部署系统,非常适合部署复杂的应用程序。AnsiblePlaybook是自动化任务的蓝图,这些任务是复杂的IT操作,在有限或

2025阿里云双十一服务器活动

AnsiblePlaybooks提供了一个可重复、可重用、简单的配置管理和多机部署系统,非常适合部署复杂的应用程序。AnsiblePlaybook是自动化任务的蓝图,这些任务是复杂的IT操作,在有限或没有人为参与的情况下执行。

AnsiblePlaybook在一组、组或分类的主机上执行,它们共同构成一个Ansible清单。

AnsiblePlaybook本质上是框架,是预先编写的代码,开发人员可以使用ad-hoc或作为起始模板。

AnsiblePlaybooks经常用于自动化IT基础设施(例如操作系统和Kubernetes平台)、网络、安全系统和开发人员角色(例如Git)。

AnsiblePlaybooks可帮助IT人员对应用程序、服务、服务器节点或其他设备进行编程,而无需从头开始创建所有内容的手动开销。

AnsiblePlaybook以及其中的条件、变量和任务可以无限期地保存、共享或重复使用。

playbook是由一个或多个play组成的列表

  • play的主要功能在于将直线归并为一组的主机装扮实现通过ansible中的task定义好的角色。从根本来讲,所谓的task无非是调用ansible的一个module。将多个play组织在一个playbook内,即可以让它们联动起来按实现编排的机制唱一台大戏
  • playbook采用YAML语言编写
  • 二、ansibleplaybook如何工作?

    Ansible模块执行任务。可以组合一个或多个Ansible任务来进行游戏。可以组合两个或多个剧本来创建AnsiblePlaybook。AnsiblePlaybook是针对主机自动执行的任务列表。主机组构成您的Ansible清单。

    AnsiblePlaybook中的每个模块都执行特定的任务。每个模块都包含元数据,这些元数据确定执行任务的时间和地点,以及执行任务的用户。还有数以千计的其他Ansible模块可以执行各种IT任务。

    YAML是一个可读性高的用来表达资料序列的格式,它实际上是一种标记语言。不论是在运维工作中还是开发工作中,yaml语言都是一个很普遍被使用的,比如:Kubernetes中的部署清单文件、GitLabCICD、Python使用yaml格式做配置文件、json格式的数据需要被转成yaml格式的数据等等。这里不对yaml语法做更多的介绍,详情可以自行和百度、谷歌合作了解。

  • YAML的可读性好
  • YAML和脚本语言的交互性好
  • YAML使用实现语言的数据类型
  • YAML有一个一致的信息模型
  • YAML易于实现
  • YAML可以基于流来处理
  • YAML表达能力强,扩展性好
  • 五、ansible-playbook的核心组成部分

  • Hosts:执行的远程主机列表;
  • Tasks:任务集;
  • Variables:内置变量或自定义变量在playbook中调用;
  • Templates:模板,可替换模板中的变量并实现一些简单的逻辑的文件;
  • Handlers和notify:两者结合使用,由特定条件触发的操作,满足条件方才执行,否则不执行;
  • Tags:标签,用于制定某条任务执行,用户选择运行playbook中的部分代码,ansible具有幂等性,因此会自动跳过没有辩护的部分,即便如此,有的代码为测试其确实没有发生变化的时间依然会非常的长,此时确信其没有变化,就可以通过tags跳过这些代码片段。
  • 5.1ansible-playbook的项目目录结构

    以上是项目是docker批量安装。这个目录格式是我这边安装项目的目录规范。但并不是说每个目录下的文件都存在内容,其实很多时候我们可能用不到和。

    Ansibleplaybook详细介绍和使用方法,ansible-playbook-i

    可用于Host和Task中,也可以通过指定其通过sudo的方式在远程主机上执行任务,其可用于play全局或某任务。此外,还可以在sudo时使用sudo_user指定sudo时切换的用户。

    简单来说,Tasks任务集其实就是使用多个ansible支持的模块组合起来的一组任务。可以理解为ansible-playbook中,一个name指定的就是一个task任务。各个task按次序逐个在hosts中指定的所有主机上执行,即在所有主机上完成第一个task后,再开始第二个task。但是也可以使用异步模式。这个后面文章会说;

    task的目的是使用指定的参数执行模块,而在模块参数中可以使用变量。模块执行是幂等的,这意味着多次执行是安全的,因为其结果均一致;

    每个task都应该有其name,用于playbook的执行结果输出,建议起一个见名知意的名称。

    task的两种格式:

    一种是的形式,另一种是的形式。

    注意:?后者冒号后面有一个空格。

    以上示例中,我加了空行,存在空行和带有注释的行不会影响yaml文件执行,看上去更加美观,而不是所有task挤在一起,看上去一团糟。

    通常我们会将变量信息放在中,格式如下:

    Templates模板主要使用模板语言,以?结尾,里面其实就是一个配置文件,比如:

    这两个通常结合使用,比如某一个服务配置变更后,需要重启,那么就需要在配置变更后设置一个notify,然后handlers就会在playbook退出之前执行重启服务的操作。如果定义了handler重启服务,而没有定义notify,那么所有task任务执行完成后,也会触发一次服务重启操作。

    两个典型的示例:示例来源于:?

    示例一:

    示例二:

    我们可以在ansible-playbook的每一个task任务上打上tag标签,可以用于区分某一种类型的任务。如果你想要单独执行这个独有的tag标签的任务,就可以在使用ansible-playbook命令加上-t参数来指定tag执行剧本。如:

    标签:
    什么是网站建设推广(网站建设及网站推广)
    « 上一篇
    金融王简易版操作指南doc(金融王子全部作品)
    下一篇 »

    如本文对您有帮助,就请抽根烟吧!