Каков эквивалент проверки входных данных в Puppet с использованием stdlib в Ansible?

Каков эквивалент проверки входных данных в Puppet с использованием stdlib в Ansible?

Проблема

Следующеепроблемапоявляется в 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"

Связанный контент