Skip to content

epam/hubctl

Repository files navigation

hubctl

hubctl is a missing package manager for the cloud.

Example of usage

hubctl elaborate hub.yaml params.yaml -o hub.yaml.elaborate
hubctl deploy hub.yaml.elaborate -e NAME=stage
hubctl version
hubctl help

Installation

Pre-build binary

To download the latest release, run:

cURL

curl -LJ "https://github.com/epam/hubctl/releases/latest/download/hubctl_$(uname -s)_$(uname -m).tar.gz" |\
  tar xz -C /tmp && sudo mv /tmp/hubctl /usr/local/bin

Wget

wget "https://github.com/epam/hubctl/releases/latest/download/hubctl_$(uname -s)_$(uname -m).tar.gz" -O - |\
  tar xz -C /tmp && sudo mv /tmp/hubctl /usr/local/bin

Other pre-build binaries

There are macOS amd64, macOS arm64, Linux amd64, Linux arm64 and Windows x64 binaries.

Homebrew Formula

brew tap epam/tap
brew install epam/tap/hubctl

Extensions

Optionally, install extensions:

hubctl extensions install

Hub CTL Extensions requires: bash, curl, jq and yq v4. Optionally install Node.js and NPM for hubctl pull extension, AWS CLI, Azure CLI, GCP SDK kubectl, eksctl for hubctl ext eks extension.

macOS users

Depending on your's machine Security & Privacy settings and macOS version (10.15+), you may get an error cannot be opened because the developer cannot be verified. Please read on for a simple workaround:

xattr -d com.apple.quarantine hub.darwin_amd64

Alternatively, to set a global preference to Allow apps downloaded from: Anywhere, execute:

sudo spctl --master-disable

Development

Setup

Before make any changes you should configure git hooks for this repository

git config core.hooksPath .githooks

Build

Use make to build Hub CTL:

make

Or directly with go:

go build -o bin/$(go env GOOS)/hubctl github.com/epam/hubctl/cmd/hub

Clean up

make clean

Usage metrics

When you use a pre-built binary from the releases page, it will send usage metrics to HubCTL API and Datadog.

We value your privacy and only send anonymized usage metrics for the following commands:

  • elaborate
  • deploy
  • undeploy
  • backup create
  • api *

A usage metric sample contains:

  • Hub CTL command invoked without arguments, ie. 'deploy' or 'backup create', or 'api instance get'
  • synthetic machine id - an UUID generated in first interactive session (stdout is a TTY)
  • usage counter - 1 per invocation

Edit $HOME/.hub-cache.yaml to change settings:

    metrics:
      disabled: false
      host: 68af657e-6a51-4d4b-890c-4b548852724d

Set disabled: true to skip usage metrics reporting. Set host: "" to send the counter but not the UUID.

You could always review an up-to-date help via hubctl util metrics -h.

What's next?

More information in the wiki.