2016-03-04 36 views
1

我有一個playbbokansible with_first_found不工作

- shell: echo "{{ ansible_env.CMS_PLI }}/conf/application.conf" 
    register: pli_loc 
- shell: echo "{{ ansible_env.CMS }}/conf/application.conf" 
    register: cms_loc 
- shell: "echo {{ item }}" 
    with_first_found: 
    - "{{ pli_loc.stdout }}" 
    - "{{ cms_loc.stdout }}" 
    - "{{ ansible_env.CMS_PLI }}/conf/application.conf" 
    - /etc/passwd 

第一和第二殼輸出都OK,文件存在的這一部分,但第三外殼僅輸出/ etc/passwd文件

我想第三個shell輸出爲pli_loc.stdout或cms_loc.stdout之一

爲什麼它找不到第一個?

+0

在最後一個shell命令前面調用'debug:'模塊,以確保這些值包含您認爲它們包含的內容。以詳細模式運行會產生任何附加信息嗎? – larsks

回答

4

爲什麼不找到第一個?

因爲with_first_found(與所有查找插件一樣)在本地執行,而非遠程執行。所以你正在控制主機上尋找文件。

查看該循環的docs。這個例子是一個模板任務,所以很明顯它在控制主機上搜索。不幸的是,文檔在這個問題上不是很清楚,你必須在使用的模塊的背景下閱讀它。