8.4. 将现有角色迁移到您的集合


单机角色的目录具有以下结构:您的角色可能不包含所有这些目录。

my_role
├── README.md
├── defaults
│   └── main.yml
├── files
├── handlers
│   └── main.yml
├── meta
│   └── main.yml
├── tasks
│   └── main.yml
├── templates
├── tests
│   ├── inventory
│   └── test.yml
└── vars
    └── main.yml

Ansible 角色有一个定义的目录结构,包含 7 个主要标准目录。每个角色必须至少包含其中一个目录。您可以省略角色不使用的任何目录。每个目录包含一个 main.yml 文件。

流程

  1. 如有必要,重命名包含角色的目录以反映其内容,例如 acl_configtacacs

    集合中的角色的名称不能有连字符。改为使用下划线字符(_)。

  2. 将独立角色中的 roles 目录复制到集合中的 roles/ 目录中。

    例如,在名为 myapp_network 的集合中,将角色添加到 myapp_network/roles/ 目录中。

  3. 将独立角色中的任何插件复制到新集合的 plugins directory/ 中。集合目录结构类似:

    company_namespace
    └── myapp_network
        ├── ...
        ├── galaxy.yml
        ├── docs
        ├── extensions
        ├── meta
        ├── plugins
        ├── roles
        │   ├── acl_config
        │   │   ├── README.md
        │   │   ├── defaults
        │   │   ├── files
        │   │   ├── handlers
        │   │   ├── meta
        │   │   ├── tasks
        │   │   ├── templates
        │   │   ├── tests
        │   │   └── vars
        │   └── tacacs
        │       ├── README.md
        │       ├── default
        │       ├── files
        │       ├── handlers
        │       ├── meta
        │       ├── tasks
        │       ├── templates
        │       ├── tests
        │       └── vars
        │   ├── run
        ├── ...
        ├── tests
        └── vars

    run 角色是构建集合时创建的默认角色目录。

  4. 更新您的 playbook,以将完全限定集合名称(FQDN)用于您的集合中新角色。

并非所有独立角色都会在不修改代码的情况下无缝集成到您的集合中。例如,如果包含插件的 Galaxy 的第三方单机角色使用 module_utils/ 目录,则插件本身具有 import 语句。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.