Was ist das Puppet-Äquivalent zur Eingabevalidierung mit stdlib in Ansible?

Was ist das Puppet-Äquivalent zur Eingabevalidierung mit stdlib in Ansible?

Problem

Die folgendeAusgabeerscheint im 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"}}

Im Moment muss der Benutzer die Protokollierung des Sensu-Clients debuggen, um das Problem zu finden. Das Problem könnte durch eine Validierung der Eingabe verhindert werden.

Ziel

Um zu verhindern, dass Benutzer dieser Rolle Namen verwenden, die Leerzeichen oder Sonderzeichen enthalten, zB:

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

indem Sie den Ansible-Lauf fehlschlagen lassen und angeben, dass die Eingabe ungültig ist

Diskussion

In Puppet könnte man verwendenStdlibum die Eingabe zu validieren, z. B. ist die Variable X ein String und ist Y gleich Hash? Zum Beispiel indieses Moduldie Version sollte ein String sein. Wenn das nicht der Fall ist, schlägt der Puppet-Lauf fehl:

validate_string($version)

und geben Sie an, dass die Version eine Zeichenfolge sein muss.

Wie validiert man Eingaben auch in Ansible?

Antwort1

Sie könnenbehauptenModul am Anfang Ihrer Rollen, um Variablenwerte zu validieren:

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

verwandte Informationen