Spec-Zone.ru › Ansible

Play Argument Validation

Beginning in version 2.20, you can enable argument validation using the play keyword validate_argspec. This adds a validate_argument_spec task following play-level fact gathering. This feature is tech preview.

Play argument validation has two main parts:

  • The validate_argspec keyword.
  • A .meta.yml file that defines argument specifications.

To enable play argument validation you:

  1. Define the argument specification identifier by setting a value for the validate_argspec keyword. You can set the value to True to use the play name or you can set the value to a string.
  2. Provide a valid argument specification in a <playbook_name>.meta.yml file in the same directory as the playbook.

The following example provides a valid, empty argument specification named setup webserver for the playbook create_webserver.yml:

# create_webserver.meta.yml
argument_specs:
  setup webserver:
    options: {}

In the following playbook, both plays validate the play arguments against the setup webserver arguments:

# create_webserver.yml
- name: setup webserver
  hosts: all
  validate_argspec: True

- hosts: all
  validate_argspec: setup webserver

Specification Format

The play argument specification must be defined in a top-level argument_specs block within the playbook’s .meta.yml file. All fields are lowercase.

argument-spec-name:
  • The name of the play or argument specification.
description:
  • A description of the play that may contain multiple lines.
  • This can be a single string or a list of strings.
options:
  • This section defines the dictionary of play arguments.
  • For each play option (argument), you may include:
option-name:
  • The name of the option/argument (required).
description:
  • Detailed explanation of what this option does. It should be written in full sentences.
  • This can be a single string or a list of strings.
type:
  • The data type of the option. See Argument spec for allowed values for type. The default is str.
  • If an option is of type list, elements should be specified.
required:
  • Only needed if true.
  • If missing, the option is not required.
choices:
  • List of option values.
  • Should be absent if empty.
elements:
  • Specifies the data type for list elements when the type is list.
options:
  • If this option takes a dict or list of dicts, you can define the structure here.

Sample Specification

# create_webservers.meta.yml
description: Set up basic HTTPS-enabled webserver to serve content from a specified document root.
argument_specs:
  setup webserver:
    options:
      document_root:
        description: Path to the directory containing static web content to be served.
        type: str
        required: True
      port:
        description:
          - Port number on which the webserver listens for incoming HTTPS connections.
          - When unspecified, the port is 443.
        type: int
      ssl_cert_path:
        description: Path to the SSL certificate.
        type: str
        required: True
      ssl_key_path:
        description: Path to the private key corresponding to the SSL certificate.
        type: str
        required: True

© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/playbook_guide/playbooks_variables_validation.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API