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?
- Henter aktuelle IPv4 (og evt. IPv6) adresser fra BunnyCDN's API
- Opretter/finder Dynamic Object på FMC
- Sammenligner nuværende mappings med Bunny's liste
- Tilføjer nye og fjerner forældede IP'er
- Ingen deploy nødvendig - Dynamic Objects opdateres on-the-fly
- Sikker gempling: Credentials gemmesto i OS Keyring (Windows Credential Manager / Linux Secret Service)
- 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 --setuper 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
- Brug en dedikeret FMC bruger med minimal adgang (kun Dynamic Objects)
- Tjek logs regelmæssigt for fejl eller uventet adfærd
- Test med
--setupførst før du sætter op i production - Gem dine scripts i
/opteller/usr/localfor 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:
- Log ind på FMC → Policies → Access Control
- Opret/rediger en Access Control Policy
- 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
- Source/Destination: Vælg "Dynamic Objects" →
- 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
keyringPython 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:
- Crontab er korrekt:
crontab -l - Cron daemon kører:
systemctl status cron(ellercrondpå CentOS) - Se cron logs:
grep CRON /var/log/syslogellerjournalctl -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 versionbunny_to_FMC-interaktiv.py- Interactive version
Brug bunny2fmc CLI-toolet for nye deployments.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c62eba4ef0c0a220fe9bed5211fcaffcfbb80b541da2c99cb27bac1efef92230
|
|
| MD5 |
7742048935aeb975ac84559381c209f4
|
|
| BLAKE2b-256 |
060c364d0150623b511f209c6813f3538f8b367ed3c8177cc4c670a25a289c3c
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6e8c963abe95b2d812060708697f6c3b3cf42270119008c981639f5e0a403602
|
|
| MD5 |
ddd8ba4187d650b64fecd5bbd922f0ee
|
|
| BLAKE2b-256 |
bb286f722dd146551a99da0c00d65ebe67553e6251422be3caa001ee2555197d
|