Skip to main content
atmos-manifest.json32.5 KB
View on GitHub
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://json.schemastore.org/atmos-manifest.json",
"title": "JSON Schema for Atmos Stack Manifest files. Version 1.0. https://atmos.tools",
"type": "object",
"properties": {
"import": {
"$ref": "#/definitions/import"
},
"terraform": {
"$ref": "#/definitions/terraform"
},
"helmfile": {
"$ref": "#/definitions/helmfile"
},
"packer": {
"$ref": "#/definitions/packer"
},
"vars": {
"$ref": "#/definitions/vars"
},
"hooks": {
"$ref": "#/definitions/hooks"
},
"env": {
"$ref": "#/definitions/env"
},
"settings": {
"$ref": "#/definitions/settings"
},
"locals": {
"$ref": "#/definitions/locals"
},
"components": {
"$ref": "#/definitions/components"
},
"overrides": {
"$ref": "#/definitions/overrides"
},
"workflows": {
"$ref": "#/definitions/workflows"
}
},
"additionalProperties": true,
"oneOf": [
{
"required": [
"workflows"
]
},
{
"anyOf": [
{
"additionalProperties": true,
"not": {
"required": [
"workflows"
]
}
},
{
"required": [
"import"
]
},
{
"required": [
"terraform"
]
},
{
"required": [
"helmfile"
]
},
{
"required": [
"packer"
]
},
{
"required": [
"vars"
]
},
{
"required": [
"hooks"
]
},
{
"required": [
"env"
]
},
{
"required": [
"settings"
]
},
{
"required": [
"components"
]
},
{
"required": [
"overrides"
]
}
]
}
],
"definitions": {
"import": {
"title": "import",
"description": "Import section",
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "array",
"items": {
"oneOf": [
{
"type": "string"
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"path": {
"type": "string"
},
"skip_templates_processing": {
"type": "boolean"
},
"ignore_missing_template_values": {
"type": "boolean"
},
"skip_if_missing": {
"type": "boolean"
},
"context": {
"type": "object",
"additionalProperties": true
}
},
"required": [
"path"
]
}
]
}
}
]
},
"components": {
"title": "components",
"description": "Components section",
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "object",
"additionalProperties": true,
"properties": {
"terraform": {
"$ref": "#/definitions/terraform_components"
},
"helmfile": {
"$ref": "#/definitions/helmfile_components"
},
"packer": {
"$ref": "#/definitions/packer_components"
}
},
"required": []
}
]
},
"terraform": {
"title": "terraform",
"description": "Terraform section",
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"vars": {
"$ref": "#/definitions/vars"
},
"hooks": {
"$ref": "#/definitions/hooks"
},
"env": {
"$ref": "#/definitions/env"
},
"settings": {
"$ref": "#/definitions/settings"
},
"locals": {
"$ref": "#/definitions/locals"
},
"command": {
"$ref": "#/definitions/command"
},
"backend_type": {
"$ref": "#/definitions/backend_type"
},
"backend": {
"$ref": "#/definitions/backend"
},
"remote_state_backend_type": {
"$ref": "#/definitions/remote_state_backend_type"
},
"remote_state_backend": {
"$ref": "#/definitions/remote_state_backend"
},
"overrides": {
"$ref": "#/definitions/overrides"
},
"providers": {
"$ref": "#/definitions/providers"
}
},
"required": []
}
]
},
"terraform_components": {
"title": "terraform_components",
"description": "Terraform components section",
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "object",
"patternProperties": {
"^[/a-zA-Z0-9-_{}. ]+$": {
"$ref": "#/definitions/terraform_component_manifest"
}
},
"additionalProperties": false
}
]
},
"terraform_component_manifest": {
"title": "terraform_component_manifest",
"description": "Terraform component manifest",
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"metadata": {
"$ref": "#/definitions/metadata"
},
"component": {
"$ref": "#/definitions/component"
},
"vars": {
"$ref": "#/definitions/vars"
},
"env": {
"$ref": "#/definitions/env"
},
"settings": {
"$ref": "#/definitions/settings"
},
"locals": {
"$ref": "#/definitions/locals"
},
"command": {
"$ref": "#/definitions/command"
},
"backend_type": {
"$ref": "#/definitions/backend_type"
},
"backend": {
"$ref": "#/definitions/backend"
},
"remote_state_backend_type": {
"$ref": "#/definitions/remote_state_backend_type"
},
"remote_state_backend": {
"$ref": "#/definitions/remote_state_backend"
},
"providers": {
"$ref": "#/definitions/providers"
},
"hooks": {
"$ref": "#/definitions/hooks"
}
},
"required": []
}
]
},
"helmfile": {
"title": "helmfile",
"description": "Helmfile section",
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"vars": {
"$ref": "#/definitions/vars"
},
"env": {
"$ref": "#/definitions/env"
},
"settings": {
"$ref": "#/definitions/settings"
},
"locals": {
"$ref": "#/definitions/locals"
},
"command": {
"$ref": "#/definitions/command"
},
"overrides": {
"$ref": "#/definitions/overrides"
}
},
"required": []
}
]
},
"helmfile_components": {
"title": "helmfile_components",
"description": "Helmfile components section",
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "object",
"patternProperties": {
"^[/a-zA-Z0-9-_{}. ]+$": {
"$ref": "#/definitions/helmfile_component_manifest"
}
},
"additionalProperties": false
}
]
},
"helmfile_component_manifest": {
"title": "helmfile_component_manifest",
"description": "Helmfile component manifest",
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"metadata": {
"$ref": "#/definitions/metadata"
},
"component": {
"$ref": "#/definitions/component"
},
"vars": {
"$ref": "#/definitions/vars"
},
"env": {
"$ref": "#/definitions/env"
},
"settings": {
"$ref": "#/definitions/settings"
},
"locals": {
"$ref": "#/definitions/locals"
},
"command": {
"$ref": "#/definitions/command"
}
},
"required": []
}
]
},
"packer": {
"title": "packer",
"description": "Packer section",
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"vars": {
"$ref": "#/definitions/vars"
},
"env": {
"$ref": "#/definitions/env"
},
"settings": {
"$ref": "#/definitions/settings"
},
"locals": {
"$ref": "#/definitions/locals"
},
"command": {
"$ref": "#/definitions/command"
},
"overrides": {
"$ref": "#/definitions/overrides"
}
},
"required": []
}
]
},
"packer_components": {
"title": "packer_components",
"description": "Packer components section",
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "object",
"patternProperties": {
"^[/a-zA-Z0-9-_{}. ]+$": {
"$ref": "#/definitions/packer_component_manifest"
}
},
"additionalProperties": false
}
]
},
"packer_component_manifest": {
"title": "packer_component_manifest",
"description": "packer component manifest",
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"metadata": {
"$ref": "#/definitions/metadata"
},
"component": {
"$ref": "#/definitions/component"
},
"vars": {
"$ref": "#/definitions/vars"
},
"env": {
"$ref": "#/definitions/env"
},
"settings": {
"$ref": "#/definitions/settings"
},
"locals": {
"$ref": "#/definitions/locals"
},
"command": {
"$ref": "#/definitions/command"
}
},
"required": []
}
]
},
"command": {
"title": "command",
"description": "Command to execute",
"type": "string"
},
"component": {
"title": "component",
"description": "Component section",
"type": "string"
},
"metadata": {
"title": "metadata",
"description": "Metadata section",
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"type": "string",
"enum": [
"abstract",
"real"
]
},
"enabled": {
"type": "boolean",
"description": "Flag to enable or disable the component"
},
"component": {
"type": "string",
"description": "Terraform/OpenTofu/Helmfile component"
},
"inherits": {
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "array",
"description": "A list of Atmos components that the current component inherits from",
"uniqueItems": true,
"items": {
"type": "string"
}
}
]
},
"terraform_workspace": {
"type": "string",
"description": "Terraform workspace"
},
"terraform_workspace_pattern": {
"type": "string",
"description": "Terraform workspace pattern"
},
"custom": {
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "object",
"description": "Custom configuration per component, not inherited by derived components",
"additionalProperties": true,
"title": "custom"
}
]
},
"locked": {
"type": "boolean",
"description": "Flag to lock the component and prevent modifications while allowing read operations"
}
},
"required": []
}
]
},
"settings": {
"title": "settings",
"description": "Settings section",
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "object",
"additionalProperties": true,
"properties": {
"validation": {
"$ref": "#/definitions/validation"
},
"depends_on": {
"$ref": "#/definitions/depends_on"
},
"spacelift": {
"$ref": "#/definitions/spacelift"
},
"atlantis": {
"$ref": "#/definitions/atlantis"
},
"templates": {
"$ref": "#/definitions/templates"
}
},
"required": []
}
]
},
"validation": {
"title": "validation",
"description": "Validation section",
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "object",
"patternProperties": {
"^[/a-zA-Z0-9-_{}. ]+$": {
"$ref": "#/definitions/validation_manifest"
}
},
"additionalProperties": false
}
]
},
"validation_manifest": {
"title": "validation_manifest",
"description": "Validation manifest",
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "object",
"properties": {
"schema_type": {
"type": "string",
"enum": [
"jsonschema",
"opa"
]
},
"schema_path": {
"type": "string"
},
"description": {
"type": "string"
},
"disabled": {
"type": "boolean"
},
"timeout": {
"type": "integer",
"minimum": 0
},
"module_paths": {
"type": "array",
"uniqueItems": true,
"items": {
"type": "string"
},
"description": "List of paths to validation modules"
}
},
"additionalProperties": false,
"required": [
"schema_type",
"schema_path"
]
}
]
},
"vars": {
"title": "vars",
"description": "Vars section",
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "object",
"additionalProperties": true
}
]
},
"env": {
"title": "env",
"description": "Env section",
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "object",
"additionalProperties": true
}
]
},
"locals": {
"title": "locals",
"description": "File-scoped local variables for use within templates. Locals are resolved before other sections and can reference each other within the same file. Unlike vars and settings, locals do NOT inherit across file boundaries.",
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "object",
"additionalProperties": true
}
]
},
"backend_type": {
"title": "backend_type",
"description": "Backend type",
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "string",
"enum": [
"local",
"s3",
"remote",
"vault",
"static",
"azurerm",
"gcs",
"cloud"
]
}
]
},
"backend": {
"title": "backend",
"description": "Backend section",
"$ref": "#/definitions/backend_manifest"
},
"remote_state_backend_type": {
"title": "remote_state_backend_type",
"description": "Remote state backend type",
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "string",
"enum": [
"local",
"s3",
"remote",
"vault",
"static",
"azurerm",
"gcs",
"cloud"
]
}
]
},
"remote_state_backend": {
"title": "remote_state_backend",
"description": "Remote state backend section",
"$ref": "#/definitions/backend_manifest"
},
"backend_manifest": {
"title": "backend",
"description": "Backend manifest",
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"local": {
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "object",
"additionalProperties": true
}
]
},
"s3": {
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "object",
"additionalProperties": true
}
]
},
"remote": {
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "object",
"additionalProperties": true
}
]
},
"vault": {
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "object",
"additionalProperties": true
}
]
},
"static": {
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "object",
"additionalProperties": true
}
]
},
"azurerm": {
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "object",
"additionalProperties": true
}
]
},
"gcs": {
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "object",
"additionalProperties": true
}
]
},
"cloud": {
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "object",
"additionalProperties": true
}
]
}
},
"required": []
}
]
},
"overrides": {
"title": "overrides",
"description": "Overrides section",
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"command": {
"$ref": "#/definitions/command"
},
"vars": {
"$ref": "#/definitions/vars"
},
"env": {
"$ref": "#/definitions/env"
},
"settings": {
"$ref": "#/definitions/settings"
},
"providers": {
"$ref": "#/definitions/providers"
}
},
"required": []
}
]
},
"depends_on": {
"title": "depends_on",
"description": "Depends_on section",
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "object",
"patternProperties": {
"^[/a-zA-Z0-9-_{}. ]+$": {
"$ref": "#/definitions/depends_on_manifest"
}
},
"additionalProperties": false
}
]
},
"depends_on_manifest": {
"title": "depends_on_manifest",
"description": "Depends_on manifest",
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "object",
"properties": {
"namespace": {
"type": "string"
},
"tenant": {
"type": "string"
},
"environment": {
"type": "string"
},
"stage": {
"type": "string"
},
"component": {
"type": "string"
},
"file": {
"type": "string"
},
"folder": {
"type": "string"
}
},
"oneOf": [
{
"required": [
"component"
]
},
{
"required": [
"file"
]
},
{
"required": [
"folder"
]
}
],
"additionalProperties": false
}
]
},
"spacelift": {
"title": "spacelift",
"description": "Spacelift section",
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "object",
"additionalProperties": true,
"properties": {
"workspace_enabled": {
"type": "boolean"
},
"stack_destructor_enabled": {
"type": "boolean"
},
"protect_from_deletion": {
"type": "boolean"
},
"autodeploy": {
"type": "boolean"
},
"terraform_version": {
"anyOf": [
{
"type": "number"
},
{
"type": "string"
}
]
}
},
"required": []
}
]
},
"atlantis": {
"title": "atlantis",
"description": "Atlantis section",
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"config_template_name": {
"type": "string"
},
"config_template": {
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "object",
"additionalProperties": true
}
]
},
"project_template_name": {
"type": "string"
},
"project_template": {
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "object",
"additionalProperties": true
}
]
},
"workflow_templates": {
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "object",
"additionalProperties": true
}
]
}
},
"required": []
}
]
},
"workflows": {
"title": "workflows",
"description": "Workflows section",
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
}
},
"patternProperties": {
"^[/a-zA-Z0-9-_{}. ]+$": {
"$ref": "#/definitions/workflow_manifest"
}
},
"additionalProperties": false
}
]
},
"workflow_manifest": {
"title": "workflow_manifest",
"description": "Workflow manifest",
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"stack": {
"type": "string"
},
"steps": {
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"name": {
"type": "string"
},
"command": {
"type": "string"
},
"stack": {
"type": "string"
},
"type": {
"type": "string"
},
"retry": {
"title": "retry",
"description": "Retry configuration for workflow step execution",
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"max_attempts": {
"type": "integer",
"minimum": 1,
"description": "Maximum number of retry attempts"
},
"initial_delay": {
"type": "string",
"description": "Initial delay between retries (e.g., '1s', '500ms')"
},
"max_delay": {
"type": "string",
"description": "Maximum delay between retries (e.g., '30s', '1m')"
},
"backoff_strategy": {
"type": "string",
"enum": [
"constant",
"linear",
"exponential"
],
"description": "Strategy for increasing delay between retries"
},
"multiplier": {
"type": "number",
"minimum": 1,
"description": "Multiplier for exponential/linear backoff"
},
"random_jitter": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Random jitter factor (0-1) to add to delays"
},
"max_elapsed_time": {
"type": "string",
"description": "Maximum total time for all retry attempts (e.g., '5m', '1h')"
}
},
"required": []
}
]
},
"working_directory": {
"type": "string",
"description": "Working directory for the workflow step"
},
"identity": {
"type": "string",
"description": "Identity to use for the workflow step"
},
"env": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "Environment variables for the workflow step"
}
},
"required": [
"command"
]
}
}
]
}
},
"required": [
"steps"
]
}
]
},
"providers": {
"title": "providers",
"description": "Providers section",
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "object",
"additionalProperties": true
}
]
},
"templates": {
"title": "templates",
"description": "Templates section",
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "object",
"additionalProperties": true
}
]
},
"hooks": {
"title": "hooks",
"description": "Hooks section",
"oneOf": [
{
"type": "string",
"pattern": "^!include"
},
{
"type": "object",
"additionalProperties": true
}
]
}
}
}

Related Documentation