문제
다음과 같은문제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"