Ansible条件语句未正确评估

时间:2017-03-09 16:11:12

标签: ansible conditional ansible-2.x

我有一个ansible playbook,其中包含几个任务,用于检查目录中是否存在今天创建的文件并将其保存在files中。我正在对files|length进行比较,并打印出两条不同的消息,具体取决于长度是否为0。

以下是代码:

  - name: Grabbing all of the files that were created today
    shell: find /home/user/empty_directory  -maxdepth 1  -daystart -ctime 0  -print
    register: files

  - debug: var=files.stdout

  - debug: msg="The directory isn't empty"
    when: files|length != 0

  - debug: msg="The directory is empty"
    when: files|length == 0

继承人的输出:

  TASK [debug]
 ok: [server] => {
 "changed": false, 
 "files.stdout": ""
 }

 TASK [debug] 
 ok: [server] => {
"changed": false, 
"msg": "The directory isn't empty"
 }

TASK [debug] 
skipping: [server] => {"changed": false, "skip_reason": "Conditional result was False", "skipped": true}

我制作的错误导致条件评估错误吗?因为基于输出files实际上是空的

我在没有|length的情况下尝试了它并完成了files == ""&的比较files != ""得到了相同的结果。

非常感谢任何建议。

1 个答案:

答案 0 :(得分:2)

您正在检查files|length而不是files.stdout|length。请注意,files也是一个包含其他一些元素的字典,所以它绝对不是空的