当前位置: 首页 > news >正文

Ansible角色:高效开发与管理的秘密

描述角色结构

1.Ansible角色的优点:

可以由不同的用户并行开发,可以共享代码;

可以定义系统类型的基本要素;

可以使较大型项目更易管理。

2.Ansible角色子目录及其功能;

defaults/:存放角色的默认变量(优先级最低)。

vars/:存放角色的其他变量文件(优先级较高)。

tasks/:存放角色要执行的主要任务列表。

handlers/:存放角色定义的处理程序(由 notify 触发)。

templates/:存放Jinja2模板文件。

files/:存放角色部署所需的静态文件。

meta/:存放角色的元数据,如作者、依赖关系等。

3.在play中使用Ansible角色:

像任务一样,您可以将它们包含或导入在 tasks 列表中。

您可以创建一个 roles 列表,用于在 play 的任务之前运行特定的角色。

4.my handler任务运行三次:

在所有 pre_tasks 任务运行后

在所有 roles 任务和 tasks 任务运行后

在所有 post_tasks 运行后

5.ansible.builtin.import_role模块和ansible.builtin.include_role的区别:

import_role:静态导入。在Playbook解析时就导入角色,角色内容会成为主Playbook的一部分。不能用于循环,变量是早期解析的。

include_role:动态包含。在Playbook运行时才动态包含角色。可以用于循环,变量是运行时才解析的。

创建角色

1.角色创建流程:

使用命令 ansible-galaxy role init role_name 创建符合标准目录结构的角色骨架。

在各个子目录(如 tasks/, handlers/, templates/ 等)中编写具体内容。

在Playbook中引用该角色进行测试和部署。

2.角色开发中的推荐做法:

使用 ansible-galaxy role init 创建标准结构。

为角色设置明确的依赖关系(在 meta/main.yml 中)。

使用变量提高灵活性,并为变量提供合理的默认值(在 defaults/main.yml 中)。

保持角色专注于实现一个特定的功能或服务(高内聚)。

从外部内容源部署角色

1.ansible-galaxy命令行工具的作用:

可用于搜索角色,显示角色相关信息,以及安装、列举、删除或初始化角色。

从内容集合获取角色和模块

1.从多个来源获取ansible内容集合:

自动化中心(Automation Hub)

来源:红帽提供的官方服务,提供经红帽认证的集合。

特点:需要有效订阅,可获得红帽及合作伙伴的官方支持。

私有自动化中心(Private Automation Hub)

来源:组织内部搭建的私有中心。

特点:包含在Ansible自动化平台中,用于分发企业内部自己的集合。

Ansible Galaxy

来源:社区支持的网站。

特点:集合由社区开发和维护,是公共库,不提供官方支持。

第三方Git存储库或存档文件

来源:直接从Git仓库或tar压缩包获取。

特点:方式灵活,类似于下载Ansible角色。

2.ansible项目要和其他ansible内容集合:

要在项目目录中创建一个connections/requirements.yml文件,以列出项目所需的集合。

通过系统角色重用内容

1。两个关键属性及其作用:

hostname:要与其同步的NTP服务器的主机名。

iburst:一个布尔值,用于启用或禁用快速初始同步。在角色中默认为no,但您通常应将该属性设为yes。

2.红帽系统角色(Red Hat System Roles)以哪两种形式提供?

RPM软件包形式或Ansible内容集合形式。

3.如何指定项目所需的Ansible角色和内容集合?

可以通过requirements.yml文件指定,或使用ansible-galaxy手动安装到Ansible控制节点。

http://www.xdnf.cn/news/1435267.html

相关文章:

  • Ukey介绍
  • HTML第二课:块级元素
  • 【3D 入门-3】常见 3D 格式对比,.glb / .obj / .stl / .ply
  • Ascend上开发自定义算子接入PyTorch有几种实现方式?
  • Higress云原生API网关详解 与 Linux版本安装指南
  • 企业数字安全守护神:IT运维管理系统全面解析,构建坚不可摧的防护体系
  • 实现自己的AI视频监控系统-第三章-信息的推送与共享3(重点)
  • 数据结构:闭散列 (Closed Hashing)-开放定址法 (Open Addressing)
  • react用useImages读取图片,方便backgroundImage
  • hikvision海康威视sdk调用失败,code为29解决办法
  • 集采与反腐双重压力下,医药销售的破局之道:从资源依赖到价值重构
  • 从结构化到多模态:RAG文档解析工具选型全指南
  • Portainer:Docker可视化管理神器部署与使用攻略
  • 不只是一台玩具车:开源燃料电池机器人HydroBot全揭秘
  • 怎么用redis lua脚本实现各分布式锁?Redisson各分布式锁怎么实现的?
  • Unity通过Object学习原型模式
  • ES6和CommonJS模块区别
  • GNU Make | C/C++项目自动构建入门
  • DevOps运维与开发一体化及Kubernetes运维核心详解
  • Aurobay EDI 需求分析:OFTP2 与 EDIFACT 驱动的汽车供应链数字化
  • DataAgent技术解析:数据智能的未来之路
  • LangGraph 上下文工程权威指南:构建智能、感知、有记忆的 AI 代理
  • Ubuntu平台查看.gz格式压缩文件内容以及利用grep命令过滤搜索内容
  • 《浪浪山小妖怪》知识竞赛来袭!测测你是几级影迷?
  • RL【1】:Basic Concepts
  • 情况三:已经 add ,并且也 commit 了
  • 机器人控制器开发(整体架构2 Lerobot介绍)
  • 佛山体彩第二届唱享之夜浪漫收官, 七夕音乐派对全场大合唱!
  • 使用 Gulp + Webpack 打造一个完整的 TypeScript 库构建流程
  • 社区医疗健康管理系统的设计与实现-(源码+LW+可部署)