Install Halyard

Halyard is a command-line administration tool that manages the lifecycle of your Spinnaker deployment, including writing & validating your deployment’s configuration, deploying each of Spinnaker’s microservices, and updating the deployment.

All production-capable deployments of Spinnaker require Halyard in order to install, configure, and update Spinnaker. Though it’s possible to install Spinnaker without Halyard, we don’t recommend it, and if you get stuck we’re just going to tell you to use Halyard.

There are two ways you can install Halyard:

We recommend you install Halyard on a machine with at least 12GB of RAM.

Note: If you need to run Halyard without access to public internet, read Deploy Custom Spinnaker Builds .

Install on Debian/Ubuntu

Halyard runs on…

  • Ubuntu 18.04 or higher
  • Debian 10 or higher
  1. Get the latest version of Halyard:

    curl -O
  2. Install it:

    sudo bash

    If you’re prompted for any information, default answers are usually suitable.

  3. Check whether Halyard was installed properly:

    hal -v

    If this command fails, make sure hal is in your $PATH, and check the logs under /var/log/spinnaker/halyard/halyard.log.

  4. Run . ~/.bashrc to enable command completion.

To get help with any hal command, append -h. Also, see the Halyard command Reference .

Update Halyard on Debian/Ubuntu

Note: This upgrade procedure only works with Halyard v1.45.0 and higher. If you are using a Halyard version prior to v1.45.0, follow the instructions above to Install Halyard .

sudo apt-get update
sudo apt --only-upgrade install spinnaker-halyard

Uninstall Halyard from Debian/Ubuntu

Important: uninstalling Halyard deletes the entire contents of your ~/.hal directory. Don’t do it unless you’re prepared to lose your configuration.

  1. If you used Halyard to deploy Spinnaker, and you want to purge that deployment, run the following command:

    hal deploy clean
  2. Now you can safely uninstall Halyard:

    sudo ~/.hal/

Install Halyard on Docker

Note: If you install Halyard in a Docker container, you will need to manually change permissions on the mounted ~/.hal directory to ensure Halyard can read and write to it.

  1. Make sure you have Docker CE installed .

  2. On your current machine, make a local Halyard config directory.

    mkdir ~/.hal

    This will persist between runs of the Halyard docker container.

  3. Start Halyard in a new Docker container.

    The following command creates the Halyard Docker container, mounting the Halyard config directory:

    docker run -p 8084:8084 -p 9000:9000 \
        --name halyard --rm \
        -v ~/.hal:/home/spinnaker/.hal \
        -it \

    This runs as a foreground process in your current shell. This is useful because it emits all of the Halyard daemon’s logs, which are not persisted. If you don’t care about the logs, and would rather run in detached mode, replace the -it with -d

    Note: Any secrets/config you need to supply to the daemon (for example, a kubeconfig file) must be mounted in either your local ~/.hal directory, or another directory that you supply to docker run with additional -v command-line options.

  4. In a separate shell, connect to Halyard:

    docker exec -it halyard bash

    You can interact with Halyard from here.

  5. Run the following command to enable command completion:

    source <(hal --print-bash-completion)

To get help with any hal command, append -h. Also, see the Halyard command Reference .

Update Halyard on Docker

  1. Fetch the latest Halyard version.

    docker pull
  2. Stop the running Halyard container.

    docker stop halyard

  3. Re-run the container:

    docker run -p 8084:8084 -p 9000:9000 \
        --name halyard --rm \
        -v ~/.hal:/home/spinnaker/.hal \
        -it \

    This re-starts the container using the updated image you got in step 1.

  4. In a separate shell, run:

    docker exec -it halyard bash

Uninstall Halyard from Docker

To uninstall Halyard, just delete the container.

docker rm halyard

Next steps

Now that Halyard is running, it’s time to choose your cloud provider .