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

发布于:2025-09-03 ⋅ 阅读:(22) ⋅ 点赞:(0)

描述角色结构

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控制节点。