waypoint

Waypoint 0.9 Adds New Runner Commands

HashiCorp Waypoint 0.9 introduces on-demand runner introspection, a runner install command, and support for HCP Waypoint.

We are excited to announce the general availability of HashiCorp Waypoint 0.9. Waypoint is an application deployment tool that aims to deliver a PaaS-like experience for Kubernetes, Amazon ECS, and other platforms. Waypoint 0.9 adds several significant new features, including on-demand runner introspection commands, and an install command to provision runners to your selected platform. These commands allow operators to have more control over where runners are provisioned and how to gather information on what Waypoint is doing for remote-enabled projects.

»On-Demand Runner Introspection

In Waypoint 0.9, we introduced the CLI command waypoint task. This command

currently gives users more introspection into the task launcher system for On-Demand Runners and what Waypoint is doing with remote-enabled projects. The task CLI will give users more insight into what Waypoint server is doing as it schedules tasks to execute jobs for a project.

The simplest benefit to this command is listing all known tasks in the system:

$ waypoint task list

» Waypoint On-Demand Runner Tasks
              ID             | RUN JOB OPERATION | TASK STATE |   PROJECT   |  TIME CREATED  | TIME COMPLETED
-----------------------------+-------------------+------------+-------------+----------------+-----------------
  01G1RYP6JFSEAQVE2SQX38Q19D | Up                | RUNNING    | go-gitops-0 | 3 seconds ago  |
  01G1RYP37X5FTD9TFZQE5J2BQM | QueueProject      | STOPPED    | go-gitops-0 | 7 seconds ago  | 3 seconds ago
  01G1RYP08Z9V18HMBP5XDPP0KA | Poll              | STOPPED    | go-gitops-0 | 10 seconds ago | 6 seconds ago
  01G1RYNTQJ5421K3QBYR6FPAZP | Init              | STOPPED    | go-gitops-0 | 15 seconds ago | 12 seconds ago
  01G1RYNNEK141B23YDE26XPED7 | Init              | STOPPED    | go-gitops-0 | 21 seconds ago | 15 seconds ago
$ waypoint task list
 
» Waypoint On-Demand Runner Tasks
              ID             | RUN JOB OPERATION | TASK STATE |   PROJECT   |  TIME CREATED  | TIME COMPLETED
-----------------------------+-------------------+------------+-------------+----------------+-----------------
  01G1RYP6JFSEAQVE2SQX38Q19D | Up                | RUNNING    | go-gitops-0 | 3 seconds ago  |
  01G1RYP37X5FTD9TFZQE5J2BQM | QueueProject      | STOPPED    | go-gitops-0 | 7 seconds ago  | 3 seconds ago
  01G1RYP08Z9V18HMBP5XDPP0KA | Poll              | STOPPED    | go-gitops-0 | 10 seconds ago | 6 seconds ago
  01G1RYNTQJ5421K3QBYR6FPAZP | Init              | STOPPED    | go-gitops-0 | 15 seconds ago | 12 seconds ago
  01G1RYNNEK141B23YDE26XPED7 | Init              | STOPPED    | go-gitops-0 | 21 seconds ago | 15 seconds ago

This will display a list of all known tasks in the Waypoint server. It will show the current state of the task as well. If you inspect a specific task, it will show you all of the jobs that were launched by Waypoint:

$ waypoint task inspect 01G1RYP6JFSEAQVE2SQX38Q19D

» On-Demand Runner Task Configuration
      Task ID: 01G1RYP6JFSEAQVE2SQX38Q19D
   Task State: RUNNING
    Workspace: default
      Project: go-gitops-0
  Application: go

» Run Job Configuration
  Job Configuration:
         Job ID: 01G1RYP6JDVM4FPXEZVHP2JPD9
      Operation: Up
  Target Runner: 01G1RYP6JD0AV2HEWF4B9CYY29
      Workspace: default
        Project: go-gitops-0
    Application: go

  Job Results:
  State: Running

» Start Job Configuration
  Job Configuration:
         Job ID: 01G1RYP6JF57MV6MSGPHMCCQCR
      Operation: StartTask
  Target Runner: *
      Workspace: default
        Project: go-gitops-0
    Application: go

  Job Results:
          State: Success
  Complete Time: 25 seconds ago

» Stop Job Configuration
  Job Configuration:
         Job ID: 01G1RYP6JFSS7SHZG2HETKVCBR
      Operation: StopTask
  Target Runner: *
      Workspace: default
        Project: go-gitops-0
    Application: go

  Job Results:
  State: Queued
$ waypoint task inspect 01G1RYP6JFSEAQVE2SQX38Q19D
 
» On-Demand Runner Task Configuration
      Task ID: 01G1RYP6JFSEAQVE2SQX38Q19D
   Task State: RUNNING
    Workspace: default
      Project: go-gitops-0
  Application: go
 
» Run Job Configuration
  Job Configuration:
         Job ID: 01G1RYP6JDVM4FPXEZVHP2JPD9
      Operation: Up
  Target Runner: 01G1RYP6JD0AV2HEWF4B9CYY29
      Workspace: default
        Project: go-gitops-0
    Application: go
 
  Job Results:
  State: Running
 
» Start Job Configuration
  Job Configuration:
         Job ID: 01G1RYP6JF57MV6MSGPHMCCQCR
      Operation: StartTask
  Target Runner: *
      Workspace: default
        Project: go-gitops-0
    Application: go
 
  Job Results:
          State: Success
  Complete Time: 25 seconds ago
 
» Stop Job Configuration
  Job Configuration:
         Job ID: 01G1RYP6JFSS7SHZG2HETKVCBR
      Operation: StopTask
  Target Runner: *
      Workspace: default
        Project: go-gitops-0
    Application: go
 
  Job Results:
  State: Queued

This update pairs well with the new Evaluations UI in Nomad 1.3. If you run your Waypoint server on a Nomad cluster, you can now view info on past on-demand runner jobs via both waypoint job list, and also directly in the Nomad UI:

Nomad evaluations UI

»New Runner Install/Uninstall Command

Waypoint’s server installation with waypoint install comes with an initial Waypoint static runner in the same platform where the server is installed. Waypoint 0.9 introduces a new command, waypoint runner install, to install a runner to a given platform. The same platforms supported for the server installation, Kubernetes, Amazon ECS, Docker,and HashiCorp Nomad, are also supported for runner installation with this new command.

By default, with this command, after the runner is installed and attempting to communicate with the Waypoint server at the provided address, the server will automatically adopt the new static runner, and create a runner profile targeting the new runner. Here is an example of installing a Waypoint runner to Docker with the new waypoint runner install command:

$ waypoint runner install -platform=docker -docker-runner-network=waypoint -server-addr=waypoint-server:9701 -server-cookie=abc123
✓ Connecting to: waypoint-server:9701
✓ Runner 01G5F2R0EKY0J8WW4W8HRGZVN1 installed successfully
✓ Runner profile docker-01G5F2R0EKY0J8WW4W8HRGZVN1 created successfully.
✓ Waypoint runner installed and started!
✓ Runner detected by server
✓ Runner 01G5F2R0EKY0J8WW4W8HRGZVN1 adopted successfully.
$ waypoint runner install -platform=docker -docker-runner-network=waypoint -server-addr=waypoint-server:9701 -server-cookie=abc123
✓ Connecting to: waypoint-server:9701
✓ Runner 01G5F2R0EKY0J8WW4W8HRGZVN1 installed successfully
✓ Runner profile docker-01G5F2R0EKY0J8WW4W8HRGZVN1 created successfully.
✓ Waypoint runner installed and started!
✓ Runner detected by server
✓ Runner 01G5F2R0EKY0J8WW4W8HRGZVN1 adopted successfully.

You can see that the installed runner has registered with the server and has been adopted, and a runner profile has been created with the ID of the new runner set as the target runner for the profile. This immediately enables the new static runner to begin creating on-demand runners for the server’s remote operations in the new platform:

$ waypoint runner list
              ID             |  STATE   |  KIND  |                           LABELS                            | LAST REGISTERED  
-----------------------------+----------+--------+-------------------------------------------------------------+------------------
  01G5F2R0EKY0J8WW4W8HRGZVN1 | adopted  | remote |                                                             |                  

$ waypoint runner profile list
Runner profiles
                  NAME                  | PLUGIN TYPE |               OCI URL                |              TARGET RUNNER              | DEFAULT  
----------------------------------------+-------------+--------------------------------------+-----------------------------------------+----------
docker-01G5F2R0EKY0J8WW4W8HRGZVN1     | docker      | hashicorp/waypoint-odr:latest        | 01G5F2R0EKY0J8WW4W8HRGZVN1              |          
$ waypoint runner list
              ID             |  STATE   |  KIND  |                           LABELS                            | LAST REGISTERED  
-----------------------------+----------+--------+-------------------------------------------------------------+------------------
  01G5F2R0EKY0J8WW4W8HRGZVN1 | adopted  | remote |                                                             |                  
 
$ waypoint runner profile list
Runner profiles
                  NAME                  | PLUGIN TYPE |               OCI URL                |              TARGET RUNNER              | DEFAULT  
----------------------------------------+-------------+--------------------------------------+-----------------------------------------+----------
docker-01G5F2R0EKY0J8WW4W8HRGZVN1     | docker      | hashicorp/waypoint-odr:latest        | 01G5F2R0EKY0J8WW4W8HRGZVN1              |          

This new command makes it easier than ever to install a static runner to your infrastructure, and to start remotely building, deploying, and releasing anywhere.

»One waypoint.hcl, One App

Since the initial release of Waypoint in 2020, the product has supported the ability to configure multiple apps within a single waypoint.hcl file. Starting with Waypoint 0.9, this functionality is deprecated and will be removed in 0.10. The vast majority of users are not using this functionality and it served mostly as a source of confusion. For users who are using a monorepo pattern, we plan to add better workflows for you.

With a waypoint.hcl now focused on the configuration of a single application, the concept of a project within the Waypoint data model will be removed, moving applications to the top level. This is already how users talk about using Waypoint and we are confident that it will improve the overall understanding of Waypoint as well.

If you have questions about this change in functionality, we invite you to discuss with us on this HashiCorp Forum thread or the Waypoint GitHub repository.

»Next Steps

The list of new features and improvements in Waypoint 0.9 is too long to detail here, so please see the CHANGELOG for a complete rundown. Finally, don’t miss these useful Waypoint resources:

We hope you enjoy Waypoint 0.9!


Sign up for the latest HashiCorp news