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

时间:2019-01-10 15:08:38

标签: jenkins ansible ansible-inventory ansible-facts ansible-template

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

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

所以我正在搜索类似的东西

 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 个答案:

答案 0 :(得分:0)

我正在寻找inventory_file

所以实际变量就像

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