Introduzione

Il tool hcloud è un'interfaccia a riga di comando per interagire con Hetzner Cloud.

Installazione e uso

Installazione

Il tool è disponibile per molte piattaforme all'interno dei repository.

Operating System Comando
Debian (>= bullseye) apt install hcloud-cli
Ubuntu (>= 19.04) apt install hcloud-cli
Arch Linux pacman -Syu hcloud
Void Linux xbps-install -Syu hcloud
Gentoo Linux emerge hcloud

Per fortuna il mio laptop esegue Fedora dandomi l'opportunità di compilarlo e installarlo manualmente.

Il tool necessita di go quindi lo installo con:
sudo dnf install golang-bin

A poi ho buildato e installato il tool con
go get -u github.com/hetznercloud/cli/cmd/hcloud

Alla fine del processo nella mia home è presente la cartelle :

$ tree go -L 2
go
├── bin
│   └── hcloud
└── src
    ├── github.com
    └── golang.org

4 directories, 1 file

Controllando il mio env :

$ echo $PATH
/home/stethewwolf/.local/bin:/home/stethewwolf/bin:/usr/share/Modules/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin

è chiaro che la bisogna aggiustare il mio bashrc:

# User specific go environment
if ! [[ "$PATH" =~ "$HOME/.go/bin:" ]]
then
    PATH="$HOME/go/bin:$PATH"
fi

a questo non mi resta che ricaricare il file rc della console e provare il comando:

$ source .bashrc 
$ hcloud 
A command-line interface for Hetzner Cloud

Usage:
  hcloud [command]

Available Commands:
  certificate        Manage certificates
  completion         Output shell completion code for the specified shell
  context            Manage contexts
  datacenter         Manage datacenters
  floating-ip        Manage Floating IPs
  help               Help about any command
  image              Manage images
  iso                Manage ISOs
  load-balancer      Manage Load Balancers
  load-balancer-type Manage Load Balancer types
  location           Manage locations
  network            Manage networks
  server             Manage servers
  server-type        Manage server types
  ssh-key            Manage SSH keys
  version            Print version information
  volume             Manage Volumes

Flags:
  -h, --help                     help for hcloud
      --poll-interval duration   Interval at which to poll information, for example action progress (default 500ms)

Use "hcloud [command] --help" for more information about a command.

Esempio d'uso

Ottenere il tocken API

Per poter usare questo tool è necessario possedere un account hetzner, una volta loggato è necessario scegliere un progetto, nella sezione "Security" è possibile generare il token API per il progetto che permetterà all'utente di interagire in maniera sicura con l'infrastruttura cloud.

Creare il proprio context

Per poter interaggire con il cloud è necessario creare un contesto locale che corrisponda a quello remoto.

$ hcloud context create stobi
Token: 
Context stobi created and activated

Per vedere la lista dei contensti attivi si può usare il seguente comando:

$ hcloud context list
ACTIVE   NAME
*        stobi

Interagire con il cloud

Selezionare il context

La prima operazione da fare è selezionare il context da usare:

$ hcloud context use stobi

Listare i server disponibili

$ hcloud server list
ID        NAME   STATUS    IPV4              IPV6                      DATACENTER
6468542   blot   running   116.203.236.212   2a01:4f8:c0c:fbbe::/64    nbg1-dc3
9802136   oer    running   95.216.196.57     2a01:4f9:c010:5e6b::/64   hel1-dc2

Creare un server

$ hcloud image list
ID         TYPE     NAME           DESCRIPTION    IMAGE SIZE   DISK SIZE   CREATED                         DEPRECATED
1          system   ubuntu-16.04   Ubuntu 16.04   -            5 GB        Mon Jan 15 12:34:45 CET 2018    -
2          system   debian-9       Debian 9       -            5 GB        Mon Jan 15 12:34:45 CET 2018    -
3          system   centos-7       CentOS 7       -            5 GB        Mon Jan 15 12:34:45 CET 2018    -
168855     system   ubuntu-18.04   Ubuntu 18.04   -            5 GB        Wed May  2 13:02:30 CEST 2018   -
5924233    system   debian-10      Debian 10      -            5 GB        Mon Jul  8 08:35:48 CEST 2019   -
8356453    system   centos-8       CentOS 8       -            5 GB        Mon Oct  7 15:18:43 CEST 2019   -
15512617   system   ubuntu-20.04   Ubuntu 20.04   -            5 GB        Thu Apr 23 19:55:14 CEST 2020   -
15759618   system   fedora-32      Fedora 32      -            5 GB        Wed Apr 29 12:32:02 CEST 2020   -
25369365   system   fedora-33      Fedora 33      -            5 GB        Mon Nov  2 15:36:04 CET 2020    -
$ hcloud server create --image fedora-33 --type cx11 --name my-test
4s [=====================================] 100.00%
Waiting for server 10145063 to have started
 ... done
Server 10145063 created
IPv4: 135.181.44.102
Root password: ********************

Sull'interfaccia web del portale dovrebbe comparire:

hetzner_server_created

Avviare e stoppare un server

$ hcloud server list
ID         NAME      STATUS    IPV4              IPV6                      DATACENTER
6468542    blot      running   116.203.236.212   2a01:4f8:c0c:fbbe::/64    nbg1-dc3
9802136    oer       running   95.216.196.57     2a01:4f9:c010:5e6b::/64   hel1-dc2
10145063   my-test   running   135.181.44.102    2a01:4f9:c010:d6f8::/64   hel1-dc2
$ hcloud server poweroff 10145063
1s [=====================================] 100.00%
Server 10145063 stopped
$ hcloud server list
ID         NAME      STATUS    IPV4              IPV6                      DATACENTER
6468542    blot      running   116.203.236.212   2a01:4f8:c0c:fbbe::/64    nbg1-dc3
9802136    oer       running   95.216.196.57     2a01:4f9:c010:5e6b::/64   hel1-dc2
10145063   my-test   off       135.181.44.102    2a01:4f9:c010:d6f8::/64   hel1-dc2
$ hcloud server poweron 10145063
2s [=====================================] 100.00%
Server 10145063 started
$ hcloud server list
ID         NAME      STATUS    IPV4              IPV6                      DATACENTER
6468542    blot      running   116.203.236.212   2a01:4f8:c0c:fbbe::/64    nbg1-dc3
9802136    oer       running   95.216.196.57     2a01:4f9:c010:5e6b::/64   hel1-dc2
10145063   my-test   running   135.181.44.102    2a01:4f9:c010:d6f8::/64   hel1-dc2

Ottenere informazioni su un server.

$ hcloud server describe my-test
ID:		10145375
Name:		my-test
Status:		running
Created:	Fri Feb 19 08:26:29 CET 2021 (1 minute ago)
Server Type:	cx11 (ID: 1)
  ID:		1
  Name:		cx11
  Description:	CX11
  Cores:	1
  CPU Type:	shared
  Memory:	2 GB
  Disk:		20 GB
  Storage Type:	local
Public Net:
  IPv4:
    IP:		135.181.44.102
    Blocked:	no
    DNS:	static.102.44.181.135.clients.your-server.de
  IPv6:
    IP:		2a01:4f9:c010:d6f8::/64
    Blocked:	no
  Floating IPs:
    No Floating IPs
Private Net:
    No Private Networks
Volumes:
  No Volumes
Image:
  ID:		25369365
  Type:		system
  Status:	available
  Name:		fedora-33
  Description:	Fedora 33
  Image size:	-
  Disk size:	5 GB
  Created:	Mon Nov  2 15:36:04 CET 2020 (3 months ago)
  OS flavor:	fedora
  OS version:	33
  Rapid deploy:	yes
Datacenter:
  ID:		3
  Name:		hel1-dc2
  Description:	Helsinki 1 DC 2
  Location:
    Name:		hel1
    Description:	Helsinki DC Park 1
    Country:		FI
    City:		Helsinki
    Latitude:		60.169855
    Longitude:		24.938379
Traffic:
  Outgoing:	0 B
  Ingoing:	0 B
  Included:	20 TiB
Backup Window:	Backups disabled
Rescue System:	disabled
ISO:
  No ISO attached
Protection:
  Delete:	no
  Rebuild:	no
Labels:
  No labels

Cancellare un server

Il primo comando serve per listare l'elenco dei server già instanziati

$ hcloud server list
ID         NAME      STATUS    IPV4              IPV6                      DATACENTER
6468542    blot      running   116.203.236.212   2a01:4f8:c0c:fbbe::/64    nbg1-dc3
9802136    oer       running   95.216.196.57     2a01:4f9:c010:5e6b::/64   hel1-dc2
10145063   my-test   running   135.181.44.102    2a01:4f9:c010:d6f8::/64   hel1-dc2

Per cancellare un instanza si usa il comando seguente ( dove il codice finale corrisponde all'id riportato dall'output della lista)

$ hcloud server delete 10145063
Server 10145063 deleted

Come ultimo passo richiedo la lista dei server per controllare l'effettiva cancellazione.

$ hcloud server list
ID        NAME   STATUS    IPV4              IPV6                      DATACENTER
6468542   blot   running   116.203.236.212   2a01:4f8:c0c:fbbe::/64    nbg1-dc3
9802136   oer    running   95.216.196.57     2a01:4f9:c010:5e6b::/64   hel1-dc2

Riferimenti