2017-09-13 85 views
-2

我正在編寫一個手冊來查找一系列文件中的字符串模式。如果我通過命令模塊運行我的實用程序,它將在STDOUT上生成一個或多個字符串。要跨多個系統運行這個我想運行的命令with_items:對標準輸出進行迭代

- command: "findstring {{ item }}" 
    with_items: 
    - "string1" 
    - "string2" 
    register: found 
    failed_when: found.rc >= 2 

然後遍歷結果後過程中的信息:

- name: Print strings we found 
    debug: 
    var: "{{ item }}" 
    with_items: found.results 

有什麼等同於循環。可以在上面的任務中使用「結果」的索引?這將允許我執行{{item [INDEX] .stdout}}之類的操作來獲取生成的字符串。我還沒有在官方文檔中找到答案,所以我想我會在這裏發表看看大師們的想法。

+0

您在發佈的代碼中至少有三個不同的問題;從使用過時的語法到將事物放在一起,甚至不檢查變量的值。嘗試解決問題並找出真正的問題。 – techraf

+0

格式可能關閉,但代碼在2.3.1.0中正確運行。 – Shibby

+0

在格式很重要的語言(如YAML)中,您需要確保您發佈的代碼是正確的。否則,我們無法從「您忘記縮進某些東西」中看出「真正的問題」。在第一個任務之後(例如,包含'var:found'的'debug'任務的輸出),在你的問題中包含'found'變量的內容也會有幫助。 – larsks

回答

0

如果你需要從所有命令的每一行迭代,使用方法:

- debug: 
    msg: "Do smth for line {{ item }}" 
    with_items: "{{ found | json_query('results[].stdout_lines[]') }}" 

這會從found.results曾經元素,然後從每一個stdout_lines每個元素。