作为 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 在运行安装作业时采用正确的文件。