Roles
Roles are used to configure different types of servers in the deployment. The most common use for this is to run a web servers and job servers.
Kamal expects there to be a web
role, unless you set a different primary_role
in the root configuration.
Role configuration
Roles are specified under the servers key:
servers:
Simple role configuration
This can be a list of hosts, if you don’t need custom configuration for the role.
You can set tags on the hosts for custom env variables (see Environment variables):
web:
- 172.1.0.1
- 172.1.0.2: experiment1
- 172.1.0.2: [ experiment1, experiment2 ]
Custom role configuration
When there are other options to set, the list of hosts goes under the hosts
key.
By default only the primary role uses Traefik, but you can set traefik
to change it.
You can also set a custom cmd to run in the container, and overwrite other settings from the root configuration.
workers:
hosts:
- 172.1.0.3
- 172.1.0.4: experiment1
traefik: true
cmd: "bin/jobs"
options:
memory: 2g
cpus: 4
healthcheck:
...
logging:
...
labels:
my-label: workers
env:
...
asset_path: /public