角色还使您可以通过创建meta/main.yml带有dependencies块的文件来将其他角色定义为依赖项:
dependencies: - role: common
也可以将值传递给依赖角色中的参数/变量:
dependencies: - { role: common, some_parameter: 3 }
甚至有条件地执行依赖角色:
dependencies: - { role: common, some_parameter: 3 } - { role: sshd, enable_sshd: false, when: environment == 'production' }
依赖角色始终在依赖它们的角色之前执行。而且,它们仅执行一次。如果两个角色声明与其依赖关系相同,则仅在第一次执行。
想象一下角色role1,role2和role3,如下所示meta/main.yml:
role1 / meta / main.yml:
dependencies: - role: role3
角色2 /元/main.yml:
dependencies: - role: role3
在同一个剧本中执行role1和role2时(在role2之前调用role1),执行顺序如下:
role3 -> role1 -> role2
您可以通过allow_duplicates: yes在meta/main.ymlrole1和role2中指定in来覆盖此行为。生成的执行顺序为:
role3 -> role1 -> role3 -> role2