From 3b8b928e29c62f60a1b785e573209b40cd14b4c6 Mon Sep 17 00:00:00 2001 From: Brian Coca Date: Thu, 24 May 2018 23:38:16 -0400 Subject: [PATCH] draft schema for inventory scripts (#39454) * draft schema for inventory scripts used by the script inventory plugin * fixes and details for vars * proper escape * restrict additional --- examples/inventory_script_schema.json | 53 +++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 examples/inventory_script_schema.json diff --git a/examples/inventory_script_schema.json b/examples/inventory_script_schema.json new file mode 100644 index 0000000000..c68b7f8270 --- /dev/null +++ b/examples/inventory_script_schema.json @@ -0,0 +1,53 @@ +{ + "$schema": "http://json-schema.org/draft-06/schema#", + "title": "Ansible Inventory", + "description" : "Ansible Inventory for the script inventory plugin", + "type": "object", + "patternProperties": { + "^\\w$":{ + "type": "object", + "properties": { + "hosts": { + "description" : "list of hosts that are part of this group", + "type": "array", + "items": { "type": "string" } + }, + "vars": { + "type": "object", + "description": "Variables to assign to hosts that are part of this group" , + "patternProperties": { + "^\\w$":{ "type": "object", "description" : "Vars for this hosts in this group" } + } + }, + "children": { + "description" : "list of groups that are children of this group, their hosts will be added to this group", + "type": "array", + "items": { "type": "string" } + } + }, + "additionalProperties": false + }, + "_meta":{ + "type": "object", + "description" : "Key that avoids calling the script per host", + "required": ["hostvars"], + "properties": { + "hostvars": { + "type": "object", + "description" : "Each key is a hostname and the value is a dictionary of the variables for that host", + "patternProperties": { + "^\\w$":{ + "type": "object", + "description" : "Hosts with their associated vars", + "patternProperties": { + "^\\w$":{ "type": "object", "description" : "Vars for this host" } + } + } + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false +}