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 文件。
流程
如有必要,重命名包含角色的目录以反映其内容,例如
acl_config或tacacs。集合中的角色的名称不能有连字符。改为使用下划线字符(
_)。将独立角色中的 roles 目录复制到集合中的
roles/目录中。例如,在名为
myapp_network的集合中,将角色添加到myapp_network/roles/目录中。将独立角色中的任何插件复制到新集合的
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 └── varsrun角色是构建集合时创建的默认角色目录。- 更新您的 playbook,以将完全限定集合名称(FQDN)用于您的集合中新角色。
并非所有独立角色都会在不修改代码的情况下无缝集成到您的集合中。例如,如果包含插件的 Galaxy 的第三方单机角色使用 module_utils/ 目录,则插件本身具有 import 语句。