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.0.tar.gz (12.9 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.0-py3-none-any.whl (11.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: bunny2fmc-1.0.0.tar.gz
  • Upload date:
  • Size: 12.9 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.0.tar.gz
Algorithm Hash digest
SHA256 c62eba4ef0c0a220fe9bed5211fcaffcfbb80b541da2c99cb27bac1efef92230
MD5 7742048935aeb975ac84559381c209f4
BLAKE2b-256 060c364d0150623b511f209c6813f3538f8b367ed3c8177cc4c670a25a289c3c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: bunny2fmc-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 11.4 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6e8c963abe95b2d812060708697f6c3b3cf42270119008c981639f5e0a403602
MD5 ddd8ba4187d650b64fecd5bbd922f0ee
BLAKE2b-256 bb286f722dd146551a99da0c00d65ebe67553e6251422be3caa001ee2555197d

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