Ansibile 변수 값에 세 가지 옵션이 있는지 확인하는 방법, 삼항 연산자는 두 가지 옵션에만 작동합니다.

Ansibile 변수 값에 세 가지 옵션이 있는지 확인하는 방법, 삼항 연산자는 두 가지 옵션에만 작동합니다.

마운트 지점이 /dev/backboot >70%이면 "High"로 설정하고, < 70%이면 "Normal"로 설정하고, 해당 마운트 지점이 전혀 없으면 "Unavailable"로 설정합니다.

아래 예는 두 가지 옵션으로 작동하지만 세 가지 옵션이 필요합니다. 제안해 주시겠습니까?

  • 이름: 사용법 가져오기
    명령: df -k | grep -i /dev/backboot | grep -i /dev/backboot
    | :

    예를 들어 등록된 값 'usage.stdout'을 사용한 출력은 67%입니다.

  • 이름: 값 설정
    set_fact:
    mspace: "{{ (usage.stdout | int < 80) | ternary('Normal','High') }}"

답변1

int로 변환해도 67%생성되지 않습니다 67. 왜냐하면 출력에서 ​​이를 제거해야 하기 0때문 입니다.%

not available귀하의 질문에 대해서는 /dev/backboot가 존재하지 않는 경우 변수를 설정하는 조건을 설정할 수 있습니다 .

- stat:
    path: /dev/backboot
  register: backboot

- set_fact:
    mspace: 'not available'
  when: backboot.stat.exists != true

- block:
    - command: df -k | grep -i /dev/backboot | awk '{print $5}'
      register: usage

    - set_fact:
        mspace: "{{ (usage.stdout | int < 80) | ternary('Normal','High') }}"
  when: backboot.stat.exists == true

답변2

Ansible 2.8에는 null인 세 번째 옵션이 있습니다. 아직 시도해보지는 않았지만 마운트 지점이 없을 때 setfact에 오류가 없다는 사실에 조금 놀랐습니다.

또 다른 옵션은 두 번째 setfact를 추가하고 기존 setfact와 새 setfact 모두에 when을 추가하여 마운트 지점에 대한 Ansible 사실을 확인하는 것입니다. 원래 세트는 mspace가 있으면 설정하고 다른 세트는 mspace를 설정합니다. 존재하지 않습니다. 이와 유사한 것입니다(ansible 버전과 실행 중인 시스템에 따라 약간 변경될 수 있음).

set_fact: mspace: "사용할 수 없음" 다음 경우: (ansible_devices.backboot가 정의되지 않음)

원래 세트팩트에 추가되었습니다.

시기: (ansible_devices.backboot가 정의됨)

사용 가능한 사실이 있는 경우 ansible은 df 명령을 실행하지 않고도 이를 사용할 수 있습니다.

관련 정보