2016-06-14 21 views
0

我正在嘗試查找stdout_lines數組中是否存在某個字母。在stdout_lines數組中找到一個字符串

我希望角色在stdout_output中找到'P'時運行。

的stdout_lines陣列看起來像這樣:

"stdout": "P\r\nA\r\nS\r\nI\r\n", "stdout_lines": ["P", "A", "S", "I"] 

myrole.yml

--- 
- hosts: windows 
    gather_facts: false 
    roles: 
    - all_servers 
    - {role: production_server, when: prod_fact.find('P')} 

我得到的錯誤是

致命:[主機名]:失敗! = {「failed」:true,「msg」:「錯誤!條件檢查'{{prod_fact}}。find('P')'failed。錯誤是:ERROR!模板錯誤,模板字符串:expected token' 「,得到了‘串’」}

爲了得到stdout_variable我使用set_fact

--- 
- name: Check Env Type and Save it in Var=prod_fact 
    script: files/CheckEnvType.ps1 -hostname {{inventory_hostname}} 
    register: result 
- set_fact: 
    prod_fact: "{{result.stdout_lines | default('')}}" 

回答

0

錯誤消息是奇怪的,我不能在Ansible 2.但是,你的病情重現仍然無法工作,列表沒有找到方法。在Ansible中,您可以用in搜索清單:

roles: 
    - all_servers 
    - {role: production_server, when: '"P" in prod_fact'} 
相關問題