Ansible에서 stdlib를 사용하는 입력 검증에 해당하는 Puppet은 무엇입니까?

Ansible에서 stdlib를 사용하는 입력 검증에 해당하는 Puppet은 무엇입니까?

문제

다음과 같은문제ansible-sensu-client에 나타납니다:

{"timestamp":"2017-01-19T09:49:14.803754+0000","level":"fatal","message":
"check name cannot contain spaces or special characters","object":{"handlers":
["mailer","sms"],"command":"check-ports.rb  -p 234","interval":30,"standalone":
true,"name":"port 234"}}

사용자가 문제를 찾기 위해 sensu-client 로깅을 디버그해야 하는 순간, 입력을 검증하면 문제를 예방할 수 있습니까?

목표

이 역할을 사용하는 사용자가 공백이나 특수 문자가 포함된 이름을 사용하지 않도록 하려면 다음과 같이 하십시오.

sensu_client_checks_metrics_common:
  - cmd: check-cpu
  - cmd: check-memory-percent
  - cmd: check-ntp
  - cmd: check-swap-percent
    handlers:
      - mailer
  - cmd: metrics-cpu
    handlers: 
      - relay
  - cmd: metrics-memory-percent
    handlers: 
      - relay
  - cmd: metrics-disk
    handlers: 
      - relay
  - cmd: metrics-disk-usage
    handlers: 
      - relay

Ansible 실행이 실패하도록 하고 입력이 유효하지 않음을 나타냅니다.

논의

Puppet에서는 다음을 사용할 수 있습니다.Stdlib입력을 검증하기 위해, 예를 들어 변수 X는 문자열이고 Y는 해시와 같습니까? 예를 들어,이 모듈버전은 문자열이어야 하며 그렇지 않은 경우 Puppet 실행이 실패합니다.

validate_string($version)

버전이 문자열이어야 함을 나타냅니다.

Ansible에서도 입력을 검증하는 방법은 무엇입니까?

답변1

당신이 사용할 수있는주장하다변수 값을 검증하기 위해 역할 시작 부분의 모듈:

- assert:
    that:
      - "my_param <= 100"
      - "my_param >= 0"
    msg: "'my_param' must be between 0 and 100"

관련 정보