A configuration defines the structure of your deployment, including the type and properties of the resources that are part of the deployment, any templates the configuration should use, and additional subfiles that can be executed to create your final configuration. You must always specify a configuration in order to create a deployment.
In your configuration, you can define a variety of supported Google Cloud platform resources from different services in a single configuration file. Some example resources include:
- All Compute Engine resources including:
- Kubernetes Engine
- Cloud Storage
- Cloud SQL
A configuration can import one or more template files that Deployment Manager will expand during deployment to create the final configuration. You can write templates in either Jinja or Python. It is possible to mix and match templates. A single configuration can import both Jinja and Python templates. A template can be a local file or a file hosted at a third-party URL.
Templates offer additional functionality, like the ability to use environment variables, the ability to define custom variables, the ability to use Python libraries, and so on.
For more information about templates, read Creating a Basic Template.
All configurations are expanded on the server side within a controlled environment that Deployment Manager maintains. In order to prevent abuse, this environment is closely managed by the Deployment Manager team and has some limitations:
- Neither your original configuration nor your expanded configuration can exceed 1 MB.
- Any configurations uploaded to Deployment Manager are limited in the amount of time the configuration can take to run and the amount of processing power the configuration consumes during expansion. If you run into this limitation, consider splitting your configuration into smaller templates, or simplify complex structures such as recursion and nested loops.
- Any Python templates you use cannot make any system or network calls. These templates will automatically be rejected.
- Create a simple configuration.
- Decide if you want to use templates.
- If you are exposing your configuration to other users, consider creating a schema.
- Learn how you can host templates externally.