Questo documento descrive il Programmable Installer, una piattaforma di automazione guidata da specifiche per l'installazione di stack di software Cisco come NSO e CNC.
| Campo | Valore |
|---|---|
| Prodotto | Programma di installazione programmabile |
| Tipo di documento | White paper tecnico: architettura, implementazione e risultati |
| Destinatari principali | Architetti di soluzioni, ingegneri di piattaforme, DevOps / SRE, responsabili della fornitura |
| Destinatari secondari | Gestione tecnica, revisori della sicurezza, responsabili di programma |
Il Programmable Installer è una piattaforma di automazione guidata da specifiche per l'installazione e il funzionamento di stack di software Cisco, tra cui Network Services Orchestrator (NSO), Crosswork Network Controller (CNC), Crosswork Data Gateway (CDG) e Business Process Automation (BPA), su Enterprise Linux (famiglia RHEL) e sulle relative infrastrutture, ove applicabile (VMware vCenter, OpenShift, KVM, Kubernetes con aperture d'aria). Il sistema separa l'intento dichiarativo (specifiche YAML e generazione guidata opzionale) dall'esecuzione (ruoli Ansible e playbook), con un control plane Python che raccoglie gli artefatti, verifica i bundle prima di installazioni di lunga durata, prepara segreti criptati e organizza i gate di convalida.
Questo white paper spiega i livelli dell'architettura, i flussi di dati primari, i modelli di implementazione (incluso un modello di verifica degli artefatti basato su dati ibridi), le modalità di distribuzione (native, containerizzate, online, air-gapped) e i framework di convalida e registrazione. Per le organizzazioni di distribuzione e piattaforme, la piattaforma mira a ridurre gli sforzi manuali, la configurazione errata delle superfici e la mancanza di binari in anticipo, nonché a standardizzare l'automazione tra prodotti e topologie, preservando al contempo la parametrizzazione specifica dell'ambiente.
Parole chiave: automazione dell'infrastruttura, distribuzione dichiarativa, Ansible, specifica YAML, imballaggio air-gap, verifica degli artefatti, Crosswork, NSO, CNC, CDG, BPA, politica di convalida, DevOps.
| Ruolo | Stato attivo consigliato |
|---|---|
| Responsabili delle decisioni/responsabili | Riassunto; §1 Proposta di valore; §8 benefici e posizione di rischio; §10 Conclusione |
| Architetti di soluzioni | §3-§6 (architettura, modello di specifica, implementazione, modelli di distribuzione) |
| DevOps / SRE / tecnici di consegna | § 5, § 7; Appendice B Allegati del Libro bianco interno di accompagnamento |
| Revisori della sicurezza | §7 Sicurezza e conformità; limiti del trust di cui al paragrafo 3.2 |
L'installazione aziendale dei prodotti di orchestrazione e automazione della rete multi-tier è in genere un'operazione estremamente complessa: runbook lunghi, molti passaggi manuali, incertezze di versione tra i siti e guasti che superano le ore in un processo (terminazioni mancanti, percorsi degli OAV errati, set di immagini di air-gap incompleti). Questo modello aumenta i costi, allunga le finestre di modifica e rende più difficili le verifiche.
Il programma di installazione programmabile considera un'installazione come un programma con parametri in base a una specifica: topologia, versioni, scelta della piattaforma (vCenter vs OpenShift vs VM vanilla), percorsi di file e autorizzazioni. Ove possibile, l'automazione è idempotente, ripetibile tra i clienti e precaricata con controlli in modo che "non pronta" sia un risultato rapido ed esplicito prima dell'installazione del cluster o del prodotto.
| Attore/sistema | Ruolo |
|---|---|
| Responsabile consegna | Crea o genera le specifiche, esegue il packaging, la preparazione degli archivi, la convalida, l'orchestrator e Ansible |
| Host del programma di installazione | Nodo di controllo Linux (nativo o contenitore) con Python, configurazione Ansible, disco per artefatti |
| Infrastruttura di destinazione | vCenter, OpenShift/KubeVirt o VM vanilla in base alle specifiche |
| Origini artifact | Mirroring interno, layout dei diritti, distribuzione del software, specifico per l'ambiente |
| Sistemi a valle | Monitoraggio, gestione delle modifiche, flussi di lavoro JIRA opzionali |
| Strato | Responsabilità |
|---|---|
| Specifiche | Topologia, versioni, piattaforme, percorsi, diritti |
| Piano di controllo | Packaging, verifica dei bundle, helper di vaulting, driver di convalida, CLI di orchestrator |
| Piano di automazione | Preparazione host, ciclo di vita Kubernetes, installazione del prodotto e configurazione immediata |
| Artifact | Binari, immagini, grafici, ovali, palle |
| Prodotto/pacchetto |
|---|
| NSO |
| CNC |
| CDG |
| BPA |
| CNC + NSO |
Le specifiche sono documenti YAML che descrivono le piattaforme (ad esempio vCenter, OCP, VM, KVM ), gli host, le applicazioni con versioni, la topologia (ad esempio i layout NSO CFS/RFS), i diritti (NED e pacchetti aggiuntivi) e i percorsi di file per gli OAV, le immagini qws2 e le matrici di livello applicazione.
Un'applicazione specifica user_spec fornisce valori predefiniti e fallback di percorso per CNC/CDG. Il parser dell'orchestrator tratta la specifica dell'utente come fonte di verità e utilizza le voci delle specifiche comuni quando le chiavi utente sono assenti.
Il generatore di intento supporta la raccolta guidata dei requisiti tramite un insieme di questionari, un motore delle regole (la logica basata sulla data) e il mapping basato su schema a intent.yaml.
L'orchestrator è la singola voce per la generazione di intenti interattivi, la verifica del bundle e la coordinazione dell'installazione. Il suo design è esplicitamente ibrido:
Preparazione:AReportaggregates ha individuato elementi; is_readyis true quando non mancano file necessari dopo l'analisi delle specifiche. Il modulo supporta i file binari bloccati da PyInstaller tramite la risoluzione dei percorsi sys.froed.
Questo componente fornisce menu interattivi e modalità CLI per il packaging degli artifact e l'installazione dei prerequisiti dell'host: online, air-gap o auto-detect; packaging di più applicazioni, incluso CombinedCNC_NSO. Popola l'albero degli artefatti previsto dalla logica Ansible e verify-bundle.
La struttura fornisce il controllo gerarchico delle policy (globale → app → stage → single check), l'auto-discovery dei controlli, la creazione di report avanzati per i log strutturati e l'integrazione opzionale di JIRA. Gli operatori eseguono le fasi di pre o post-distribuzione sulla base della stessa specifica utilizzata per l'installazione, allineando l'automazione con i gate di qualità adatti al cambiamento della disciplina aziendale.
Scala indicativa su un ramo tipico: nell'ordine di trenta controlli tra BPA e NSO (conteggi da confermare con creazione elenco-convalida-controlli all'estrazione).
Deriva le variabili di archivio richieste dalle specifiche, richiede o accetta le password in base ai criteri ed emette un file di password di archivio crittografato group_vars/all_secrets.yaml più un file di password di archivio per Ansible, riducendo l'incorporamento di segreti ad hoc nei playbook.
| Motivo | Riepilogo |
|---|---|
| Nativo (AlmaLinux / RHEL) | Impostare PYTHONPATH e ANSIBLE_CONFIG; esecuzione di packaging, vault, validation, orchestrator e playbook per guida prodotto |
| Programma di installazione basato su Docker | scripts/setup_installer.sh e scripts/start_installer.sh con montaggi host per artefatti di grandi dimensioni; |
| Intervallo d'aria | Pacchetto su una macchina collegata; pacchetto di trasferimento; estrazione a destinazione; installa con: airgap |
| creazione bundle macOS | Usepython3 ./setup_cxinstaller_prereqs.py su Mac per preparare i pacchetti; l'implementazione di destinazione rimane orientata a Linux per i documenti del progetto |
Esempio di chiamata pre-distribuzione:
cd /opt/cx-installer
python3 validation_checks/run_validation_checks.py -t pre -s specification/your_spec.yaml
Con flag opzionali:
Si tratta di un modello per l'origine interna in cui per un numero maggiore di applicazioni CISCO è possibile seguire lo stesso principio biforcando il repository.
| Tema | Risultato |
|---|---|
| Tempo e fatica | Meno passaggi manuali; errori rilevati nelle fasi di verifica del bundle e di convalida anziché in ritardo nei programmi di installazione Ansible o del prodotto |
| Coerenza | Gli schemi, i ruoli e il layout degli artifact condivisi tra più progetti riducono le differenze di tipo "snowflake" |
| Operazioni disconnesse | Il trasferimento documentato dei bundle supporta le reti regolamentate senza download di runtime |
| Governance | Report di convalida strutturati e hook JIRA facoltativi per il supporto dei record di modifica e per il follow-up |
| Estendibilità | Cancella punti di estensione: ARTIFACT_DEFS, handler, nuovi ruoli/playbook, schemi intento |
Le metriche quantitative (durata dell'installazione, percentuali di difetti) sono specifiche dell'organizzazione; i team devono basarsi su runbook legacy su topologie confrontabili.
Preferire nuovi compiti all'interno di ruoli coesivi; introdurre nuovi ruoli quando i limiti sono chiari. Playbook su filo viaimport_playbook o playbook in entrata documentati. Mantenete le impostazioni di default sicure in group_vars / vars.
Aggiornare gli schemi YAML sottointent-generator/schema/ e gli input chatbot; assicurarsi che i file generati corrispondano ai nomi file previsti da APP_CONFIG.
Il programma di installazione programmabile CX combina specifiche dichiarative, un control plane Python per il packaging e la verifica e un piano di automazione Ansible per installazioni scalabili e ripetibili di prodotti correlati a Crosswork su infrastrutture e modelli di connettività diversi. La sua architettura separa intenzionalmente l'intento dall'esecuzione, applica le aspettative degli artifact basati sui dati, ove fattibile, e incorpora i flussi di lavoro di convalida e vaulting adatti alla distribuzione aziendale. Per gli allegati operativi completi (tabelle di playbook, matrici per la risoluzione dei problemi, matrici di connettività e riferimenti a comandi estesi), consultare il white paper interno.
| Documento | Percorso |
|---|---|
| Manuale dell'operatore | LEGGIMI.md |
| Rilascia playbook | RELEASE_GUIDE.md |
| Allegati architettura interna | docs/CX_INSTALLER_TECHNICAL_WHITE_PAPER_INTERNAL.md |
| Docker (online/air-gap/utilizzo) | SETUP_ONLINE_DOCKER.md, SETUP_AIRGAPPED_DOCKER.md, USAGE_DOCKER.md |
| Framework di convalida | docs/validation_checks/README.md |
| Gestione archivi | docs/scripts/VAULT_SECRETS_MANAGER.md |
| Guide del prodotto | docs/nso.md, docs/bpa.md, docs/CNC_VCENTER_DEPLOYMENT_GUIDE.md, docs/CNC_OCP_DEPLOYMENT_GUIDE.md, docs/CNC_NSO_DEPLOYMENT_GUIDE.md |
| Generatore di intento | intent-generator/README.md |
| Chatbot/panoramica sul flusso delle regole | docs/HowItWorks.md |
cx-installer/
├── ansible_playbooks/ # ansible.cfg, files/, group_vars/, playbooks/, roles/, vars/
├── apps/ # App-specific supporting content
├── deploy/ # Python deploy helpers, logging utilities
├── docs/ # Technical documentation
├── intent-generator/ # Chatbot, rule engine, schemas, output/
├── scripts/ # Docker setup/start, vault_secrets_manager.py, ...
├── specification/ # User specs, samples, common fragments
├── validation_checks/ # Policies, runners, reports
├── cx_deploy_orchestrator.py
├── setup_cxinstaller_prereqs*
├── requirements.txt
└── README.md
Punti focali artefatto post-installazione (tipici):playbooks_andibili/file/artefatti/, file/bin/, file/grafici/, file/immagini/.
Script:cx_deploy_orchestrator.py
| Argomento | Descrizione |
|---|---|
| —app/-a | nso | crossworksuite | bpa |
| - spec / -s | Percorso della specifica YAML |
| - passo | generate-intent | verify-bundle | install |
| - solo verifica | Verificare il pacchetto; esci da un valore diverso da zero se non pronto |
| —a secco | Dry run, se supportato |
| - list-specs | Elenca specifiche note |
Ambiente (sessione tipica):
export PYTHONPATH=$(pwd)
export ANSIBLE_CONFIG=$(pwd)/ansible_playbooks/ansible.cfg
| Termine | Definizione |
|---|---|
| Specifica | Specifica utente YAML: piattaforme, applicazioni, topologia, percorsi, diritti |
| Intento | YAML normalizzato dal generatore di intento o equivalente creato a mano |
| Pacchetto | Albero di installazione preconfezionato (spesso tarball) per il trasferimento di air-gap |
| Orchestrator | cx_deploy_orchestrator.py - verifica/intento/installazione coordinamento |
| Verifica artifact | Il file system verifica che esistano file binari/immagini necessari per specifica |
| Archivio | Ansible Vault - File variabile crittografato per segreti |
| FINE | Pacchetto NSO (Network Element Driver Package) |
| CFS/RFS | Concetti su topologia server d'inoltro cluster NSO/server d'inoltro ridondante |
| Intervallo d'aria | Ambiente senza accesso in fase di installazione agli endpoint di download dei pacchetti |
| Version | Data | Note |
|---|---|---|
| 1.0 | 2026-03-27 | White paper tecnico iniziale pronto per la pubblicazione (frame del programma di installazione) |
| Revisione | Data di pubblicazione | Commenti |
|---|---|---|
2.0 |
28-Apr-2026
|
Release iniziale, formattazione |
1.0 |
28-Apr-2026
|
Versione iniziale |