Skip to content

pietroserrano/hzcloud-manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

5 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŒ Language / Lingua: ๐Ÿ‡ฌ๐Ÿ‡ง English ยท ๐Ÿ‡ฎ๐Ÿ‡น Italiano


๐Ÿ‡ฌ๐Ÿ‡ง HzCloud Manager โ€” GitHub Action

GitHub Action to manage Hetzner Cloud servers directly from your workflows.


โœจ Supported features

Action Description
shutdown Gracefully shuts down one or more servers
power_on Powers on one or more servers

๐Ÿ“ฅ Inputs

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

๐Ÿ” Prerequisites

Add your Hetzner Cloud API token as a secret in your GitHub repository:

  1. Go to Settings โ†’ Secrets and variables โ†’ Actions
  2. Click New repository secret
  3. Name: HCLOUD_TOKEN โ€” Value: your Hetzner Cloud token

You can generate a token from the Hetzner Cloud Console โ†’ project โ†’ Security โ†’ API Tokens.


๐Ÿš€ Usage examples

Shut down servers at the end of a pipeline

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: shutdown

Power on a server before deploy and shut it down after

name: 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: shutdown

Scheduled shutdown (cron)

name: 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: shutdown

๐Ÿ›  Local testing

To 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.sh

๐Ÿ“ฆ Project structure

hzcloud-manager/
โ”œโ”€โ”€ action.yml        # GitHub Action definition
โ”œโ”€โ”€ main.py           # Core logic
โ”œโ”€โ”€ requirements.txt  # Python dependencies (hcloud)
โ”œโ”€โ”€ test_local.sh     # Local test script
โ””โ”€โ”€ README.md

๐Ÿ“„ License

MIT



๐Ÿ‡ฎ๐Ÿ‡น HzCloud Manager โ€” GitHub Action

GitHub Action per gestire i server Hetzner Cloud direttamente dai tuoi workflow.


โœจ Funzionalitร  supportate

Azione Descrizione
shutdown Spegne uno o piรน server (graceful shutdown)
power_on Accende uno o piรน server

๐Ÿ“ฅ Input

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

๐Ÿ” Prerequisiti

Aggiungi il token API di Hetzner Cloud come secret nel tuo repository GitHub:

  1. Vai su Settings โ†’ Secrets and variables โ†’ Actions
  2. Clicca su New repository secret
  3. Nome: HCLOUD_TOKEN โ€” Valore: il tuo token Hetzner Cloud

Puoi generare un token dalla Hetzner Cloud Console โ†’ progetto โ†’ Security โ†’ API Tokens.


๐Ÿš€ Esempi d'uso

Spegnere server al termine di una pipeline

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: shutdown

Accendere un server prima del deploy e spegnerlo dopo

name: 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: shutdown

Spegnimento programmato (cron)

name: 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: shutdown

๐Ÿ›  Test in locale

Per 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.sh

๐Ÿ“ฆ Struttura del progetto

hzcloud-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

๐Ÿ“„ Licenza

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors