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

时间:2017-12-17 17:55:14

标签: ansible ansible-template

我有一个如下文件数据:

[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"'

1 个答案:

答案 0 :(得分:1)

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

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

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