7.Ansible Modules介绍

news2024/11/24 11:32:28
  1. 什么是Ansible Modules?
    Ansible模块根据其功能分为不同的组,每个模块提供了一些功能,可以直接使用。
    模块官方文档: https://docs.ansible.com/ansible/2.9/modules/modules_by_category.html
    在这里插入图片描述
  • 系统模块是要在系统级别执行的操作,例如修改系统上的用户和组、修改IP表、 系统上的防火墙配置、 使用逻辑卷组、 安装操作或使用服务,例如, 启动、 停止或重新启动系统中的服务。
  • 命令模块用于在主机上执行命令或脚本。这可以是使用command模块的简单命令,也可以是使用expect模块通过响应提示的交互式执行。
  • 您还可以使用脚本模块在主机上运行脚本。
  • 文件模块帮助处理文件。例如, 使用ACL模块来设置和检索文件的ACL信息。使用archiveunarchive模块压缩和解压缩文件。使用findlineinfilereplace模块修改现有文件的内容。
  • 数据库模块有助于使用MongoDBMySQLMSSQLPostgreSQL等数据库来添加或删除数据库或修改数据库配置。
  • 云模块有一个巨大的模块集合, 为各种不同的云提供商,如亚马逊, Azure, Docker,谷歌, OpenstackVMware只是其中的一小部分。其中每一项都有许多模块可供使用,可让您执行各种工作, 例如建立和销毁执行instance、执行网络与安全性的组态变更、 管理容器、数据中心、 丛集、 虚拟网络、 Virtual SAN等等。
  • 此外还有Windows模块,可帮助您在Windows环境中使用Ansible。其中一些是复制文件的wincopy, 在Windows机器上执行命令的wincommand,
    还有一堆其他模块可以在Windows上处理文件。创建IIS网站, 使用MSI安装程序安装软件。在Windows中使用注册表编辑和托管服务和用户更改注册表。
    这些只是几个类别中的几个模块。有很多更多和一个全面的列表可以找到文档。
  1. 相关模块解析
    1)命令模块
    让我们详细了解其中的几个模块。我们将从命令模块开始。命令模块用于在远程节点上执行命令。
    在这里插入图片描述
    要使用模块,您只需创建一个模块名和参数的键值对,在本例中模块名是command,值是date等。
    在本例中, 我们将指示Ansible在主机上运行date命令,然后执行cat /etc/resolv/conf命令,以列出文件的内容。在执行命令之前, 如果您需要更改目录,例如, 第3个命令, 使用chdir将目录设置为/etc, 这将确保Ansible在执行命令之前将目录更改为/etc。这是参数和值传递到此命令模块的方式。
    creates参数用于在运行命令之前执行检查。例如, 此命令用于创建文件夹,仅在文件夹不存在时才运行。

    有个叫free_form参数,需要注意下,它的意思是指定参数的时候是否要求用"键等于值"格式,如果是自由的,就不要求。自由格式表示此模块采用自由格式命令运行。就像我们刚才使用的那样, 更改目录或创建选项。

    我们的命令输入, 如cat或者mkdir是自由格式输入。并非所有模块都支持这样的输入。例如, 用于将文件从源复制到目的地的复制模块只接受参数化输入而不接受自由形式输入。因此, 正如您在这里看到的, 复制需要源文件作为src参数,目标文件作为dest参数。但是, 上一个命令模块并不真正要求您为要运行的命令指定“键等于值"格式。命令模块中的是自由格式参数。

    2)另一个要查看的模块是脚本模块。
    在这里插入图片描述
    脚本模块传输完脚本后,在一个或多个远程节点上执行位于Ansible控制器机器本地的脚本。要在一个或数百个服务器上运行脚本, 您实际上不必将其手动复制到所有服务器上。Ansible负责自动将脚本复制到远程节点,然后在远程系统上执行它。
    这是通过一个非常简单的Play来完成的,使用脚本模块并指定脚本在Ansible控制器机器上的位置和参数。

    3)让我们看一下服务模块。服务模块用于维护系统上的服务,例如启动、 停止或重新启动服务。
    在这里插入图片描述
    上图的Playbook用于按特定顺序启动各种服务。首先, 我们使用服务模块启动数据库服务。与前面的模块不同, 服务模块没有自由格式的输入,这意味着您必须以键值对格式传递输入。我们使用name参数来指定我们希望启动的服务的名称,在本例中为postgresql,而state参数则指示我们希望执行的操作,在本例中为started。现在, 如果你想知道为什么是started,而不是start, 后面会解释。
    现在, 有两种方法来写这个语句,你可以像右边这样写, 用字典的格式去写,两种写法是等价的。
    请记住, 在YAML术语中, namestate是服务的属性。让我们再添加一些任务来启动,httpd服务后面跟着nginx服务。

    4)为什么statestarted而不是start的?如果我们要指示Ansible启动一个服务, 我们会说start the service httpd, 而不是started the service httpd
    在这里插入图片描述
    那为什么是started而不是start呢?我们没有指示Ansible启动服务。相反, 我们将指示Ansible确保服务httpd已启动。这实质上意味着如果httpd服务尚未启动,则启动。如果httpd服务已经启动, 则不要执行任何操作。这称为幂等性。根据Ansible文档,如果执行一次操作的结果与重复执行一次操作的结果完全相同,则该操作是幂等的。
    Ansible中的大多数模块都是幂等的,Ansible强烈建议这样做。总体思路是, 您应该能够再次运行相同的剧本,Ansible应该报告一切都处于预期状态。如果某个东西不是,Ansible会负责将其置于预期状态。

    5)lineinfile模块用于查找文件中的行,如果该行不存在, 则替换或添加该行。
    在这里插入图片描述
    例如, 我们有一个任务要添加一个新的DNS服务器到/etc/resolv.conf文件。这个简单的Ansible剧本使用lineinfile任务,将新的名称服务器信息添加到resolv.conf文件。请记住, lineinfile模块是幂等的。让我们将Ansible剧本与一个试图实现相同结果的简单脚本进行比较。如果此脚本运行多次, 则每次都会向文件中添加一个新条目,这是不需要的。如果您多次运行Ansible Playbook就不会添加多次 。

    例子:

    - name: 'hosts'
      hosts: all
      become: yes
      tasks:
        - name: 'Execute a script'
          script: '/tmp/install_script.sh'
        - name: 'Start httpd service'
          service:
            name: 'httpd'
            state: 'started'
        - name: "Update /var/www/html/index.html"
          lineinfile:
            path: /var/www/html/index.html
            line: "Welcome to ansible-beginning course"
            create: true
        - name: 'Create a new user'
          user:
            name: 'web_user'
            uid: 1040
            group: 'developers'
    

    使用下面的命令可以运行这个playbook:

    ansible-playbook -i inventory playbook.yaml 
    

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

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

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

相关文章

Springboot +spring security,认证方式---Form表单认证的实现(三)

一.简介 这篇文章来学习下security的认证方式其中的Form表单认证 二.Spring Security的认证方式 2.1什么是认证 认证: 就是用来判断系统中是否存在某用户,并判断该用户的身份是否合法的过程,解决的其实是用户登录的问题。认证的存在,是为…

Spring Boot 如何实现异步消息处理

Spring Boot异步消息处理 在现代应用程序中,异步消息处理是一项至关重要的任务。它可以提高应用程序的性能、可伸缩性和可靠性,同时也可以提供更好的用户体验。Spring Boot提供了多种方式来实现异步消息处理,包括使用Spring AMQP、Spring Ka…

【斯歌X捷普】优秀体验官活动:全民开发的样板企业是这样炼成的

3月22日,上海斯歌与捷普共同举办了一场别出心裁的活动——“产品优秀体验官”颁奖典礼,以表彰对业务流程开发做出突出贡献的捷普员工。值得注意的是,获奖的14名流程开发人员中,有7人并非是专业的IT人员,而是来自业务岗…

搜索引擎变天了!谷歌宣布开放「生成式搜索平台」!AI 大模型颠覆搜索体验

作者 | 小戏、兔子酱 搜索引擎,可能真的要变天了! Google 终于要迎来它 25 年来最大的改变,谷歌宣布了开始内测开放【生成式搜索平台(Search Generative Experience,SGE)】,并逐步舍弃那些甚至是…

Linux中与中断相关的内核数据结构

【摘要】本文树妖详细讲解了Linux中与中断相关的内核数据结构及其内部联系。 八、中断相关的数据结构 8.1 irq_desc 用于表示IRQ描述符的结构定义如下:\linux-2.6.32.63\include\linux\irq.h struct irq_desc {unsigned int irq; //中断号unsigned int …

ipad可以使用其他品牌的手写笔吗?2023年电容笔推荐

现在,人们的生活越来越智能化,有些人已经用平板电脑取代了传统的笔记本。我发现用ipad不管是用来画画还是做笔记非常方便,但是苹果Pencil对于大多数人来说都是昂贵的。据我所知,如果仅仅是为了记录,而不是为了画画的话…

他是98年的卷王,我真的玩不过他····

现在的小年轻真的卷得过分了。前段时间我们公司来了个98年的,工作没两年,跳槽到我们公司起薪18K,都快接近我了。后来才知道人家是个卷王,从早干到晚就差搬张床到工位睡觉了。 最近和他聊了一次天,原来这位小老弟家里…

PKI 基础知识

摘要 本白皮书介绍了加密和公钥基本结构(PKI)的概念和使用 Microsoft Windows 2000 Server 操作系统中的证书服务的基础知识。如果您还不熟悉加密和公钥技术,先阅读本白皮书将有助于理解 Windows 2000 Web 站点上有关这些主题的其它技术白皮书。 引言 Microsoft …

玩转VLAN间路由,教你3个好方法

我的网工朋友大家好啊 在现实网络中,经常会遇到需要跨VLAN相互访问的情况。 很多网工通常会选择一些方法,来实现不同VLAN间主机的相互访问,例如单臂路由。 但是,单臂路由技术中由于存在一些局限性,比如带宽、转发效…

NodeJS基础到入门EXPS⑥

文章目录 ✨文章有误请指正,如果觉得对你有用,请点三连一波,蟹蟹支持😘前言Express框架 Router路由NEST 方法路由端点使用回调函数数组处理路由使用混合使用函数和函数数组处理路由中间件的分类及用法 1、应用级中间件 2、路…

使用 python 制作自动填写问卷星问卷调查程序

目录 前言环境:代码展示尾语 💝 前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 你的问卷星任务还没做完吗?今天教你如何快速把问卷星调查任务给完成。 环境: anaconda5.2.0(python3.6.8) 编辑器: p…

ASEMI代理KY可控硅BT169的工作原理及应用领域

编辑-Z 本文主要介绍了可控硅BT169的工作原理及其在各个领域的用。首先,我们将详细阐述可控硅BT169的工作原理,包括结构特点、工作过程等;其次,我们将探讨可控硅BT169在家用电器、工业控制、电力电子等领域的应用。 1、可控硅BT1…

RSA加密 多线程读写不安全

转自:(一场开源 RSA 库引发的“血案”) 导读 RSA 加密算法是一种非对称加密算法,该算法极为可靠,在现有技术条件下,很难破解,因此在软件开发中被广泛使用。你不必担心,本文不会介绍…

如何Debug调试Android程序

当开发过程中遇到一些奇怪的bug,但又迟迟定位不出来原因是什么的时候,最好的解决办法就是调试了。调试允许我们逐行地执行代码,并可以实时观察内存中的数据,从而能够比较轻易地查出问题的原因。总结一下使用Android Studio来调试A…

又双叒添新证书:上海斯歌通过ISO9001和ISO27001认证

近期,上海斯歌顺利通过权威机构审查,正式成为ISO9001质量管理体系和ISO27001信息管理安全体系双重认证企业。 可以说ISO9001及ISO27001的认证,既是斯歌坚持管理标准化、程序化、规范化的成果;也是国际标准化组织(ISO&a…

Vue3通透教程【十六】TS自动编译

文章目录 🌟 写在前面🌟 自动编译🌟 编译器的配置文件🌟 写在最后 🌟 写在前面 专栏介绍: 凉哥作为 Vue 的忠实 粉丝输出过大量的 Vue 文章,应粉丝要求开始更新 Vue3 的相关技术文章&#xff0…

Apache的配置与应用(构建web、日志分割及AWStats分析系统)

Apache的配置与应用 一、构建虚拟Web主机二、httpd服务支持的三种虚拟机类型1、基于域名的虚拟主机2、基于IP地址的虚拟主机3、基于端口的虚拟主机 三、构建web虚拟目录与用户授权限制1、创建用户认证数据文件2、添加用户授权配置3、验证用户访问权限4、在客户机中浏览器访问 四…

F牌独立站都有哪些收款方式?各有什么优缺点?

最近几个月以来,FP独立站的收款支付问题变得非常焦灼,不少跨境卖家忧心忡忡,害怕自己收不了款血本无归。今天,我跟大家介绍几种FP独立站的收款方式,以及解析他们各有哪些优缺点,方便卖家选择。 一、TT电汇 …

Go GPM 调度器介绍

Go GPM 调度器介绍 1 简介 ​ 这几天在学习Go的GPM机制,于是就整理了一下收集的资料分享给大家,文章末尾有原文链接。主要介绍了Go在运行时调度器的基本实现逻辑和演变过程。 ​ 2 什么是Go调度器 ​ Go调度器很轻量也很简单,足以撑起gorout…

数据结构基础-数组

2.1 数组 概述 定义 在计算机科学中,数组是由一组元素(值或变量)组成的数据结构,每个元素有至少一个索引或键来标识 In computer science, an array is a data structure consisting of a collection of elements (values or v…