Skip to content

Research and document how to gracefully shut down agents using different terraform providers (update templates) #6174

Open
@mafredri

Description

@mafredri

To ensure workspaces (and agents) are stopped gracefully, we want to make sure Terraform providers are configured in a way that tries (best-effort) to respect the agent shutdown procedure.

What does graceful shutdown mean? It means the provider issues a kill -INT [coder_agent_pid] (one of HUP, INT, TERM) when the resource is stopped. After a specified timeout, it may issue kill -KILL [coder_agent_pid] to ensure de-provision progresses.

Note: This will not be the primary form of ensuring an agent is stopped gracefully. In the ideal scenario, this happens in a pre-provision step and this acts as a safety net (#6175).

We need to figure out how to perform graceful shutdown with (or verify that it works):

Eventually:

  • Update documentation and example templates

Related: #4677, #5914, #6139


Docker:

resource "docker_container" "workspace" {
  destroy_grace_seconds = 30
  stop_timeout          = 30
  stop_signal           = "SIGINT"
}

EDIT: It looks like destroy_grace_seconds is required to trigger a graceful stop, stop_{timeout,signal} is insufficient alone. It may be that stop_{timeout,signal} can be omitted in normal use-cases though (needs verification).

Metadata

Metadata

Assignees

No one assigned

    Labels

    docsArea: coder.com/docs

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions