summaryrefslogtreecommitdiffstats
path: root/src/ansiblelint/schemas/playbook.json
diff options
context:
space:
mode:
Diffstat (limited to 'src/ansiblelint/schemas/playbook.json')
-rw-r--r--src/ansiblelint/schemas/playbook.json1245
1 files changed, 1245 insertions, 0 deletions
diff --git a/src/ansiblelint/schemas/playbook.json b/src/ansiblelint/schemas/playbook.json
new file mode 100644
index 0000000..983033f
--- /dev/null
+++ b/src/ansiblelint/schemas/playbook.json
@@ -0,0 +1,1245 @@
+{
+ "$comment": "Generated from ansible.json, do not edit.",
+ "$defs": {
+ "ansible.builtin.import_playbook": {
+ "additionalProperties": false,
+ "oneOf": [
+ {
+ "not": {
+ "required": [
+ "import_playbook"
+ ]
+ },
+ "required": [
+ "ansible.builtin.import_playbook"
+ ]
+ },
+ {
+ "not": {
+ "required": [
+ "ansible.builtin.import_playbook"
+ ]
+ },
+ "required": [
+ "import_playbook"
+ ]
+ }
+ ],
+ "patternProperties": {
+ "^(ansible\\.builtin\\.)?import_playbook$": {
+ "markdownDescription": "* Includes a file with a list of plays to be executed.\n * Files with a list of plays can only be included at the top level.\n * You cannot use this action inside a play.\n\nSee [import_playbook](https://docs.ansible.com/ansible/latest/collections/ansible/builtin/import_playbook_module.html)",
+ "title": "Import Playbook",
+ "type": "string"
+ },
+ "name": {
+ "title": "Name",
+ "type": "string"
+ },
+ "tags": {
+ "$ref": "#/$defs/tags"
+ },
+ "vars": {
+ "title": "Vars",
+ "type": "object"
+ },
+ "when": {
+ "$ref": "#/$defs/complex_conditional",
+ "title": "When"
+ }
+ },
+ "type": "object"
+ },
+ "become_method": {
+ "anyOf": [
+ {
+ "enum": [
+ "ansible.builtin.sudo",
+ "ansible.builtin.su",
+ "community.general.pbrun",
+ "community.general.pfexec",
+ "ansible.builtin.runas",
+ "community.general.dzdo",
+ "community.general.ksu",
+ "community.general.doas",
+ "community.general.machinectl",
+ "community.general.pmrun",
+ "community.general.sesu",
+ "community.general.sudosu"
+ ],
+ "type": "string"
+ },
+ {
+ "$ref": "#/$defs/full-jinja"
+ },
+ {
+ "pattern": "[A-Za-z0-9_\\.]+",
+ "type": "string"
+ }
+ ],
+ "markdownDescription": "See [become](https://docs.ansible.com/ansible/latest/user_guide/become.html)",
+ "title": "Become Method"
+ },
+ "block": {
+ "properties": {
+ "always": {
+ "items": {
+ "anyOf": [
+ {
+ "$ref": "#/$defs/task"
+ },
+ {
+ "$ref": "#/$defs/block"
+ }
+ ]
+ },
+ "title": "Always",
+ "type": "array"
+ },
+ "any_errors_fatal": {
+ "$ref": "#/$defs/templated-boolean",
+ "title": "Any Errors Fatal"
+ },
+ "become": {
+ "$ref": "#/$defs/templated-boolean",
+ "title": "Become"
+ },
+ "become_exe": {
+ "title": "Become Exe",
+ "type": "string"
+ },
+ "become_flags": {
+ "title": "Become Flags",
+ "type": "string"
+ },
+ "become_method": {
+ "$ref": "#/$defs/become_method"
+ },
+ "become_user": {
+ "title": "Become User",
+ "type": "string"
+ },
+ "block": {
+ "items": {
+ "anyOf": [
+ {
+ "$ref": "#/$defs/task"
+ },
+ {
+ "$ref": "#/$defs/block"
+ }
+ ]
+ },
+ "markdownDescription": "Blocks create logical groups of tasks. Blocks also offer ways to handle task errors, similar to exception handling in many programming languages. See [blocks](https://docs.ansible.com/ansible/latest/user_guide/playbooks_blocks.html)",
+ "title": "Block",
+ "type": "array"
+ },
+ "check_mode": {
+ "$ref": "#/$defs/complex_conditional",
+ "title": "Check Mode"
+ },
+ "collections": {
+ "items": {
+ "type": "string"
+ },
+ "title": "Collections",
+ "type": "array"
+ },
+ "connection": {
+ "title": "Connection",
+ "type": "string"
+ },
+ "debugger": {
+ "title": "Debugger",
+ "type": "string"
+ },
+ "delegate_facts": {
+ "title": "Delegate Facts",
+ "type": "boolean"
+ },
+ "delegate_to": {
+ "title": "Delegate To",
+ "type": "string"
+ },
+ "diff": {
+ "$ref": "#/$defs/templated-boolean",
+ "title": "Diff"
+ },
+ "environment": {
+ "$ref": "#/$defs/environment"
+ },
+ "ignore_errors": {
+ "$ref": "#/$defs/ignore_errors"
+ },
+ "ignore_unreachable": {
+ "title": "Ignore Unreachable",
+ "type": "boolean"
+ },
+ "module_defaults": {
+ "title": "Module Defaults"
+ },
+ "name": {
+ "title": "Name",
+ "type": "string"
+ },
+ "no_log": {
+ "$ref": "#/$defs/templated-boolean"
+ },
+ "port": {
+ "$ref": "#/$defs/templated-integer"
+ },
+ "remote_user": {
+ "title": "Remote User",
+ "type": "string"
+ },
+ "rescue": {
+ "items": {
+ "anyOf": [
+ {
+ "$ref": "#/$defs/task"
+ },
+ {
+ "$ref": "#/$defs/block"
+ }
+ ]
+ },
+ "title": "Rescue",
+ "type": "array"
+ },
+ "run_once": {
+ "$ref": "#/$defs/templated-boolean",
+ "title": "Run Once"
+ },
+ "tags": {
+ "$ref": "#/$defs/tags",
+ "title": "Tags"
+ },
+ "throttle": {
+ "$ref": "#/$defs/templated-integer",
+ "title": "Throttle"
+ },
+ "timeout": {
+ "$ref": "#/$defs/templated-integer",
+ "title": "Timeout"
+ },
+ "vars": {
+ "title": "Vars",
+ "type": "object"
+ },
+ "when": {
+ "$ref": "#/$defs/complex_conditional",
+ "title": "When"
+ }
+ },
+ "required": [
+ "block"
+ ],
+ "type": "object"
+ },
+ "complex_conditional": {
+ "oneOf": [
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "string"
+ },
+ {
+ "items": {
+ "anyOf": [
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ "type": "array"
+ }
+ ]
+ },
+ "environment": {
+ "anyOf": [
+ {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ {
+ "$ref": "#/$defs/full-jinja"
+ }
+ ],
+ "title": "Environment"
+ },
+ "full-jinja": {
+ "pattern": "^\\{[\\{%](.|[\r\n])*[\\}%]\\}$",
+ "type": "string"
+ },
+ "ignore_errors": {
+ "$ref": "#/$defs/templated-boolean",
+ "markdownDescription": "See [ignore_errors](https://docs.ansible.com/ansible/latest/user_guide/playbooks_error_handling.html#ignoring-failed-commands)",
+ "title": "Ignore Errors"
+ },
+ "no_log": {
+ "$ref": "#/$defs/templated-boolean",
+ "markdownDescription": "Use for protecting sensitive data. See [no_log](https://docs.ansible.com/ansible/latest/reference_appendices/logging.html)",
+ "title": "no_log"
+ },
+ "play": {
+ "additionalProperties": false,
+ "allOf": [
+ {
+ "not": {
+ "required": [
+ "ansible.builtin.import_playbook"
+ ]
+ }
+ },
+ {
+ "not": {
+ "required": [
+ "import_playbook"
+ ]
+ }
+ }
+ ],
+ "properties": {
+ "any_errors_fatal": {
+ "$ref": "#/$defs/templated-boolean",
+ "title": "Any Errors Fatal"
+ },
+ "become": {
+ "$ref": "#/$defs/templated-boolean",
+ "title": "Become"
+ },
+ "become_exe": {
+ "title": "Become Exe",
+ "type": "string"
+ },
+ "become_flags": {
+ "title": "Become Flags",
+ "type": "string"
+ },
+ "become_method": {
+ "$ref": "#/$defs/become_method"
+ },
+ "become_user": {
+ "title": "Become User",
+ "type": "string"
+ },
+ "check_mode": {
+ "$ref": "#/$defs/complex_conditional",
+ "title": "Check Mode"
+ },
+ "collections": {
+ "items": {
+ "type": "string"
+ },
+ "title": "Collections",
+ "type": "array"
+ },
+ "connection": {
+ "title": "Connection",
+ "type": "string"
+ },
+ "debugger": {
+ "title": "Debugger",
+ "type": "string"
+ },
+ "diff": {
+ "$ref": "#/$defs/templated-boolean",
+ "title": "Diff"
+ },
+ "environment": {
+ "$ref": "#/$defs/environment"
+ },
+ "fact_path": {
+ "title": "Fact Path",
+ "type": "string"
+ },
+ "force_handlers": {
+ "title": "Force Handlers",
+ "type": "boolean"
+ },
+ "gather_facts": {
+ "title": "Gather Facts",
+ "type": "boolean"
+ },
+ "gather_subset": {
+ "items": {
+ "anyOf": [
+ {
+ "enum": [
+ "all",
+ "min",
+ "all_ipv4_addresses",
+ "all_ipv6_addresses",
+ "apparmor",
+ "architecture",
+ "caps",
+ "chroot,cmdline",
+ "date_time",
+ "default_ipv4",
+ "default_ipv6",
+ "devices",
+ "distribution",
+ "distribution_major_version",
+ "distribution_release",
+ "distribution_version",
+ "dns",
+ "effective_group_ids",
+ "effective_user_id",
+ "env",
+ "facter",
+ "fips",
+ "hardware",
+ "interfaces",
+ "is_chroot",
+ "iscsi",
+ "kernel",
+ "local",
+ "lsb",
+ "machine",
+ "machine_id",
+ "mounts",
+ "network",
+ "ohai",
+ "os_family",
+ "pkg_mgr",
+ "platform",
+ "processor",
+ "processor_cores",
+ "processor_count",
+ "python",
+ "python_version",
+ "real_user_id",
+ "selinux",
+ "service_mgr",
+ "ssh_host_key_dsa_public",
+ "ssh_host_key_ecdsa_public",
+ "ssh_host_key_ed25519_public",
+ "ssh_host_key_rsa_public",
+ "ssh_host_pub_keys",
+ "ssh_pub_keys",
+ "system",
+ "system_capabilities",
+ "system_capabilities_enforced",
+ "user",
+ "user_dir",
+ "user_gecos",
+ "user_gid",
+ "user_id",
+ "user_shell",
+ "user_uid",
+ "virtual",
+ "virtualization_role",
+ "virtualization_type"
+ ],
+ "type": "string"
+ },
+ {
+ "enum": [
+ "!all",
+ "!min",
+ "!all_ipv4_addresses",
+ "!all_ipv6_addresses",
+ "!apparmor",
+ "!architecture",
+ "!caps",
+ "!chroot,cmdline",
+ "!date_time",
+ "!default_ipv4",
+ "!default_ipv6",
+ "!devices",
+ "!distribution",
+ "!distribution_major_version",
+ "!distribution_release",
+ "!distribution_version",
+ "!dns",
+ "!effective_group_ids",
+ "!effective_user_id",
+ "!env",
+ "!facter",
+ "!fips",
+ "!hardware",
+ "!interfaces",
+ "!is_chroot",
+ "!iscsi",
+ "!kernel",
+ "!local",
+ "!lsb",
+ "!machine",
+ "!machine_id",
+ "!mounts",
+ "!network",
+ "!ohai",
+ "!os_family",
+ "!pkg_mgr",
+ "!platform",
+ "!processor",
+ "!processor_cores",
+ "!processor_count",
+ "!python",
+ "!python_version",
+ "!real_user_id",
+ "!selinux",
+ "!service_mgr",
+ "!ssh_host_key_dsa_public",
+ "!ssh_host_key_ecdsa_public",
+ "!ssh_host_key_ed25519_public",
+ "!ssh_host_key_rsa_public",
+ "!ssh_host_pub_keys",
+ "!ssh_pub_keys",
+ "!system",
+ "!system_capabilities",
+ "!system_capabilities_enforced",
+ "!user",
+ "!user_dir",
+ "!user_gecos",
+ "!user_gid",
+ "!user_id",
+ "!user_shell",
+ "!user_uid",
+ "!virtual",
+ "!virtualization_role",
+ "!virtualization_type"
+ ],
+ "type": "string"
+ }
+ ]
+ },
+ "title": "Gather Subset",
+ "type": "array"
+ },
+ "gather_timeout": {
+ "$ref": "#/$defs/templated-integer",
+ "title": "Gather Timeout"
+ },
+ "handlers": {
+ "$ref": "#/$defs/tasks"
+ },
+ "hosts": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ ],
+ "title": "Hosts"
+ },
+ "ignore_errors": {
+ "$ref": "#/$defs/ignore_errors"
+ },
+ "ignore_unreachable": {
+ "title": "Ignore Unreachable",
+ "type": "boolean"
+ },
+ "max_fail_percentage": {
+ "title": "Max Fail Percentage",
+ "type": "number"
+ },
+ "module_defaults": {
+ "title": "Module Defaults"
+ },
+ "name": {
+ "title": "Name",
+ "type": "string"
+ },
+ "no_log": {
+ "$ref": "#/$defs/templated-boolean"
+ },
+ "order": {
+ "enum": [
+ "default",
+ "sorted",
+ "reverse_sorted",
+ "reverse_inventory",
+ "shuffle"
+ ],
+ "title": "Order",
+ "type": "string"
+ },
+ "port": {
+ "$ref": "#/$defs/templated-integer",
+ "title": "Port"
+ },
+ "post_tasks": {
+ "$ref": "#/$defs/tasks"
+ },
+ "pre_tasks": {
+ "$ref": "#/$defs/tasks"
+ },
+ "remote_user": {
+ "title": "Remote User",
+ "type": "string"
+ },
+ "roles": {
+ "items": {
+ "anyOf": [
+ {
+ "$ref": "#/$defs/play-role"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ "markdownDescription": "Roles let you automatically load related vars, files, tasks, handlers, and other Ansible artifacts based on a known file structure. After you group your content in roles, you can easily reuse them and share them with other users.\n See [roles](https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html#roles)",
+ "title": "Roles",
+ "type": "array"
+ },
+ "run_once": {
+ "$ref": "#/$defs/templated-boolean",
+ "title": "Run Once"
+ },
+ "serial": {
+ "anyOf": [
+ {
+ "$ref": "#/$defs/templated-integer-or-percent"
+ },
+ {
+ "items": {
+ "$ref": "#/$defs/templated-integer-or-percent"
+ },
+ "type": "array"
+ }
+ ],
+ "markdownDescription": "Integer, percentage or list of those. See [Setting the batch size with serial](https://docs.ansible.com/ansible/latest/user_guide/playbooks_strategies.html#setting-the-batch-size-with-serial)",
+ "title": "Batch size"
+ },
+ "strategy": {
+ "title": "Strategy",
+ "type": "string"
+ },
+ "tags": {
+ "$ref": "#/$defs/tags",
+ "title": "Tags"
+ },
+ "tasks": {
+ "$ref": "#/$defs/tasks"
+ },
+ "throttle": {
+ "$ref": "#/$defs/templated-integer",
+ "title": "Throttle"
+ },
+ "timeout": {
+ "$ref": "#/$defs/templated-integer",
+ "title": "Timeout"
+ },
+ "user": {
+ "title": "Remote User",
+ "type": "string"
+ },
+ "vars": {
+ "title": "Vars",
+ "type": "object"
+ },
+ "vars_files": {
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ ]
+ },
+ "title": "Vars Files",
+ "type": [
+ "array",
+ "string",
+ "null"
+ ]
+ },
+ "vars_prompt": {
+ "items": {
+ "$ref": "#/$defs/vars_prompt"
+ },
+ "markdownDescription": "See [vars_prompt](https://docs.ansible.com/ansible/latest/user_guide/playbooks_prompts.html)",
+ "title": "vars_prompt",
+ "type": "array"
+ },
+ "when": {
+ "$ref": "#/$defs/complex_conditional",
+ "title": "When"
+ }
+ },
+ "required": [
+ "hosts"
+ ],
+ "title": "play",
+ "type": "object"
+ },
+ "play-role": {
+ "markdownDescription": "See [roles](https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html#roles)",
+ "properties": {
+ "any_errors_fatal": {
+ "$ref": "#/$defs/templated-boolean",
+ "title": "Any Errors Fatal"
+ },
+ "become": {
+ "$ref": "#/$defs/templated-boolean",
+ "title": "Become"
+ },
+ "become_exe": {
+ "title": "Become Exe",
+ "type": "string"
+ },
+ "become_flags": {
+ "title": "Become Flags",
+ "type": "string"
+ },
+ "become_method": {
+ "$ref": "#/$defs/become_method"
+ },
+ "become_user": {
+ "title": "Become User",
+ "type": "string"
+ },
+ "check_mode": {
+ "$ref": "#/$defs/complex_conditional",
+ "title": "Check Mode"
+ },
+ "collections": {
+ "items": {
+ "type": "string"
+ },
+ "title": "Collections",
+ "type": "array"
+ },
+ "connection": {
+ "title": "Connection",
+ "type": "string"
+ },
+ "debugger": {
+ "title": "Debugger",
+ "type": "string"
+ },
+ "delegate_to": {
+ "title": "Delegate To",
+ "type": "string"
+ },
+ "diff": {
+ "$ref": "#/$defs/templated-boolean",
+ "title": "Diff"
+ },
+ "environment": {
+ "$ref": "#/$defs/environment"
+ },
+ "ignore_errors": {
+ "$ref": "#/$defs/ignore_errors"
+ },
+ "ignore_unreachable": {
+ "title": "Ignore Unreachable",
+ "type": "boolean"
+ },
+ "module_defaults": {
+ "title": "Module Defaults"
+ },
+ "name": {
+ "title": "Name",
+ "type": "string"
+ },
+ "no_log": {
+ "$ref": "#/$defs/templated-boolean"
+ },
+ "port": {
+ "$ref": "#/$defs/templated-integer",
+ "title": "Port"
+ },
+ "remote_user": {
+ "title": "Remote User",
+ "type": "string"
+ },
+ "role": {
+ "title": "Role",
+ "type": "string"
+ },
+ "run_once": {
+ "$ref": "#/$defs/templated-boolean",
+ "title": "Run Once"
+ },
+ "tags": {
+ "$ref": "#/$defs/tags",
+ "title": "Tags"
+ },
+ "throttle": {
+ "$ref": "#/$defs/templated-integer",
+ "title": "Throttle"
+ },
+ "timeout": {
+ "$ref": "#/$defs/templated-integer",
+ "title": "Timeout"
+ },
+ "vars": {
+ "title": "Vars",
+ "type": "object"
+ },
+ "when": {
+ "$ref": "#/$defs/complex_conditional",
+ "title": "When"
+ }
+ },
+ "required": [
+ "role"
+ ],
+ "title": "play-role",
+ "type": "object"
+ },
+ "tags": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ ],
+ "title": "Tags"
+ },
+ "task": {
+ "additionalProperties": true,
+ "allOf": [
+ {
+ "not": {
+ "required": [
+ "hosts"
+ ]
+ }
+ },
+ {
+ "not": {
+ "required": [
+ "tasks"
+ ]
+ }
+ },
+ {
+ "not": {
+ "required": [
+ "import_playbook"
+ ]
+ }
+ },
+ {
+ "not": {
+ "required": [
+ "block"
+ ]
+ }
+ }
+ ],
+ "properties": {
+ "action": {
+ "title": "Action",
+ "type": "string"
+ },
+ "any_errors_fatal": {
+ "$ref": "#/$defs/templated-boolean",
+ "title": "Any Errors Fatal"
+ },
+ "args": {
+ "$ref": "#/$defs/templated-object",
+ "title": "Args"
+ },
+ "async": {
+ "$ref": "#/$defs/templated-integer",
+ "title": "Async"
+ },
+ "become": {
+ "$ref": "#/$defs/templated-boolean",
+ "title": "Become"
+ },
+ "become_exe": {
+ "title": "Become Exe",
+ "type": "string"
+ },
+ "become_flags": {
+ "title": "Become Flags",
+ "type": "string"
+ },
+ "become_method": {
+ "$ref": "#/$defs/become_method"
+ },
+ "become_user": {
+ "title": "Become User",
+ "type": "string"
+ },
+ "changed_when": {
+ "$ref": "#/$defs/complex_conditional",
+ "markdownDescription": "See [changed_when](https://docs.ansible.com/ansible/latest/user_guide/playbooks_error_handling.html#defining-changed)",
+ "title": "Changed When"
+ },
+ "check_mode": {
+ "$ref": "#/$defs/complex_conditional",
+ "title": "Check Mode"
+ },
+ "collections": {
+ "items": {
+ "type": "string"
+ },
+ "title": "Collections",
+ "type": "array"
+ },
+ "connection": {
+ "title": "Connection",
+ "type": "string"
+ },
+ "debugger": {
+ "title": "Debugger",
+ "type": "string"
+ },
+ "delay": {
+ "$ref": "#/$defs/templated-integer",
+ "title": "Delay"
+ },
+ "delegate_facts": {
+ "title": "Delegate Facts",
+ "type": "boolean"
+ },
+ "delegate_to": {
+ "title": "Delegate To",
+ "type": "string"
+ },
+ "diff": {
+ "$ref": "#/$defs/templated-boolean",
+ "title": "Diff"
+ },
+ "environment": {
+ "$ref": "#/$defs/environment"
+ },
+ "failed_when": {
+ "$ref": "#/$defs/complex_conditional",
+ "title": "Failed When"
+ },
+ "ignore_errors": {
+ "$ref": "#/$defs/ignore_errors"
+ },
+ "ignore_unreachable": {
+ "title": "Ignore Unreachable",
+ "type": "boolean"
+ },
+ "listen": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ ],
+ "markdownDescription": "Applies only to handlers. See [listen](https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_handlers.html)",
+ "title": "Listen"
+ },
+ "local_action": {
+ "title": "Local Action",
+ "type": [
+ "string",
+ "object"
+ ]
+ },
+ "loop": {
+ "title": "Loop",
+ "type": [
+ "string",
+ "array"
+ ]
+ },
+ "loop_control": {
+ "title": "Loop Control"
+ },
+ "module_defaults": {
+ "title": "Module Defaults"
+ },
+ "name": {
+ "title": "Name",
+ "type": "string"
+ },
+ "no_log": {
+ "$ref": "#/$defs/no_log"
+ },
+ "notify": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ ],
+ "title": "Notify"
+ },
+ "poll": {
+ "$ref": "#/$defs/templated-integer",
+ "title": "Poll"
+ },
+ "port": {
+ "$ref": "#/$defs/templated-integer",
+ "title": "Port"
+ },
+ "register": {
+ "title": "Register",
+ "type": "string"
+ },
+ "remote_user": {
+ "title": "Remote User",
+ "type": "string"
+ },
+ "retries": {
+ "$ref": "#/$defs/templated-integer",
+ "title": "Retries"
+ },
+ "run_once": {
+ "$ref": "#/$defs/templated-boolean",
+ "title": "Run Once"
+ },
+ "tags": {
+ "$ref": "#/$defs/tags",
+ "title": "Tags"
+ },
+ "throttle": {
+ "$ref": "#/$defs/templated-integer",
+ "title": "Throttle"
+ },
+ "timeout": {
+ "$ref": "#/$defs/templated-integer",
+ "title": "Timeout"
+ },
+ "until": {
+ "$ref": "#/$defs/complex_conditional",
+ "title": "Until"
+ },
+ "vars": {
+ "title": "Vars",
+ "type": "object"
+ },
+ "when": {
+ "$ref": "#/$defs/complex_conditional",
+ "title": "When"
+ },
+ "with_dict": {
+ "title": "With Dict"
+ },
+ "with_fileglob": {
+ "title": "With Fileglob"
+ },
+ "with_filetree": {
+ "title": "With Filetree"
+ },
+ "with_first_found": {
+ "title": "With First Found"
+ },
+ "with_indexed_items": {
+ "title": "With Indexed Items"
+ },
+ "with_ini": {
+ "title": "With Ini"
+ },
+ "with_inventory_hostnames": {
+ "title": "With Inventory Hostnames"
+ },
+ "with_items": {
+ "anyOf": [
+ {
+ "$ref": "#/$defs/full-jinja"
+ },
+ {
+ "type": "array"
+ }
+ ],
+ "markdownDescription": "See [loops](https://docs.ansible.com/ansible/latest/user_guide/playbooks_loops.html#loops)",
+ "title": "With Items"
+ },
+ "with_lines": {
+ "title": "With Lines"
+ },
+ "with_random_choice": {
+ "title": "With Random Choice"
+ },
+ "with_sequence": {
+ "title": "With Sequence"
+ },
+ "with_subelements": {
+ "title": "With Subelements"
+ },
+ "with_together": {
+ "title": "With Together"
+ }
+ },
+ "title": "task",
+ "type": "object"
+ },
+ "tasks": {
+ "$schema": "http://json-schema.org/draft-07/schema",
+ "examples": [
+ "tasks/*.yml",
+ "handlers/*.yml"
+ ],
+ "items": {
+ "anyOf": [
+ {
+ "$ref": "#/$defs/block"
+ },
+ {
+ "$ref": "#/$defs/task"
+ }
+ ]
+ },
+ "title": "Ansible Tasks Schema",
+ "type": [
+ "array",
+ "null"
+ ]
+ },
+ "templated-boolean": {
+ "oneOf": [
+ {
+ "type": "boolean"
+ },
+ {
+ "$ref": "#/$defs/full-jinja",
+ "type": "string"
+ }
+ ]
+ },
+ "templated-integer": {
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "$ref": "#/$defs/full-jinja",
+ "type": "string"
+ }
+ ]
+ },
+ "templated-integer-or-percent": {
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "pattern": "^\\d+\\.?\\d*%?$",
+ "type": "string"
+ },
+ {
+ "$ref": "#/$defs/full-jinja",
+ "type": "string"
+ }
+ ]
+ },
+ "templated-object": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "$ref": "#/$defs/full-jinja",
+ "type": "string"
+ }
+ ]
+ },
+ "vars_prompt": {
+ "additionalProperties": false,
+ "properties": {
+ "confirm": {
+ "title": "Confirm",
+ "type": "boolean"
+ },
+ "default": {
+ "title": "Default",
+ "type": "string"
+ },
+ "encrypt": {
+ "enum": [
+ "des_crypt",
+ "bsdi_crypt",
+ "bigcrypt",
+ "crypt16",
+ "md5_crypt",
+ "bcrypt",
+ "sha1_crypt",
+ "sun_md5_crypt",
+ "sha256_crypt",
+ "sha512_crypt",
+ "apr_md5_crypt",
+ "phpass",
+ "pbkdf2_digest",
+ "cta_pbkdf2_sha1",
+ "dlitz_pbkdf2_sha1",
+ "scram",
+ "bsd_nthash"
+ ],
+ "title": "Encrypt",
+ "type": "string"
+ },
+ "name": {
+ "title": "Name",
+ "type": "string"
+ },
+ "private": {
+ "default": true,
+ "title": "Private",
+ "type": "boolean"
+ },
+ "prompt": {
+ "title": "Prompt",
+ "type": "string"
+ },
+ "salt_size": {
+ "default": 8,
+ "title": "Salt Size",
+ "type": "integer"
+ },
+ "unsafe": {
+ "default": false,
+ "markdownDescription": "See [unsafe](https://docs.ansible.com/ansible/latest/user_guide/playbooks_prompts.html#allowing-special-characters-in-vars-prompt-values)",
+ "title": "Unsafe",
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "name",
+ "prompt"
+ ],
+ "type": "object"
+ }
+ },
+ "$id": "https://raw.githubusercontent.com/ansible/ansible-lint/main/src/ansiblelint/schemas/playbook.json",
+ "$schema": "http://json-schema.org/draft-07/schema",
+ "examples": [
+ "playbooks/*.yml",
+ "playbooks/*.yaml"
+ ],
+ "items": {
+ "oneOf": [
+ {
+ "$ref": "#/$defs/ansible.builtin.import_playbook"
+ },
+ {
+ "$ref": "#/$defs/play"
+ }
+ ]
+ },
+ "title": "Ansible Playbook",
+ "type": "array"
+}