代码之家  ›  专栏  ›  技术社区  ›  user3847894

如何获取ansible库存文件名作为变量

  •  0
  • user3847894  · 技术社区  · 7 年前

    我有一种情况,三个Jenkins作业正在运行,它使用ansible进行部署。此作业使用自己的库存文件,如/opt/abc/ci1.inventory、/opt/abc/ci2.inventory、/opt/abc/ci3.inventory等。例如,如果第一个jenkins作业正在运行,它将使用/opt/abc/ci1.inventory文件。

    我有一个ansible模板,其中有一个变量“jenkins_ci_job”,我想根据jenkins作业的运行情况为它赋值。例如,如果作业1正在运行,则它会将值“ci1”分配给“jenkins_ci_job”变量。我看到的唯一方法是获取清单文件名并搜索它是否包含作业名。

    所以我在寻找这样的东西

     jenkins_ci_job:
        "{{ 'ci1' if <ansible_inventory_full_path_name> contains 'ci1' else 'ci2' if <ansible_inventory_full_path_name> contains 'ci2 else 'ci3' }}"
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   user3847894    7 年前

    我在找 inventory_file

    所以实际的变量应该是

    jenkins_ci_job: "{{ 'ci1' if (inventory_file | regex_search('(ci1)') == 'ci1') else 'ci2' }}"