The ATC does all of its scheduling using the pool of workers registered with it. There is no way to configure the workers through the ATC itself; instead, each worker continuously heartbeats its presence to the ATC, along with basic statistics like how many containers it's running. To learn more about how this works, see Registering via the TSA.
Each worker has a
platform and an optional set of
tags, both of which determine the workloads that the ATC can run on the worker. A Task that configures its
linux can only run on workers advertising the same platform. Similarly, a step in a build plan that configures
tags can only run on workers matching a superset of those tags.
platform is typically one of
darwin, but this is just convention; if you have some esoteric platform like
super-nintendo the same rules apply.
tags are entirely up to you: you would configure them if you know that the worker meets some special requirement, such as living within a particular network or having particular hardware capabilities. If a worker specifies
tags, it is taken out of the "default" placement pool, and steps only run on the worker if they explicitly specify a common subset of the worker's tags, by setting
Each worker also advertises which resource types it supports natively. This is just a mapping from resource type (e.g.
git) to the location of the resource's image on the worker (e.g.
/opt/resources/git). You likely won't have to configure this yourself as all official Concourse distributions have a default set of core resource types that they'll automatically advertise, and the rest should really be configured in your pipeline via
resource_types rather than being added to your workers.