Configuration
Setting Options
You can set the Carlin commands options in different ways, such as using the command line, environment variables, or a configuration file.
Command Line
You can set the Carlin commands options using the command line. For example, to set the --environment, -e, --env option, you can use the following command:
carlin deploy --environment Production
carlin deploy -e Production
package.json
You can also provide the options creating a property name carlin in your package.json.
{
"name": "my-app",
"version": "0.1.0",
"carlin": {
"environment": "Production"
}
}
Environment Variables
You can set the options as environment variables matching the prefix
CARLIN. The examples below are equivalent:
carlin deploy --stack-name MyStackNameCARLIN_STACK_NAME=MyStackName carlin deploy
ENVIRONMENT is a special case because it is used to set the environment
option, as well CARLIN_ENVIRONMENT. The examples below are
equivalent:
carlin deploy --environment ProductionCARLIN_ENVIRONMENT=Production carlin deployENVIRONMENT=Production carlin deploy
Configuration File
If --config isn't provided, the algorithm will search for any of these
files and use it to retrieve the options:
carlin.tscarlin.jscarlin.ymlcarlin.yamlcarlin.json
The algorithm also make a find up path to search for other config files
that may exist in parent directories. If find more than one file, they'll
be merged, in such a way that the files nearest from process.cwd() will
take the precedence at the merging.
This is useful if you have a monorepo and have shared and specific
configuration. For instance, you may have a config inside packages/app/
folder with the config below:
stackName: MyMonorepoApp
region: us-east-2
And on the root of your monorepo:
awsAccountId: 123456789012
region: us-east-1
The result options that will be passed to the commands executed on
packages/app/ will be:
awsAccountId: 123456789012
stackName: MyMonorepoApp
region: us-east-2
If you define your config file programmatically, you can use the
your environment variables from a .env file if it exists. For example:
export default {
environment: process.env.ENVIRONMENT,
region: process.env.REGION,
}
Multiple Environments
We architected Carlin to work with multiple environments. The
environments option is an object that contains specific values for
each environment. For instance, you may have a Production and a
Staging environment with different values for the same option,
like awsAccountId. The environment option is a string that
represents the current environment. The environments option is an
object that contains the values for each environment. The values of
the current environment will be merged with the default values.
For example, if you have the following config file:
awsAccountId: 111111111111
environments:
Production:
awsAccountId: 222222222222
Staging:
awsAccountId: 333333333333
And you run the following command:
carlin deploy --environment Production
The final awsAccountId value will be 222222222222. If you run the
following command:
carlin deploy --environment Staging
The final awsAccountId value will be 333333333333. If you run the
deploy command without the --environment option, the final value
will be 111111111111.
environments is great to work on CI/CD pipelines. You can set the
environment value as an environment variable and Carlin will use the
values from the config file.
Global Options
| Option | Alias | Default | Description | Type |
|---|---|---|---|---|
| branch | string | |||
| config | c | Path to config file. You can create a config file and set all options there. Valid extensions: .js, .json, .ts, .yml, or .yaml. | string | |
| environment | e, env | string | ||
| environments | ||||
| project | string | |||
| region | r | us-east-1 | AWS region. | string |