{ "$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": { "markdownDescription": "See [become](https://docs.ansible.com/ansible/latest/user_guide/become.html)", "oneOf": [ { "enum": [ "sudo", "su", "pbrun", "pfexec", "runas", "dzdo", "ksu", "doas", "machinectl" ], "type": "string" }, { "$ref": "#/$defs/full-jinja" } ], "title": "Become Method" }, "block": { "properties": { "always": { "items": { "anyOf": [ { "$ref": "#/$defs/task" }, { "$ref": "#/$defs/block" } ] }, "title": "Always", "type": "array" }, "any_errors_fatal": { "title": "Any Errors Fatal", "type": "boolean" }, "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": { "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": { "title": "Any Errors Fatal", "type": "boolean" }, "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": { "type": "string" }, "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": { "title": "Any Errors Fatal", "type": "boolean" }, "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": { "title": "Any Errors Fatal", "type": "boolean" }, "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-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" }