Skip to main content

Sync BunnyCDN edge IPs to Cisco FMC Dynamic Objects with secure credential management and scheduling

Project description

🐰 bunny2fmc

Synkroniserer BunnyCDN edge server IP-adresser til en Cisco FMC Dynamic Object med sikker credential-gempling og automatisk scheduling.

Hvad gør scriptet?

  1. Henter aktuelle IPv4 (og evt. IPv6) adresser fra BunnyCDN's API
  2. Opretter/finder Dynamic Object på FMC
  3. Sammenligner nuværende mappings med Bunny's liste
  4. Tilføjer nye og fjerner forældede IP'er
  5. Ingen deploy nødvendig - Dynamic Objects opdateres on-the-fly
  6. Sikker gempling: Credentials gemmesto i OS Keyring (Windows Credential Manager / Linux Secret Service)
  7. Automatisk scheduling: Konfigurer interval ved første setup, køres via cron

Installation

Fra source (local pip install)

# Clone eller cd til repository
cd /path/to/Bunny_Sync_FMC

# Installer som development package
pip install -e .

# Eller installer normalt
pip install .

Verificer installation

bunny2fmc --help

Initial Setup

Kør først setup for at konfigurere credentials og sync interval:

bunny2fmc --setup

Du bliver spurgt om:

  • FMC Base URL: f.eks. https://192.168.3.122
  • FMC Username: Dit FMC login
  • FMC Password: Dit FMC password (gemmes sikkert i OS Keyring)
  • Dynamic Object Name: f.eks. BunnyCDN_Dynamic
  • Include IPv6: Ja/Nej
  • Sync Interval: Minutter mellem kørsler (f.eks. 15)

Alle credentials gemmesto sikkert i dit operativsystems native credential manager.


Daglig Brug

Kør sync nu

bunny2fmc

eller eksplicit:

bunny2fmc --run

Vis aktuel konfiguration

bunny2fmc --show-config

Genopsæt configuration

bunny2fmc --setup

Slet gemte credentials

bunny2fmc --clear-config

Automatisk Scheduling med Cron

Konfigurér cron job til at køre scriptet automatisk. Intervallet du angav ved setup bruges som reference.

Eksempel: 15 minutters interval

Hvis du satte interval til 15 minutter ved setup, tilføj til crontab:

crontab -e
*/15 * * * * bunny2fmc --run >> ~/.local/share/bunny2fmc/logs/cron.log 2>&1

Andre intervals

Hvert 5. minut:

*/5 * * * * bunny2fmc --run >> ~/.local/share/bunny2fmc/logs/cron.log 2>&1

Hver time:

0 * * * * bunny2fmc --run >> ~/.local/share/bunny2fmc/logs/cron.log 2>&1

Hver 6. time:

0 */6 * * * bunny2fmc --run >> ~/.local/share/bunny2fmc/logs/cron.log 2>&1

Dagligt kl. 03:00:

0 3 * * * bunny2fmc --run >> ~/.local/share/bunny2fmc/logs/cron.log 2>&1

Note: Intervallet du angav ved bunny2fmc --setup er din reference. Sæt cron-intervallet til at matche eller være hyppigere.


Logging

Alle kørsler logges til:

~/.local/share/bunny2fmc/logs/bunny2fmc.log

Logfilerne roteres automatisk når de når 10 MB (max 5 backups gemmes).

Tjek logs

# Seneste log
tail -f ~/.local/share/bunny2fmc/logs/bunny2fmc.log

# Se hele loghistorie
ls -lh ~/.local/share/bunny2fmc/logs/

Sikkerhed

Credential Gempling

  • Credentials gemmesto IKKE i plain text

  • Bruger dit operativsystems native secure storage:

    • Windows: Windows Credential Manager
    • Linux: Secret Service (D-Bus)
    • macOS: Keychain
  • Passwords er aldrig tilgængelige via config-filer eller command-line

Best Practices

  1. Brug en dedikeret FMC bruger med minimal adgang (kun Dynamic Objects)
  2. Tjek logs regelmæssigt for fejl eller uventet adfærd
  3. Test med --setup først før du sætter op i production
  4. Gem dine scripts i /opt eller /usr/local for production use

FMC Konfiguration

Oprettelse af Dynamic Object i firewall-regler

Scriptet opretter automatisk et Dynamic Object (f.eks. BunnyCDN_Dynamic) på FMC. For at det har effekt, skal du manuelt oprette en firewall-regel der bruger dette objekt:

  1. Log ind på FMC → Policies → Access Control
  2. Opret/rediger en Access Control Policy
  3. Tilføj en ny regel:
    • Source/Destination: Vælg "Dynamic Objects" → BunnyCDN_Dynamic
    • Action: Allow/Trust (afhængig af dit behov)
    • Logging: Aktiver efter behov
  4. Deploy policyen til dine firewalls

Vigtigt: Dynamic Objects opdateres automatisk uden deploy, men selve firewall-reglen skal deployes første gang den oprettes.

Eksempel use case

Tillad trafik fra BunnyCDN edge servere til dine webservere:

Source: Dynamic Object "BunnyCDN_Dynamic"
Destination: Webserver network
Action: Allow

Krav

  • Python 3.8+
  • Linux server (eller Windows/macOS for testing)
  • Netværksadgang til FMC og BunnyCDN API
  • FMC bruger med rettigheder til at oprette/redigere Dynamic Objects
  • keyring Python package (installeres automatisk)

Troubleshooting

"No stored credentials found"

Løsning: Kør bunny2fmc --setup først

bunny2fmc --setup

Credentials gemmes ikke i keyring

Kontroller at din Linux server har Secret Service installeret:

# Debian/Ubuntu
sudo apt-get install gnome-keyring

# RHEL/CentOS
sudo yum install gnome-keyring

Cron job kører ikke

Kontroller:

  1. Crontab er korrekt: crontab -l
  2. Cron daemon kører: systemctl status cron (eller crond på CentOS)
  3. Se cron logs: grep CRON /var/log/syslog eller journalctl -u cron

Sync fejl

Se logfilen for detaljer:

tail -50 ~/.local/share/bunny2fmc/logs/bunny2fmc.log

Development

# Clone repo
git clone <repo-url>
cd Bunny_Sync_FMC

# Opret venv
python3 -m venv .venv
source .venv/bin/activate

# Installer dependencies
pip install -e ".[dev]"

# Kør tests
pytest

# Lint
flake8 bunny2fmc/
black bunny2fmc/

Legacy Scripts

De gamle scripts er stadig tilgængelige:

  • bunny_to_FMC.py - Environment-based version
  • bunny_to_FMC-interaktiv.py - Interactive version

Brug bunny2fmc CLI-toolet for nye deployments.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bunny2fmc-1.0.1.tar.gz (13.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bunny2fmc-1.0.1-py3-none-any.whl (12.2 kB view details)

Uploaded Python 3

File details

Details for the file bunny2fmc-1.0.1.tar.gz.

File metadata

  • Download URL: bunny2fmc-1.0.1.tar.gz
  • Upload date:
  • Size: 13.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for bunny2fmc-1.0.1.tar.gz
Algorithm Hash digest
SHA256 053b9591033198c05ccc8c8d975d102aa393dc6f6f650dc381bc8ebbc80ff434
MD5 54b3725a3803c5b4a1465c35a4be2466
BLAKE2b-256 7982a37f6f5bc31617ccc1f4148f4b8c830a216e4ac75d179f358601070eb050

See more details on using hashes here.

File details

Details for the file bunny2fmc-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: bunny2fmc-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 12.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for bunny2fmc-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a9b333cf7576557ece1dc0b670d311537b56ffc107f048994c6584254d476fe2
MD5 b36c2e7dcc54b0ed1f15171d0bfe9207
BLAKE2b-256 031c5d607158c214842b095caf79ace3e0a94fad49524c34ebc253c2d85b9976

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page