0

作为 Ansible 及其强大功能的相对新手,我在尝试运行将在某台机器上安装软件的作业时遇到了一个问题。

作为此安装过程的一部分,playbook 将为每个不同的目标设置一个端口和后续端口偏移量。在这种情况下,我有 tst & servertst。每个在 group_vars 中都有自己的 yaml 文件。这个 yaml 文件所做的只是将 tst 的服务器偏移量设置为 100,将服务器 tst 设置为 200。

我已经看到很多关于 Ansible 如何生成 group_var 变量的信息,以及如果你有两次相同的变量值如何有效地应用最后一个。有趣的是,如果我重命名 tst 文件而只保留 servertst yaml 文件,则端口偏移量定义正确。

    servertst.yaml
    srv_environment: TST
    srv_port_offset: 200

    tst.yaml
    srv_environment: TST
    srv_port_offset: 100

如果我在主要作业中运行一些变量调试,我仅限于部署一个 xml 文件(应该设置端口号)我有这个

任务 [显示主机已知的所有变量/事实] ****************************************** ******************************************

    "srv_port_offset": 100

任务 [显示主机已知的所有变量/事实] ****************************************** ******************************************

    "srv_environment": "TST"

任务 [显示主机的所有变量/fac] **************************************** ******************************************

    "srv_hostname": "srv.tst.saas.com"

任务 [显示主机已知的所有变量/事实]

   "srv_home": "/opt/tst/srvdir"

我希望 servertst 参数使用参数 servertst 而不是 tst 运行作业。

在任何情况下,servertst 的主机名都是正确的,srv_home 目录也是如此。但是端口偏移量不是使用 tst 服务器的值作为偏移量,这反过来又会导致绑定问题。

我也尝试过使用 ansible_group_priority ,但这对这种情况没有影响。

以前有人反对过这样的事情吗?我可以包括一些东西来区分 servertst 和 tst 的 group_vars 文件,以便 ansible 在运行安装作业时采用正确的文件。

4

0 回答 0