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 .
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.
Key Optional Type Description composition
No Object Plugins in use for this stack. clusterVariablesMeta
No Object Variables and Secrets valid for the whole stack. Key are the names of var/secret stackVariables
Yes Object Variables specific to the stack currently in use. componentVersions
No Object Version of Components to hardcode.
Key Optional Type Description plugins
No Array[Object] List of Plugins that are in use
Key Optional Type Description name
No String Name of the plugin.
JSON
{"composition": {
"plugins": [{
"name": "logging_nfs"
}]
}
}
Key Optional Type Description SampleSecretOrVariable
Yes Object Sample key for a variable/secret
Key Optional Type Description secret
No Boolean Defines if this is a secret. value
No String Default value of the secret/variable. exclude_from_app_env
Yes Boolean Defines if this should be wired to applications.
JSON
{"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"
}
}
JSON
{ "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"
}
}
Key Optional Type Description KUBERNETES
No String Defines the version of Kubernetes. This can take the following two values from an Enum, namely: 1.19
and 1.17
.
JSON
{"componentVersions": {
"KUBERNETES": "1.19"
}
}