Stack.json Specification

If you want to view the spec for a specific key, use the Table of Contents on the right 👉

This document defines the specification for stack JSON implementation for Facets.Cloud.
For the actual schema, you can refer to the following GitHub page:

To understand how a complete stack specification looks like, check this JSON file in Github for Self-Hosting Kill Bill application.

Spec

The Stack Schema has four native keys, namely, composition, clusterVariablesMeta, stackVariables, and componentVersions.

Let's look at the values that can be used in each of these keywords, their description and usage.

KeyOptionalTypeDescription
compositionNoObjectPlugins in use for this stack.
clusterVariablesMetaNoObjectVariables and Secrets valid for the whole stack. Key are the names of var/secret
stackVariablesYesObjectVariables specific to the stack currently in use.
componentVersionsNoObjectVersion of Components to hardcode.

Composition

KeyOptionalTypeDescription
pluginsNoArray[Object]List of Plugins that are in use

Plugins

KeyOptionalTypeDescription
nameNoStringName of the plugin.

Example

{"composition": {
        "plugins": [{
            "name": "logging_nfs"
            }]
    }
}

Cluster Variables Meta

KeyOptionalTypeDescription
SampleSecretOrVariableYesObjectSample key for a variable/secret

Sample Secret Or Variable

KeyOptionalTypeDescription
secretNoBooleanDefines if this is a secret.
valueNoStringDefault value of the secret/variable.
exclude_from_app_envYesBooleanDefines if this should be wired to applications.

Example

{"clusterVariablesMeta": {
    "GOOGLE_CLIENT_ID": {
      "value": "dummy"
    },
    "NEWRELIC_LICENSE_KEY": {
      "value": "dummy"
    },
    "INTERNAL_API_AUTH_TOKEN": {
      "value": "dummy",
      "secret": true
    },
    "ADMIN_USER": {
      "value": "dummy"
    },
    "FLOCK_CC_NOTIFICATION_ENDPOINT": {
    },
    "GOOGLE_CLIENT_SECRET": {
      "secret": true,
      "value": "dummy"
    },
    "TF_GIT_PASSWORD": {
      "secret": true,
      "value": "dummy"
    },
    "TF_GIT_USERNAME": {
      "secret": true,
      "value": "dummy"
    }
}

Stack Variables

Example

{ "stackVariables": {
    "SPRING_PROFILES_ACTIVE": "production",
    "enable_scheduled_test_build": "0",
    "CODEBUILD_THREADPOOL_SIZE": 1,
    "FLOCK_PAUSE_RELEASES_NOTIFICATION_ENDPOINT": false,
    "GITHUB_USERNAME": "dummy",
    "BITBUCKET_PASSWORD": "dummy",
    "GITHUB_PASSWORD": "dummy",
    "BITBUCKET_USERNAME": "dummy",
    "NEWRELIC_API_KEY": "dummy"
  }
}

Component Versions

KeyOptionalTypeDescription
KUBERNETESNoStringDefines the version of Kubernetes. This can take the following two values from an Enum, namely: 1.19 and 1.17.

Example

{"componentVersions": {
  "KUBERNETES": "1.19"
 }
}