如何在我的剧本上创建断言?

时间:2020-10-07 14:31:09

标签: ansible

我想在测试中使用assert函数。

目标是检查它们是否是包含权限1500的某些文件和目录,如果是这种情况,我想显示消息 fail

- hosts: localhost 
  tasks: 
  - name: Check assertion
    shell: find . -perm 1500
    register: list_files_directories
  - name: Check if file testfile.txt exists 
    assert: 
      that: 
      -   mode =! '1500' in list_files_directories

经过多次测试后,找不到正确的语法来执行断言...

1 个答案:

答案 0 :(得分:2)

使用find模块。例如,给定文件

shell> find . -perm 1500
./file2

以下任务

    - find:
        paths: .
      register: result
    - debug:
        msg: "{{ result.files|json_query(query) }}"
      vars:
        query: "[?mode=='1500'].path"

提供权限为“ 1500”的文件列表

    "msg": [
        "file2"
    ]

要检查是否有权限为1500的文件和目录,请测试列表的长度

    - assert:
        that: result.files|json_query(query)|length > 0
      vars:
        query: "[?mode=='1500'].path"