๐ Language / Lingua: ๐ฌ๐ง English ยท ๐ฎ๐น Italiano
GitHub Action to manage Hetzner Cloud servers directly from your workflows.
| Action | Description |
|---|---|
shutdown |
Gracefully shuts down one or more servers |
power_on |
Powers on one or more servers |
| Name | Required | Default | Description |
|---|---|---|---|
token |
โ | โ | Hetzner Cloud API token |
servers |
โ | โ | Comma-separated list of server names (e.g. "web-01,db-01") |
action |
โ | shutdown |
Action to perform: shutdown or power_on |
Add your Hetzner Cloud API token as a secret in your GitHub repository:
- Go to Settings โ Secrets and variables โ Actions
- Click New repository secret
- Name:
HCLOUD_TOKENโ Value: your Hetzner Cloud token
You can generate a token from the Hetzner Cloud Console โ project โ Security โ API Tokens.
name: Deploy & Shutdown
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
# ... other deploy steps ...
- name: Shut down staging servers
uses: pietroserrano/hzcloud-manager@v1.0
with:
token: ${{ secrets.HCLOUD_TOKEN }}
servers: "staging-01,staging-02"
action: shutdownname: Deploy with server management
on:
workflow_dispatch:
jobs:
manage-server:
runs-on: ubuntu-latest
steps:
- name: Power on server
uses: pietroserrano/hzcloud-manager@v1.0
with:
token: ${{ secrets.HCLOUD_TOKEN }}
servers: "prod-01"
action: power_on
# ... deploy steps ...
- name: Shut down server
uses: pietroserrano/hzcloud-manager@v1.0
with:
token: ${{ secrets.HCLOUD_TOKEN }}
servers: "prod-01"
action: shutdownname: Nightly shutdown
on:
schedule:
- cron: '0 22 * * 1-5' # Every weekday at 22:00 UTC
jobs:
shutdown:
runs-on: ubuntu-latest
steps:
- name: Shut down dev servers
uses: pietroserrano/hzcloud-manager@v1.0
with:
token: ${{ secrets.HCLOUD_TOKEN }}
servers: "dev-01,dev-02,dev-03"
action: shutdownTo test the action on your machine without going through GitHub:
# 1. Set the token
export HCLOUD_TOKEN="your_token"
# 2. (Optional) Customize server and action inline
INPUT_SERVERS="dev-01" INPUT_ACTION="shutdown" ./test_local.sh
# or edit test_local.sh directly and run:
./test_local.shhzcloud-manager/
โโโ action.yml # GitHub Action definition
โโโ main.py # Core logic
โโโ requirements.txt # Python dependencies (hcloud)
โโโ test_local.sh # Local test script
โโโ README.md
MIT
GitHub Action per gestire i server Hetzner Cloud direttamente dai tuoi workflow.
| Azione | Descrizione |
|---|---|
shutdown |
Spegne uno o piรน server (graceful shutdown) |
power_on |
Accende uno o piรน server |
| Nome | Obbligatorio | Default | Descrizione |
|---|---|---|---|
token |
โ | โ | API token di Hetzner Cloud |
servers |
โ | โ | Nomi dei server separati da virgola (es. "web-01,db-01") |
action |
โ | shutdown |
Azione da eseguire: shutdown oppure power_on |
Aggiungi il token API di Hetzner Cloud come secret nel tuo repository GitHub:
- Vai su Settings โ Secrets and variables โ Actions
- Clicca su New repository secret
- Nome:
HCLOUD_TOKENโ Valore: il tuo token Hetzner Cloud
Puoi generare un token dalla Hetzner Cloud Console โ progetto โ Security โ API Tokens.
name: Deploy & Shutdown
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
# ... altri step di deploy ...
- name: Spegni server di staging
uses: pietroserrano/hzcloud-manager@v1.0
with:
token: ${{ secrets.HCLOUD_TOKEN }}
servers: "staging-01,staging-02"
action: shutdownname: Deploy con gestione server
on:
workflow_dispatch:
jobs:
manage-server:
runs-on: ubuntu-latest
steps:
- name: Accendi il server
uses: pietroserrano/hzcloud-manager@v1.0
with:
token: ${{ secrets.HCLOUD_TOKEN }}
servers: "prod-01"
action: power_on
# ... step di deploy ...
- name: Spegni il server
uses: pietroserrano/hzcloud-manager@v1.0
with:
token: ${{ secrets.HCLOUD_TOKEN }}
servers: "prod-01"
action: shutdownname: Spegnimento notturno
on:
schedule:
- cron: '0 22 * * 1-5' # Ogni giorno feriale alle 22:00 UTC
jobs:
shutdown:
runs-on: ubuntu-latest
steps:
- name: Spegni server di sviluppo
uses: pietroserrano/hzcloud-manager@v1.0
with:
token: ${{ secrets.HCLOUD_TOKEN }}
servers: "dev-01,dev-02,dev-03"
action: shutdownPer testare l'action sul tuo PC senza passare da GitHub:
# 1. Imposta il token
export HCLOUD_TOKEN="il_tuo_token"
# 2. (Opzionale) Personalizza server e azione inline
INPUT_SERVERS="dev-01" INPUT_ACTION="shutdown" ./test_local.sh
# oppure modifica direttamente test_local.sh e lancia:
./test_local.shhzcloud-manager/
โโโ action.yml # Definizione della GitHub Action
โโโ main.py # Logica principale
โโโ requirements.txt # Dipendenze Python (hcloud)
โโโ test_local.sh # Script per test in locale
โโโ README.md
MIT