Ansible の stdlib を使用した入力検証に相当する Puppet の機能は何ですか?

Ansible の stdlib を使用した入力検証に相当する Puppet の機能は何ですか?

問題

次の問題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では標準ライブラリ入力を検証する、例えば変数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"

関連情報