Settings
You can adjust the behavior of sonic and set some handy default values with settings files. The settings files used are determined by the value of environment variable SONIC_PROFILE
or AWS_PROFILE
. The value determines the settings profile to use. There can exist multiple settings files which all get loaded and merged. The options from the files follow the following precedence rules:
- current folder - The current folder’s
.sonic/[AWS_PROFILE].yml
values take the highest precedence. The current folder is typically the project folder. - user - The user’s
~/.sonic/[AWS_PROFILE].yml
values take the second highest precedence. - default - The default settings bundled with the tool takes the lowest precedence.
A concrete example helps explain it. Let’s say AWS_PROFILE=prod-profile
with the following files:
- in current folder:
.sonic/prod-profile.yml
- in user home folder:
~/.sonic/prod-profile.yml
Then the .sonic/prod-profile.yml
gets merged into ~/.sonic/prod-profile.yml
and that in turn gets merged into sonic’s default settings.
You can also use the SONIC_PROFILE=prod-profile
environment variable instead of the AWS_PROFILE
environment variable. The SONIC_PROFILE
wins over the AWS_PROFILE
value.
Full Example
Here is an prod-profile.yml
example:
bastion: # cluster_host mapping
host: # default is nil - which means a bastion host wont be used
host_key_check: false
ssh:
user: ec2-user
# used with `sonic ecs ssh` command
ecs_service_cluster_map:
default: default # default cluster
hi-web: production
hi-clock: production
hi-worker: production
The following table covers the different setting options:
Setting | Description | Default |
---|---|---|
bastion.host | Bastion mapping allows you to set a bastion host on a per ECS cluster basis. The bastion host is used as the jump host. Examples: bastion.mydomain.com, myuser@bastion.myuser.com or 123.123.123.123. | (no value) |
bastion.host_key_check | Controls whether or not use the strict host checking ssh option. Since EC2 server host changes often the default value is false. | false |
ecs_service_cluster_map | Service to cluster mapping. This is a Hash structure that maps the service name to cluster names. | (no value) |
ssh.user | User to ssh into the server with. This can be overriden at the CLI with the user@host notation but can be set in the settings.yml file also. | ec2-user |
The default settings are located tool source code at lib/sonic/default/settings.yml.
Service to Cluster Mapping
A useful option is the ecs_service_cluster_map
. This option maps ecs service names to cluster names. This saves you from typing the --cluster
option repeatedly. Here is an example ~/.sonic/settings.yml
:
ecs_service_cluster_map:
default: my-default-cluster
hi-web: production
hi-clock: production
hi-worker: production
This results in shorter commands:
sonic ecs ssh hi-web
sonic ecs ssh hi-clock
sonic ecs ssh hi-worker
Instead of what you normally would have to type:
sonic ecs ssh hi-web --cluster production
sonic ecs ssh hi-clock --cluster production
sonic ecs ssh hi-worker --cluster production
Pro tip: Use the <- and -> arrow keys to move back and forward.
Edit this page
See a typo or an error? You can improve this page. This website is available on GitHub and contributions are encouraged and welcomed. We love pull requests from you!
- Suggest an edit to this page (here's the contributing guide).
- Open an issue about this page to report a problem.