Ansible은 stdout에서 값을 가져오고 변수가 정의된 임계값을 초과하면 실패합니다.

Ansible은 stdout에서 값을 가져오고 변수가 정의된 임계값을 초과하면 실패합니다.

ansibleSTDOUT 및 플레이북에서 row_count 값만 검색한 다음 row_count가 10보다 크면 실패하는 방법이 있습니까?
(행 수 > 10)

표준 출력:

temp_id,order_id,status,created_at
854556545610443,,order_success,2022-08-23 09:29:29
854556545610444,,order_success,2022-08-23 09:37:02
854556545610445,,order_success,2022-08-23 09:38:47
854556545610446,,order_success,2022-08-23 12:40:41
854556545610447,,order_success,2022-08-24 07:53:54
854556545610448,,order_success,2022-08-24 10:11:48
854556545610449,,order_success,2022-08-24 14:34:37
854556545610450,,order_success,2022-08-24 23:49:52
854556545611146,,order_success,2022-09-16 12:55:57
854556545611147,,order_success,2022-09-16 12:56:00
854556545611148,,order_success,2022-09-16 12:56:07
854556545611149,,order_success,2022-09-16 12:56:07
854556545611150,,order_success,2022-09-16 12:56:10   
13 row(s) has been generated successfully.

행 수 = 13

답변1

가까운표준 출력속성으로 등록된 변수에도 속성이 있습니다.표준 출력 라인. 예를 들어(테스트를 위해 단순화됨)

    out:
      stdout_lines:
        - line_01
        - line_02
        - line_03
        - 3 row(s) has been generated successfully.
        - row_count = 3

변수를 선언합니다. 마지막 행을 가져와 값을 분할합니다.

  row_count: "{{ out.stdout_lines|last|split('=')|last|int }}"

주어진

  row_count: '3'

테스트 행 수

    - assert:
        that: row_count|int < 3
        fail_msg: "[ERR] More than 2 rows. row_count={{ row_count }}"

테스트를 위한 완전한 플레이북 예시

- hosts: localhost

  vars:

    out:
      stdout_lines:
        - line_01
        - line_02
        - line_03
        - 3 row(s) has been generated successfully.
        - row_count = 3

    row_count: "{{ out.stdout_lines|last|split('=')|last|int }}"

  tasks:

    - debug:
        var: row_count

    - assert:
        that: row_count|int < 3
        fail_msg: "[ERR] More than 2 rows. row_count={{ row_count }}"

관련 정보