如何从ansible中的文件到分隔符访问数据,并根据变量将数据分配给变量和循环播放

问题描述 投票:0回答:1

我有一个如下文件数据:

[prod]
product=Admin;Financial;Hrm

当我尝试访问文件数据时,我得到完整的行,如Admin;Financial;Hrm但是对于第一个循环我只需要Admin,而对于第二个循环我应该得到Financial而对于第三个循环我应该得到hrm

我正在访问文件数据并将其分配给变量,如:

- set_fact: product={{ lookup('ini', 'product type=prod file=vars.properties') }}"

我的下面的剧本应该根据产品看

剧本如下

- name: This task is to loop ansible playbook according to inputs with delimiters
  debug: msg="{{product}}"

- include: sudo ansible-playbook create_new_env_adm.yml --extra-vars "Release=3.11.1"
  when: 
    - '"appfolder" == "ADM"'
    - '"product"=="Admin"'`

- include: sudo ansible-playbook create_new_env_fin.yml --extra-vars "Release=3.11.2"
  when:
    - '"appfolder" == "fin"'
    - '"product"=="Financial"'`

- include: sudo ansible-playbook create_new_env_hrm.yml --extra-vars "Release=3.11.3"
  when: 
    - '"appfolder" == "hrm"'
    - '"product"=="Hrm"'
ansible ansible-template
1个回答
1
投票

示例语法(使用split operator将字符串转换为列表,使用containment test检查元素是否在列表中):

when: 
  - "'Admin' in product.split(';')"

您可能希望将.split移动到变量定义以获得更好的代码可读性。

© www.soinside.com 2019 - 2024. All rights reserved.