docs: Dateien zum hcloud-Artikel in Ausgabe 05/24
This commit is contained in:
parent
18a465e5a0
commit
4ea8e3e8c8
9 changed files with 207 additions and 0 deletions
81
2405-hcloud/README.md
Normal file
81
2405-hcloud/README.md
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
# Automatisierte Nutzung der Hetzner Cloud
|
||||||
|
|
||||||
|
Dieses Verzeichnis enthält die begleitenden Konfigurationsdateien und Befehle zum Artikel in der Ausgabe 05/24.
|
||||||
|
|
||||||
|
## Dateien
|
||||||
|
|
||||||
|
- [cloud-config.yml](cloud-config.yml)
|
||||||
|
vollständige Konfiguration der Hetzner Cloud-Instanz
|
||||||
|
- [firewall-config.json](firewall-config.json)
|
||||||
|
Konfiguration der Firewall-Regeln für die Cloud-Instanz
|
||||||
|
- [server-create.sh](server-create.sh)
|
||||||
|
Shell-Skript zum Erstellen der Cloud-Instanz
|
||||||
|
- [server-delete.sh](server-delete.sh)
|
||||||
|
Shell-Skript zum Löschen der Cloud-Instanz
|
||||||
|
- [server-init.sh](server-init.sh)
|
||||||
|
Shell-Skript zum initialen Anlegen der IP-Adressen
|
||||||
|
- [server-purge.sh](server-purge.sh)
|
||||||
|
Shell-Skript zum finalen Entfernen der IP-Adressen
|
||||||
|
- [server-reset.sh](server-reset.sh)
|
||||||
|
Shell-Skript zum Neueinrichten der Cloud-Instanz
|
||||||
|
|
||||||
|
## Befehle
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Im Projekt anmelden
|
||||||
|
hcloud context create demo-project
|
||||||
|
|
||||||
|
# In ein Projekt wechseln
|
||||||
|
hcloud context use demo-project
|
||||||
|
|
||||||
|
# Projekte auflisten
|
||||||
|
hcloud context list
|
||||||
|
|
||||||
|
# Permanente IPv4-Adresse anlegen
|
||||||
|
hcloud primary-ip create \
|
||||||
|
--datacenter nbg1-dc3 \
|
||||||
|
--enable-protection delete \
|
||||||
|
--type ipv4 \
|
||||||
|
--name demo-ipv4
|
||||||
|
|
||||||
|
# Permanente IPv6-Adresse anlegen
|
||||||
|
hcloud primary-ip create \
|
||||||
|
--datacenter nbg1-dc3 \
|
||||||
|
--enable-protection delete \
|
||||||
|
--type ipv6 \
|
||||||
|
--name demo-ipv6
|
||||||
|
|
||||||
|
# Firewall anlegen
|
||||||
|
hcloud firewall create \
|
||||||
|
--name demo-firewall \
|
||||||
|
--rules-file firewall-config.json
|
||||||
|
|
||||||
|
# Server anlegen
|
||||||
|
hcloud server create \
|
||||||
|
--primary-ipv4 demo-ipv4 \
|
||||||
|
--primary-ipv6 demo-ipv6 \
|
||||||
|
--datacenter nbg1-dc3 \
|
||||||
|
--image debian-12 \
|
||||||
|
--name demo-server \
|
||||||
|
--ssh-key demo-ssh-key \
|
||||||
|
--type cx11 \
|
||||||
|
--firewall demo-firewall \
|
||||||
|
--user-data-from-file cloud-config.yaml
|
||||||
|
|
||||||
|
# Server schützen
|
||||||
|
hcloud server enable-protection \
|
||||||
|
demo-server delete rebuild
|
||||||
|
|
||||||
|
# Schutz des Servers aufheben
|
||||||
|
hcloud server disable-protection \
|
||||||
|
demo-server delete rebuild
|
||||||
|
|
||||||
|
# Server herunterfahren
|
||||||
|
hcloud server shutdown demo-server
|
||||||
|
|
||||||
|
# Server löschen
|
||||||
|
hcloud server delete demo-server
|
||||||
|
|
||||||
|
# Firewall löschen
|
||||||
|
hcloud firewall delete demo-firewall
|
||||||
|
```
|
74
2405-hcloud/cloud-config.yaml
Normal file
74
2405-hcloud/cloud-config.yaml
Normal file
|
@ -0,0 +1,74 @@
|
||||||
|
#cloud-config
|
||||||
|
timezone: Europe/Berlin
|
||||||
|
|
||||||
|
apt_update: true
|
||||||
|
apt_upgrade: false
|
||||||
|
packages:
|
||||||
|
- apparmor
|
||||||
|
- binutils
|
||||||
|
- ca-certificates
|
||||||
|
- curl
|
||||||
|
- gnupg
|
||||||
|
- lsb-release
|
||||||
|
- fail2ban
|
||||||
|
- python3-systemd
|
||||||
|
|
||||||
|
write_files:
|
||||||
|
- content: |
|
||||||
|
[DEFAULT]
|
||||||
|
# Debian 12 has no log files, just journalctl
|
||||||
|
backend = systemd
|
||||||
|
# "bantime" is the number of seconds that a host is banned.
|
||||||
|
bantime = 1d
|
||||||
|
# "maxretry" is the number of failures before a host get banned.
|
||||||
|
maxretry = 2
|
||||||
|
# A host is banned if it has generated "maxretry" during the last "findtime"
|
||||||
|
findtime = 1h
|
||||||
|
[sshd]
|
||||||
|
enabled = true
|
||||||
|
path: /etc/fail2ban/jail.local
|
||||||
|
- content: |
|
||||||
|
{
|
||||||
|
"ipv6": true,
|
||||||
|
"fixed-cidr-v6": "fd00:ffff::/80"
|
||||||
|
}
|
||||||
|
path: /etc/docker/daemon.json
|
||||||
|
- content: |
|
||||||
|
[Unit]
|
||||||
|
Description=Docker Compose Demo Service
|
||||||
|
Requires=docker.service
|
||||||
|
After=docker.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
RemainAfterExit=yes
|
||||||
|
WorkingDirectory=/root/demo
|
||||||
|
ExecStart=/usr/bin/docker compose up -d
|
||||||
|
ExecStop=/usr/bin/docker compose down
|
||||||
|
TimeoutStartSec=0
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
path: /etc/systemd/system/demo-compose.service
|
||||||
|
- content: |
|
||||||
|
services:
|
||||||
|
nginx:
|
||||||
|
restart: unless-stopped
|
||||||
|
image: nginx
|
||||||
|
ports:
|
||||||
|
- "80:80/tcp"
|
||||||
|
- "80:80/udp"
|
||||||
|
- "443:443/tcp"
|
||||||
|
- "443:443/udp"
|
||||||
|
path: /root/demo/docker-compose.yaml
|
||||||
|
|
||||||
|
runcmd:
|
||||||
|
- timedatectl set-timezone Europe/Berlin
|
||||||
|
- mkdir -p /etc/apt/keyrings
|
||||||
|
- curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
|
||||||
|
- chmod a+r /etc/apt/keyrings/docker.gpg
|
||||||
|
- echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||||||
|
- apt -y update
|
||||||
|
- apt -y install docker-ce docker-ce-cli containerd.io docker-compose-plugin
|
||||||
|
- systemctl enable demo-compose
|
||||||
|
- reboot
|
26
2405-hcloud/firewall-config.json
Normal file
26
2405-hcloud/firewall-config.json
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"description":"ssh",
|
||||||
|
"destination_ips":[],
|
||||||
|
"direction":"in",
|
||||||
|
"port":"22",
|
||||||
|
"protocol":"tcp",
|
||||||
|
"source_ips":["0.0.0.0/0","::/0"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description":"web",
|
||||||
|
"destination_ips":[],
|
||||||
|
"direction":"in",
|
||||||
|
"port":"80",
|
||||||
|
"protocol":"tcp",
|
||||||
|
"source_ips":["0.0.0.0/0","::/0"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description":"websecure",
|
||||||
|
"destination_ips":[],
|
||||||
|
"direction":"in",
|
||||||
|
"port":"443",
|
||||||
|
"protocol":"tcp",
|
||||||
|
"source_ips":["0.0.0.0/0","::/0"]
|
||||||
|
}
|
||||||
|
]
|
5
2405-hcloud/server-create.sh
Executable file
5
2405-hcloud/server-create.sh
Executable file
|
@ -0,0 +1,5 @@
|
||||||
|
set -e
|
||||||
|
hcloud context use demo-project
|
||||||
|
hcloud firewall create --name demo-firewall --rules-file firewall-config.json
|
||||||
|
hcloud server create --primary-ipv4 demo-ipv4 --primary-ipv6 demo-ipv6 --datacenter nbg1-dc3 --image debian-12 --name demo-server --ssh-key demo-ssh-key --type cx11 --firewall demo-firewall --user-data-from-file cloud-config.yaml
|
||||||
|
hcloud server enable-protection demo-server delete rebuild
|
6
2405-hcloud/server-delete.sh
Executable file
6
2405-hcloud/server-delete.sh
Executable file
|
@ -0,0 +1,6 @@
|
||||||
|
set -e
|
||||||
|
hcloud context use demo-project
|
||||||
|
hcloud server disable-protection demo-server delete rebuild
|
||||||
|
hcloud server shutdown demo-server
|
||||||
|
hcloud server delete demo-server
|
||||||
|
hcloud firewall delete demo-firewall
|
4
2405-hcloud/server-init.sh
Executable file
4
2405-hcloud/server-init.sh
Executable file
|
@ -0,0 +1,4 @@
|
||||||
|
set -e
|
||||||
|
hcloud context use demo-project
|
||||||
|
hcloud primary-ip create --datacenter nbg1-dc3 --enable-protection delete --type ipv4 --name demo-ipv4
|
||||||
|
hcloud primary-ip create --datacenter nbg1-dc3 --enable-protection delete --type ipv6 --name demo-ipv6
|
6
2405-hcloud/server-purge.sh
Executable file
6
2405-hcloud/server-purge.sh
Executable file
|
@ -0,0 +1,6 @@
|
||||||
|
set -e
|
||||||
|
hcloud context use demo-project
|
||||||
|
hcloud primary-ip disable-protection demo-ipv4
|
||||||
|
hcloud primary-ip disable-protection demo-ipv6
|
||||||
|
hcloud primary-ip delete demo-ipv4
|
||||||
|
hcloud primary-ip delete demo-ipv6
|
3
2405-hcloud/server-reset.sh
Executable file
3
2405-hcloud/server-reset.sh
Executable file
|
@ -0,0 +1,3 @@
|
||||||
|
set -e
|
||||||
|
./server-delete.sh
|
||||||
|
./server-create.sh
|
|
@ -6,6 +6,8 @@ In diesem Repository findest du die Quelltexte und Konfigurationsbeispiele zu Ar
|
||||||
|
|
||||||
- [Softwareprojekte selbst hosten mit Forgejo](2503-forgejo)
|
- [Softwareprojekte selbst hosten mit Forgejo](2503-forgejo)
|
||||||
*Java aktuell 03/25*
|
*Java aktuell 03/25*
|
||||||
|
- [Automatisierte Nutzung der Hetzner Cloud](2405-hcloud)
|
||||||
|
*Java aktuell 05/24*
|
||||||
- [Web Components mit Polymer](1704-polymer)
|
- [Web Components mit Polymer](1704-polymer)
|
||||||
*Java aktuell 04/17*
|
*Java aktuell 04/17*
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue