1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170
|
# hcloud: Command-line interface for Hetzner Cloud
[](https://travis-ci.org/hetznercloud/cli)
`hcloud` is a command-line interface for interacting with Hetzner Cloud.
[](https://asciinema.org/a/157991)
## Installation
You can download pre-built binaries for Linux, FreeBSD, macOS, and Windows on
the [releases page](https://github.com/hetznercloud/cli/releases).
On macOS and Linux, you can install `hcloud` via [Homebrew](https://brew.sh/):
brew install hcloud
On Windows, you can install `hcloud` via [Scoop](https://scoop.sh/)
scoop install hcloud
### Third-party packages
There are unofficial packages maintained by third-party users. Please note
that these packages aren’t supported nor maintained by Hetzner Cloud and
may not always be up-to-date. Downloading the binary or building from source
is still the recommended install method.
### Build manually
If you have Go installed, you can build and install the latest version of
`hcloud` with:
go install github.com/hetznercloud/cli/cmd/hcloud@latest
> Binaries built in this way do not have the correct version embedded. Use our
prebuilt binaries or check out [`.goreleaser.yml`](.goreleaser.yml) to learn
how to embed it yourself.
## Getting Started
1. Visit the Hetzner Cloud Console at [console.hetzner.cloud](https://console.hetzner.cloud/),
select your project, and create a new API token.
2. Configure the `hcloud` program to use your token:
hcloud context create my-project
3. You’re ready to use the program. For example, to get a list of available server
types, run:
hcloud server-type list
See `hcloud help` for a list of commands.
## Shell Completion
`hcloud` provides completions for various shells.
### Bash
To load completions into the current shell execute:
source <(hcloud completion bash)
In order to make the completions permanent, append the line above to
your `.bashrc`.
### Zsh
If shell completions are not already enabled for your environment need
to enable them. Add the following line to your `~/.zshrc` file:
autoload -Uz compinit; compinit
To load completions for each session execute the following commands:
mkdir -p ~/.config/hcloud/completion/zsh
hcloud completion zsh > ~/.config/hcloud/completion/zsh/_hcloud
Finally, add the following line to your `~/.zshrc` file, *before* you
call the `compinit` function:
fpath+=(~/.config/hcloud/completion/zsh)
In the end your `~/.zshrc` file should contain the following two lines
in the order given here.
fpath+=(~/.config/hcloud/completion/zsh)
# ... anything else that needs to be done before compinit
autoload -Uz compinit; compinit
# ...
You will need to start a new shell for this setup to take effect.
### Fish
To load completions into the current shell execute:
hcloud completion fish | source
In order to make the completions permanent execute once:
hcloud completion fish > ~/.config/fish/completions/hcloud.fish
### PowerShell:
To load completions into the current shell execute:
PS> hcloud completion powershell | Out-String | Invoke-Expression
To load completions for every new session, run
and source this file from your PowerShell profile.
PS> hcloud completion powershell > hcloud.ps1
## Output configuration
You can control output via the `-o` option:
* For `list` commands, you can specify `-o noheader` to omit the table header.
* For `list` commands, you can specify `-o columns=id,name` to only show certain
columns in the table.
* For `describe` commands, you can specify `-o json` to get a JSON representation
of the resource. The schema is identical to those in the Hetzner Cloud API which
are documented at [docs.hetzner.cloud](https://docs.hetzner.cloud).
* For `describe` commands, you can specify `-o format={{.ID}}` to format output
according to the given [Go template](https://golang.org/pkg/text/template/).
The template’s input is the resource’s corresponding struct in the
[hcloud-go](https://godoc.org/github.com/hetznercloud/hcloud-go/hcloud) library.
## Configure hcloud using environment variables
You can use the following environment variables to configure `hcloud`:
* `HCLOUD_TOKEN`
* `HCLOUD_CONTEXT`
* `HCLOUD_CONFIG`
When using `hcloud` in scripts, for example, it may be cumbersome to work with
contexts. Instead of creating a context, you can set the token via the `HCLOUD_TOKEN`
environment variable. When combined with tools like [direnv](https://direnv.net), you
can configure a per-directory context by setting `HCLOUD_CONTEXT=my-context` via `.envrc`.
## Examples
### List all servers
```
$ hcloud server list
ID NAME STATUS IPV4
210216 test1 running 78.46.122.12
210729 ubuntu-8gb-nbg1-dc3-1 running 94.130.177.158
```
### Create a server
```
$ hcloud server create --name test --image debian-9 --type cx11 --ssh-key demo
7s [====================================================================] 100%
Server 325211 created
```
## License
MIT license
|