Qual é o equivalente do Puppet à validação de entrada usando stdlib no Ansible?

Qual é o equivalente do Puppet à validação de entrada usando stdlib no Ansible?

Problema

A seguiremitiraparece no cliente ansible-sensu:

{"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"}}

No momento em que o usuário precisa depurar o log do sensu-client para encontrar o problema, o problema pode ser evitado validando a entrada.

Mirar

Para evitar que os usuários que utilizam esta função utilizem nomes que contenham espaços ou caracteres especiais, por exemplo:

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

deixando a execução do Ansible falhar e indicar que a entrada é inválida

Discussão

No Puppet pode-se usarStdlibpara validar a entrada, por exemplo, a variável X é uma String e Y é igual a Hash? Por exemplo, emeste móduloa versão deve ser uma string e se não for esse o caso, a execução do Puppet falhará:

validate_string($version)

e indique que a versão precisa ser uma string.

Como validar a entrada no Ansible também?

Responder1

Você pode usarafirmarmódulo no início de suas funções para validar valores de variáveis:

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

informação relacionada