我有一个如下文件数据:
[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"'
答案 0 :(得分:1)
示例语法(使用split
operator将字符串转换为列表,使用containment test检查元素是否在列表中):
when:
- "'Admin' in product.split(';')"
您可能希望将.split
移到变量定义中以获得更好的代码可读性。