具有多个角色的变量

Variable with multiple roles

我无法根据角色获得正确的变量。

也许我有答案,但我不确定,也无法在文档和其他问题中找到它。

TL;DR:

一个变量的多个角色使用 OR,而不是 AND?

简介

在基础架构中,我为一台机器分配了多个角色:

一个变量有两个值,每个值都有WebServer和ApplA或ApplB的作用。

在进程中,使用角色 WebServer 和 ApplA 的相同组合(或 WebServer 和 ApplB)。

问题

ApplB的变量值在ApplA的步骤中使用。

这似乎是因为它在角色之间使用了 OR 而不是 AND。

正确吗?

没错。如果在作用域中应用了多个角色,则意味着该变量将分别对这两个角色具有该值,而不是一起。您可以组合不同类型的范围(如 DEV 和 ApplA),但不能同时组合。

This section from the docs 有更多关于作用域优先级的信息,以及如果存在冲突值会发生什么。

在您的部署过程中,"Deploy site" 步骤将 运行 用于具有 WebServer 或 ApplA 的所有目标。那可能不是你想要的。

在这种情况下,您可以考虑删除网络服务器角色以限定变量和部署步骤的范围,或者将其与其他标签结合使用,使它们更具体一些。除了 WebServer、ApplA 和 ApplB,您可以将它们替换为 ApplA-Web 和 ApplB-Web,以便在您的步骤和变量中使用。

希望对您有所帮助!