Cloud-Provider
Unvollständige Liste an Cloud-Providern mit einigen Eigenschaften.
Azure
Links:
Preisrechner: https://azprice.info
Cloudscale.ch
Bemerkungen:
Kein LVM.
Links:
Ansible-Modul: https://galaxy.ansible.com/cloudscale_ch/cloud
Preisliste: https://www.cloudscale.ch/de/preise
DigitalOcean
Links
API: https://docs.digitalocean.com/reference/api/api-reference/
Ansible-Modul: https://galaxy.ansible.com/community/digitalocean
Preisliste: https://slugs.do-api.dev/
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 2023-07 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). Das Limit gilt für die ganze Organisation, nicht für die einzelne Instanzen.
Kein LVM in den Standard-Images.
Eigene Images („Custom Templates“) können verwendet werden.
Disks können bei heruntergefahrenen Instanzen vergrössert werden.
„Storage Optimized“ VMs:
verwenden grössere, aber langsamere SSDs. Der Performance-Verlust liegt bei ca. 30%.
„Instance needs to be shutdown for hypervisor and platform updates as it cannot be live-migrated.“
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:
Ansible-Module: https://galaxy.ansible.com/ngine_io/cloudstack Achtung! Das CloudStack API ist veraltet, wird aber noch bis mindestens Ende 2023 laufen. Momentan gibt es keine Ansible-Module für ihr API v2 (Stand 2023-07-14).
Marketplace: https://exoscale.com/marketplace
Preisliste: https://www.exoscale.com/pricing/, https://www.exoscale.com/static/files/price-list.pdf
exo
-Tool: https://github.com/exoscale/cli/releases
Installation:
VER=1.72.2
dnf -y install "https://github.com/exoscale/cli/releases/download/v${VER}/exoscale-cli_${VER}_linux_amd64.rpm"
CLI - Beispiele für die Verwendung von exo
:
# configure access (first step, 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 (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/ --acl public-read
exo storage show $TPLPATH/$IMAGE
# Note: a Custom Template is registered per zone. If you want to use your template in multiple zones, you have to repeat this step for each zone you want the template to be used in.
exo compute instance-template register --boot-mode uefi --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 die192.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 perhcloud 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
unddefault 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
Hetzner Storage Boxes:
Hetzner Storage Boxen werden auf https://robot.hetzner.com/storage erstellt und im Beispiel unter
/data
gemountet.Ausgehend Port 23 freigeben
Key auf der Maschine erzeugen, die sich mit der Storage Box verbinden soll:
ssh-keygen -b 4096
SSH-Key auf die Storage Box kopieren (z.B von einer Fedora-Workstation aus, da OpenSSL 8.5+ benötigt wird):
ssh-copy-id -p 23 -s u4711@u4711.your-storagebox.de
Dann:
dnf -y install fuse-sshfs mkdir -p /data ssh -p 23 u4711@u4711.your-storagebox.de mkdir data sshfs -p 23 u4711@u4711.your-storagebox.de:data /data echo 'u4711@u4711.your-storagebox.de:data /data fuse.sshfs defaults,allow_other,_netdev,port=23 0 0' >> /etc/fstab
Links:
Ansible-Modul: https://galaxy.ansible.com/hetzner/hcloud
Preisliste: https://www.hetzner.com/de/cloud und https://www.hetzner.com/de/dedicated-rootserver
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:
Cloud: https://hosttech.cloud/
Ansible-Modul: -
Preisliste: nicht öffentlich
Infomaniak
Bemerkungen:
Outbound-Traffic ist im Preis enthalten.
Wie üblich haben auch hier die vorgefertigten Images kein LVM.
Bis Ende 2025 ist die „Public Cloud“ noch ein mono region/ein mono Datacenter.
„Swiss Backup“ wird in zwei verschiedene Datacenter in drei verschiedene Cluster repliziert. Damit sind die Daten auch im Falle eines Brandes im Datacenter der „Public Cloud“ sicher. Zugang ist nur mit Benutzername und Passwort möglich, nicht per SSH-Key. Das SFTP-Gateway unterstützt keine Dateinamen mit speziellen Zeichen (z.B. Akzente) und liefert Fehler, falls Verzeichnisse mit solchen Dateinamen gelistet werden.
Traffic von der „Public Cloud“ zu „Swiss Backup“ geht immer über extern, nicht über interne Verbindungen.
Die physische Location der Datacenter ist geheim, solange man kein Housing-Kunde ist.
In OpenStack (Produkt „Public Cloud“) fehlen die Rechte, externe Netzwerke und die „default“ Security-Group zu löschen.
Limits in OpenStack:
https://docs.infomaniak.cloud/quotas/ (gelten pro Projekt)
Anzahl Public Clouds pro Benutzer wie Anzahl Projekte pro Public Cloud
Statement vom Support zur Internet Bandbreite: „We do limit nor guarantee (yet) the bandwidth speed by instance on the Public Cloud.“
Disk-Bandbreite hingegen ist limitiert, mit
iops: 500. read and writes: 200MB / s
fürperf1
undiops: 1000. read and writes: 400MB / s
fürperf2
.
Links:
Cloud (Openstack-Basis): https://docs.infomaniak.cloud/documentation/homedoc/, https://developer.infomaniak.com/getting-started
Ansible-Modul: die OpenStack-Module können verwendet werden (https://docs.ansible.com/ansible/latest/collections/openstack/cloud/index.html)
Swiss Backup: https://www.infomaniak.com/en/swiss-backup/prices
Mehr 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
IONOS-Cloud
Links:
Cloud: https://dcd.ionos.com/
Ansible-Modul: https://docs.ionos.com/ansible/usage/ansibleplaybooks
Preisliste: https://cloud.ionos.com/prices
Tools und Doku rund um Cloud-Dienste
Apache CloudStack OpenAPI:
Kein Provider, sondern ein standardisiertes API, welches von Cloud-Providern angeboten wird, die auf Apache CloudStack basieren.
Ansible-Modul: https://galaxy.ansible.com/ngine_io/cloudstack
cloud-init:
Doku: https://cloudinit.readthedocs.io/en/latest/
dnf -y install cloud-utils
my-userdata.yml#cloud-config hostname: my-hostname fqdn: my-hostname manage_etc_hosts: false ssh_pwauth: true disable_root: false users: - default - name: linuxfabrik shell: /bin/bash sudo: ALL=(ALL) NOPASSWD:ALL lock_passwd: false ssh-authorized-keys: - "ssh-rsa AAAAB3Nza..." chpasswd: list: | linuxfabrik:password expire: false
# create an ISO disk with the userdata. use this as a second disk in your VM. cloud-localds --verbose my-seed.iso my-userdata.yml
Jetzt die Maschine erzeugen.
cloud-init
wird die zweite Disk anwenden, um die Einstellungen aus der yml-Datei zu übernehmen.
Built on 2023-09-21