具有多个角色的变量
Variable with multiple roles
我无法根据角色获得正确的变量。
也许我有答案,但我不确定,也无法在文档和其他问题中找到它。
TL;DR:
一个变量的多个角色使用 OR,而不是 AND?
简介
在基础架构中,我为一台机器分配了多个角色:
- 网络服务器
- 应用服务器
- ApplA
- ApplB
一个变量有两个值,每个值都有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,以便在您的步骤和变量中使用。
希望对您有所帮助!
我无法根据角色获得正确的变量。
也许我有答案,但我不确定,也无法在文档和其他问题中找到它。
TL;DR:
一个变量的多个角色使用 OR,而不是 AND?
简介
在基础架构中,我为一台机器分配了多个角色:
- 网络服务器
- 应用服务器
- ApplA
- ApplB
一个变量有两个值,每个值都有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,以便在您的步骤和变量中使用。
希望对您有所帮助!