11.Ansible Roles介绍

news/2024/11/29 22:38:44/
  1. 什么是Ansible角色?
    就像在现实世界中给不同的人分配角色一样,让他们成为医生工程师, 宇航员, 警察,或者厨师。在Ansible的世界里, 你可以给服务器分配角色,让它们成为数据库服务器、 Web服务器、 Redis消息服务器或备份服务器。
    在这里插入图片描述
    在现实世界中分配一个角色意味着做一切需要做的事情。例如,使某人成为医生或工程师, 送人到医学院获得医学学位,完成住院医师计划, 并最终获得执业许可证。或者, 如果是工程师,那就去工程学院获得学士学位,获得研究生学位。
    在自动化领域, 分配角色意味着做所有需要做的事情。例如服务器成为数据库服务器, 安装MySQL所需的先决条件安装MySQL软件包本身配置MySQL服务, 最后与我们的用户一起配置数据库。对于Web服务器,它将再次安装Nginx的先决条件, 安装Nginx包,配置Nginx服务和配置自定义网页。
    在这里插入图片描述
    到目前为止, 我们已经知道如何使用Ansible Playbook完成这些任务。这里有一个简单的Playbook可以做到这一点。但是, 如果能在剧本中做到这一点,为什么你需要角色呢?
    在这里插入图片描述
    MySQL数据库上安装和执行基本配置的这组任务将仍然是最常见的。一旦一个人开发了这个Ansible Playbook,它就可以与数十万其他试图做同样事情的人分享,可以将这段代码打包到一个角色中,并在以后重用它, 而不是所有人都需要重头开始写这段代码。
    Roles的作用其实就是便于分享你的Playbook,便于其他人使用。
    下一次, 只需分配创建的角色, 在这样的Playbook中,无论是单台服务器还是数百台服务器, 您所需要得就是这些角色.因此, 角色的主要目的是使您的工作可重用,无论它是用于组织内的其他任务或项目, 还是用于全球其他人。例如下图的例子,可以把安装mysql的步骤定义成role,然后Playbook里面直接使用就行。
    在这里插入图片描述

  2. 角色帮忙组织代码,Ansible Galaxy社区
    角色还可以帮助您在Ansible中组织代码。vars目录中这些任务使用的所有变量。任何默认值都将保存在defaults目录中。所有处理程序都将进入handlers目录。Playbook使用的任何模板都将进入templates目录。
    在这里插入图片描述
    角色还有助于与Ansible社区中的其他人共享您的代码。Ansible Galaxy就是这样一个社区,在那里你可以找到数千个角色, 几乎可以完成你能想到的任何任务。比如安装和配置不同的Web服务器、不同的数据库服务器、 自动化工具、监控工具、 打包工具、 安全软件等。因此, 在开始编写这些Playbook之前,可以先到这个社区搜索一下。可能有人已经为它创建了一个角色。
    在这里插入图片描述

  3. 如何使用自己创建好的角色
    那么, 如何开始使用角色呢?这很简单, 正如我们上面讨论的那样,我们创建角色所需的目录结构, 但您不必手动执行此操作。Ansible Galaxy有一个整洁的工具,可以为你创建一个骨架。
    使用ansible-galaxy init命令初始化并创建目录结构,然后写好角色的相关代码。
    在这里插入图片描述
    那么, 您如何使用创建好的角色呢?假设我在一个名为“my-playbook”的目录中有playbook.yml,这个文件包含一个简单的剧本,用于在我的服务器上安装和配置MySQL。可以使用roles指令使用创建的mysql角色,
    但是如果这样做, playbook.yml怎么知道mysql这个角色在哪里?可以在系统的任何位置创建该角色。playbook.yml如何找到那个角色?
    有不同的方法来做到这一点。可以在我的剧本文件夹中创建一个名为roles的目录,并将创建的角色移到该目录下。当playbook.yml运行时, Ansible会在roles目录下查找名为MySQL的角色,这是一种方法。或者, 您可以将角色移动到系统上/etc/ansible/roles位置为角色指定的公用目录中。这是Ansible在剧本目录中找不到角色时搜索角色的默认位置。当然, 可以在Ansible配置文件中修改默认的roles路径。
    在这里插入图片描述
    创建角色并将其放置在角色目录中并在playbook中使用后,您可以通过GitHub存储库将其上传到Ansible Galaxy, 从而与社区共享。

  4. 如何使用Ansible Galaxy中的角色
    相反, 您希望找到一个现有的角色, 并将其用于您的playbook中。要查找角色, 您可以从Ansible Galaxy UI进行搜索, 或使用ansible-galaxy search xx命令从命令行界面进行搜索。
    在这里插入图片描述
    要使用角色, 请使用角色名称运行ansible-galaxy install命令。该角色将被提取到/etc/ansible/roles位置的默认角色目录中。
    现在可以在剧本中使用角色,方法是将相同的名称指定为字符串数组,即角色名称。另一种指定角色的方法是使用字典数组,这将允许您向角色传递其他参数。例如通过become指令提升权限来执行角色,指定或传递其他参数(如mysql_user_name选项),如下所示。
    在这里插入图片描述
    总之, 角色让开发、 重用和共享Ansible剧本变得非常容易。
    若要将单一服务器设定为同时具有数据库和Web应用程序,可以使用下面左边的playbook需要将这两个角色指派给该服务器。要在不同的服务器上分别配置它, 可以在playbook创建两个Play(右边),每台服务器一个Play, 并为它们分配各自的角色.
    在这里插入图片描述

  5. 查看当前安装的ansible角色相关信息
    要查看当前安装的角色列表,可以使用ansible-galaxy list命令。
    要查看Ansible配置,请使用ansible-config dump命令。
    在安装角色时,您可以使用-p选项将其安装在当前目录下的roles目录下。
    在这里插入图片描述
    更多关于Ansible的文章,请参考我的Ansible专栏:https://blog.csdn.net/u011069294/category_12331290.html


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

相关文章

三星电视显示服务器无响应,三星电视网络电视看不了是怎么回事?

A:  创维液晶电视黑屏的原因首先应该是因为电源电路发生问题,引起的液晶电视黑屏。此时的电脑会出现的现象是面板的按键没有任何的反应,并且它的指示灯也没有亮。我们在检查是不是电源电路出现了问题的时候,先检查电源的电压是不…

iphone怎么投屏到三星电视?这样操作即可实现

不知道为啥,身边好多人用起了苹果手机(难道没有打工人的压力了?),后来,因为工作需要,我自己也入手了一部iphone,看看与在用的安卓手机有什么不同。其实使用效果差不了多少&#xff0…

畅享8K高清,三星电视将搭载HDMI2.1接口

无处不在的HDMI音视频连接可以处理当今几乎所有的视频格式,但是即将推出8K,电视和其他硬件制造商可能在未来几年内达到极限。这就是HDMI 2.1的用武之地。 LG向CNET证实,其2019 OLED和高端LCD型号将包括全规格的HDMI 2.1端口。这是一家大型电视…

三星QLED彻底击败LG OLED电视,华为将加入QLED阵营

市调机构WitsView发布今年全球电视的出货量预测,它预计三星QLED电视将取得预期的超过800万部出货量,而LG主推的OLED电视出货量将只有300多万部,QLED电视将在高端电视市场取得彻底的胜利。 WitsView对三星QLED电视如此乐观在于QLED电视今年一季…

三星12·12年终狂欢盛典开启 多款电视产品福利满满

一转眼,时间已经来到12月中旬,而“双12”作为每年末尾最重要的购物狂欢节之一,各个品牌在该节日中都会给消费者们带来诸多福利。三星家电京东自营旗舰店就给广大消费者带来了“三星1212年终狂欢盛典”活动,消费者进店购机即可享受…

三星s8php,三星S8 Type C接口连接电视体验

笔者双11在京东买了一条大黄蜂 Type C转HDMI线材,一直想着怎么折腾,想用S8的屏幕投到家里的电视里面去观看,确实挺方便的,一定会有机友说现在都流行无线传屏,不是更方便吗?其实不然,有线传输还是…

聚焦个性化与场景化,全新升级的三星电视看点何在?

作者 | 曾响铃 文 | 响铃说 还记得小时候,一家人工作一天后唯一的娱乐活动便是围着一个小小的盒子,或看、或听、或笑,即便它只有17寸,却好似装着整个世界。没错,这便是电视。 从黑白到彩色,从换台还需要…

三星、LG在中国电视市场溃败,但在全球市场取得了进展

据报道指三星、LG这两家全球前两强电视企业在中国市场的份额进一步滑落,但是近期市调机构IHS公布的全球数据却显示它们的市场份额取得了反弹,主要是它们在高端电视市场取得了进展。 三星、LG在中国电视市场溃败 中怡康公布的数据显示,今年截止…