Проблема
Последующий выпуск появляется в 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?
Ты можешь использовать утверждать модуль в начале ваших ролей для проверки значений переменных:
- assert:
that:
- "my_param <= 100"
- "my_param >= 0"
msg: "'my_param' must be between 0 and 100"