exo.hcl
Last updated
Was this helpful?
Last updated
Was this helpful?
An exo.hcl
file contains project configuration and component definitions. It specifies how Exo orchestrates your development environment.
The .hcl
file extension refers to the .
Exo expects one exo.hcl
at the root of each workspace. It is intended to be checked in to version control along with your project source.
exo.hcl
The top-level of an exo.hcl
file forms the body of an implicit manifest block with the following attributes and sub-blocks.
exo
Specifies a manifest format version constraint. It has the form major.minor
.
Required
Supplies environment variables used by components.
Defines components.
environment
BlockThe environment
block supplies environment variables for use by component definitions in the project. For simple key/value string pairs, variables can be specified as attributes in the environment
block. For more complex cases, including defining secrets, variables are specified by child blocks within the environment
block. Later children blocks shadow earlier blocks, which shadow the environment
block-level attributes.
/[a-z_][a-z0-9_]*/i
Individual environment variable key/value pair.
Specifies a secrets value to be merged in to the environment.
secrets
Blocksource
URL of the secrets vault.
components
BlockThe components
block acts as a container for individual component
blocks. Each component has a unique name across the manifest.
Long form for defining a component.
/[a-z][a-z0-9_]*/
Component definiton macro.
component
BlockEach component
block specifies an individual component.
Name
Name of this component. Must match /[a-z_]([a-z0-9-]*[a-z0-9])/
.
type
Type name for the component to be constructed.
Required
spec
String that defines the component. The format of a spec
is dependent on the component's type
.
spec
BlockAlternative to the spec
attribute. Specifies a component's configuration in HCL format, instead of as an arbitrary string. The contents of a spec
block are entirely dependent on the type
of a component.
Placement:
Placement:
Visit to create a secrets vault.
Placement:
Components may come in the form of or as macro-blocks named after the type of component. For details regarding specific component types and their respective syntax, see .
Placement:
Generally, it is less verbose to use type-specific component macros. For details regarding component types and their respective syntax, see .
Required if a is not provided.
Placement: