Cloud-Provider

Unvollständige Liste an Cloud-Providern mit einigen Eigenschaften.

Standorte:

Provider (Hauptsitz)

Remarks

CH

DE

AT

GB

US

Andere Standorte

API

Ansible

DoS-Schutz

Firewalling

vDC möglich

2FA

Rocky

Fedora

eigene Images

Cloudscale (CH)

2

x

x

DigitalOcean (US)

1

1

6

CA,IN,NL,SG

x

x

EveryWare (CH)

2

x

Exoscale (CH)

2

2

1

BG

Cloudstack

x

minimal

x

x

x

x

Hetzner (DE)

2

1

FI

x

x

x

x

x

x

Hosttech (CH)

2

2

1

x

x

IONOS (DE)

Tochter von 1&1

3

2

2

ES

x

x

?

?

x

x

x

Azure

Links:

Cloudscale.ch

Bemerkungen:

  • CPUs und lokale VM-Disks bei Shared VMs sind am Standort Lupfig moderner und massiv schneller als am Standort Rümlang, soll sich aber ändern (Stand 2021-12).

  • Kein LVM.

Links:

Exoscale

Bemerkungen:

  • Abrechnung auf Minutenbasis (pay-per-use).

  • Die Schweizer Datacenter werden von Equinix betrieben.

  • Es existiert keine Unterscheidung zwischen Shared oder Dedicated VMs.

  • Eine VM kann nicht von Zone zu Zone verschoben werden.

  • Es wird Stand 2022-05 nur ein Block Storage pro VM unterstützt.

  • Outbound-Traffic kostet und wird sekündlich abgerechnet, falls höher als (Anzahl Instanzen im Projekt x 1.42 GB/sec).

  • Kein LVM.

  • „Storage Optimized“ VMs verwenden grössere, aber langsamere SSDs. Der Performance-Verlust liegt bei ca. 30%.

  • Port 25 Outbound ist per Default gesperrt, kann aber auf Anfrage geöffnet werden.

  • OS-Templates müssen zwischen 10 GB und 1 TB gross sein.

  • Elastic IP Addresses sind „reservierte“ fixe Public IPs, die sich frei einzelnen VMs zuordnen lassen.

    • Managed: Können in Exoscale Load-Balancer oder für HA (gleiche Zone) verwendet werden.

    • Manual: Nur für Single Instances, müssen den VMs manuell zugewiesen werden.

  • Anti Affinity Group: stellt sicher, dass VMs auf unterschiedlichen Hypervisors laufen.

  • Security Group: Security Groups (= Firewalls) sind nur zu Public Networks connected, nicht zu Private Networks. Nach Aktivierung ist Inbound Traffic geblockt (also von der Publc IP abgehängt), und Outbound komplett offen. Wird eine Outbound-Rule erzeugt, wird ausgehender Verkehr bis auf die hinzugefügten Regeln geblockt.

  • „User Data“ ist für Scripting gedacht, und wird beim ersten Start der VM ausgeführt (z.B. Bash-Scripting per #!/bin/bash oder cloud-init per #cloud-config).

  • Load-Balancer aaS arbeitet nur gegen Instance Pools (und nur per TCP, HTTP und HTTPS), nicht gegen Single Instances.

  • Backups: Snapshots sind thick-provisioned.

  • exo limits list listet die Einschränkungen des eigenen Accounts auf.

  • Credentials und ACLs für S3-Buckets (im Menü unter „Storage“) werden im Menüpunkt IAM > Users gepflegt.

Links:

CLI - Beispiele für die Verwendung von exo:

VER=1.52.0
dnf -y install "https://github.com/exoscale/cli/releases/download/v${VER}/exoscale-cli_${VER}_linux_amd64.rpm"

# configure access (first step of all, interactive)
exo config

# some other commands:
exo compute anti-affinity-group list
exo compute deploy-target list
exo compute elastic-ip list
exo compute instance list
exo compute instance-pool list
exo compute instance-template list
exo compute instance-type list
exo compute load-balancer list
exo compute private-network list
exo compute security-group list
exo compute sks list
exo compute ssh-key list

exo config list

exo dbaas list

exo dns list

exo iam access-key list

exo limits list

exo status

exo storage list

exo version

exo zone list

So funktioniert der Upload von Templates, und VM möglichst mit UEFI-Boot aufsetzen):

cd /var/lib/libvirt/images
export IMAGE=rocky85-cis.qcow2

TPLPATH=templates
TPLNAME='Rocky85_CIS'
TPLDESCRIPTION='Rocky 8.5 with CIS partition layout'
CHECKSUM=($(md5sum $IMAGE))
ZONE=ch-dk-2

exo storage mb sos://$TPLPATH --acl public-read; sleep 1
exo storage upload $IMAGE $TPLPATH/
exo storage setacl $TPLPATH/$IMAGE public-read
exo storage show $TPLPATH/$IMAGE

exo compute instance-template register --username root --zone $ZONE --description "'$TPLDESCRIPTION'" $TPLNAME https://sos-$ZONE.exo.io/$TPLPATH/$IMAGE $CHECKSUM

exo storage delete $TPLPATH/$IMAGE
exo storage rb $TPLPATH

Hetzner

Bemerkungen:

  • Outgoing traffic to ports 25 and 465 are blocked by default on all Cloud Servers. Sending mails from servers is not possible for this reason. Send a request for unblocking ports and enabling the send mail option for your account. Once you have been with us for a month and paid your first invoice, you can create a limit request to unblock these ports for a valid use case. In your request, you can tell us details about your use case. https://console.hetzner.cloud/limits

  • Max. 16 Disks pro VM.

  • Additional Block-Storage ist Faktoren langsamer als die erste VM-Disk.

  • Hetzner erlaubt es nicht, VMs auf Basis eigener Images laufen zu lassen - eigene Images lassen sich nur bei root-Servern verwenden.

  • Die private Networks sind keine echten Subnetze - selbst wenn man sich z.B. ein 192.0.2.0/24-Netzwerk erstellt, bekommt am Ende jede VM in dem Netzwerk eine /32-Addresse. Die VMs in dem Netzwerk erreichen einander nicht direkt, jeglicher Traffic muss unbedingt über den Hetzner-Router in dem Netzwerk geleitet werden (in dem Fall die 192.0.2.1).
    Dies erkennt man auch an der Route, die von Hetzner automatisch angelegt wird: 192.0.2.0/24 via 192.0.2.1 dev eth1 proto static. Wenn eigene Routen zwischen den VMs einrichten will, um z.B. eine eigene zentrale Firewall zu verwenden, müssen diese zwingend bei Hetzner angelegt werden (im Webgui unter Networks > Routes, oder per hcloud network add-route my-net --destination 0.0.0.0/0 --gateway 192.0.2.2). Anschliessend müssen folgende Routen auf allen VMs eingerichtet werden: 192.0.2.2 dev eth1 proto static scope link metric 100 und default via 192.0.2.2 dev eth1 proto static metric 100 Siehe auch dieses Tutorial von Hetzner.
  • Rechnungen werden erst am 05. eines jeden Monats generiert.

Bank Details:

  • Account holder: Hetzner Online GmbH

  • Bank: Deutsche Bank AG

  • IBAN: DE92 7607 0012 0750 0077 00

  • BIC: DEUTDEMM760

CLI - Beispiele für die Verwendung von hlcoud (vorher einen API-Token erstellen):

hcloud context create my-project
hcloud server list

Links:

Hosttech

Bemerkungen:

  • Direkt vDC-fahig - Server müssen nicht mit dem Internet verbunden werden.

  • Outbound-Traffic ist im Preis enthalten.

  • 0 bis 1 lokale NVMe, aber beliebig viele Distributed Storages pro VM.

Links:

Infomaniak

Bemerkungen:

  • Outbound-Traffic ist im Preis enthalten.

  • Kein LVM.

Links:

Swiss Backup API - Beispiele:

BEARER_TOKEN='mytoken'  # https://manager.infomaniak.com/v3/ng/accounts/token/list
ACCOUNT_ID=200999

# Get price list
curl --silent --location --header "Authorization: Bearer $BEARER_TOKEN" --request GET "https://api.infomaniak.com/1/swiss-backup/pricing?account_id=$ACCOUNT_ID" | jq

# Get general information about all backup storages
curl --silent --location --header "Authorization: Bearer $BEARER_TOKEN" --request GET "https://api.infomaniak.com/1/swiss-backup?account_id=$ACCOUNT_ID" | jq

# Get detailed information about all slots within a specific backup storage
curl --silent --location --header "Authorization: Bearer $BEARER_TOKEN" --request GET "https://api.infomaniak.com/0/swiss-backup/$SWISS_BACKUP_ID/slot?account_id=$ACCOUNT_ID" | jq

Eigenes Template erstellen (Upload zu OpenStack Glances):

dnf -y install python3-openstackclient
openstack image create --disk-format qcow2 --file /path/to/Rocky-8-GenericCloud.latest.x86_64.qcow2 --progress --shared 'Rocky 8 Generic Cloud'

# share with other projects
openstack image add project 'Rocky 8 CIS' other-project-id
# accept in other project (you have to use the image id)
openstack image set --accept image-id

Verhalten beim Resizing:

Ausgangslage

Aktion

Resultat

CentOS 8 Stream image, mit Flavor a1-ram2-disk50-perf1 (also inklusive Root-Disk)

via Webgui Flavor auf a1-ram2-disk80-perf1 stellen

SSH-Verbindung wird geschlossen (Connection to ... closed.). Kurz darauf ist die VM wieder per SSH erreichbar. Die Disk inklusive Filesystem haben die neue Grösse. Im webgui wird darauf gewartet, dass der User den Resize bestätigt oder rückgängig macht.

CentOS 8 Stream image, mit Flavor a1-ram2-disk50-perf1 (also inklusive Root-Disk)

via Webgui Flavor auf a1-ram2-disk20-perf1 stellen

es kommt eine grüne Bestätigung, aber es passiert nichts

CentOS 8 Stream image, mit Flavor a1-ram2-disk20-perf1 (also inklusive Root-Disk)

via Webgui neues Volume erstellt und attached

taucht im lsblk auf (ohne reboot).

CentOS 8 Stream image, mit Flavor a1-ram2-disk0 (also ohne Root-Disk)

Volumen via Webgui vergrössern, danach einen soft reboot machen

Die Disk inklusive Filesystem haben die neue Grösse.

CentOS 8 Stream image, mit Flavor a1-ram2-disk0 (also ohne Root-Disk)

versucht, dass Volumen via Webgui zu verkleinern

New size must be greater than current size.

CentOS 8 Stream image, mit Flavor a1-ram2-disk0 (also ohne Root-Disk)

via Webgui Flavor auf a2-ram4-disk80-perf1 stellen

CPU und RAM werden angepasst, aber an der Disk ändert sich nichts.

Ein resize ist in progress, openStack wartet auf einen confirm/revert

per ssh einloggen und neue datei erstellen, danach „confirm“

datei bleibt auf dem server, die SSH-Verbindung bleibt offen

Ein resize ist in progress, openStack wartet auf einen confirm/revert

per ssh einloggen und neue datei erstellen, danach „revert“

die SSH-Verbindung wird getrennt, die datei ist nach dem reconnect nicht mehr vorhanden

Tools und Doku rund um Cloud-Dienste

Apache CloudStack OpenAPI:

cloud-init:

Built on 2022-06-03