Perché serve un tool di configuration management
In una rete enterprise con centinaia di dispositivi, configurare a mano ogni switch e router porta a config drift (divergenza fra lo stato reale e quello desiderato), errori umani e lentezza. I tool di configuration management risolvono il problema descrivendo lo stato desiderato in modo dichiarativo e idempotente: applicare due volte la stessa policy non cambia nulla se il dispositivo è già conforme. Per l’esame ENCOR devi saper classificare ciascun tool lungo due assi ortogonali: agent-based vs agentless e push vs pull.
Agent-based vs agentless
- Agent-based: sul nodo gestito gira un software residente (un daemon) che comunica con il server centrale. Richiede installazione e manutenzione dell’agent. Appartengono a questa famiglia Puppet, Chef e SaltStack (con i suoi minion).
- Agentless: nessun software permanente sul nodo. Il controllo avviene tramite protocolli già presenti — SSH, oppure API/NETCONF sui dispositivi di rete. Il capostipite è Ansible.
Push vs pull
- Pull: l’agent sul nodo, a intervalli regolari, chiede al server la configurazione da applicare. Tipico di Puppet e Chef.
- Push: il server (o control node) invia attivamente la configurazione al momento voluto dall’operatore. Tipico di Ansible e, in modalità standard, di SaltStack.
Confronto dei quattro tool
| Tool | Modello agent | Modello dati | Push/Pull | Linguaggio/formato | Note chiave |
|---|---|---|---|---|---|
| Puppet | Agent-based (Puppet agent + Puppet master) | Dichiarativo | Pull (default circa 30 min, TCP 8140) | Puppet DSL (manifest) | Facter raccoglie i “facts” del nodo |
| Chef | Agent-based (Chef client + Chef server) | Procedurale/dichiarativo | Pull | Ruby DSL (cookbook/recipe) | Tool knife sulla workstation |
| SaltStack | Agent-based (salt-minion + salt-master) | Dichiarativo | Push (bus ZeroMQ, porte 4505/4506); pull opzionale | YAML (state/pillar) | salt-ssh permette anche modalità agentless |
| Ansible | Agentless | Dichiarativo/procedurale | Push | YAML (playbook) | Usa SSH per i server, API/NETCONF/CLI per i device di rete |
SaltStack è il caso più insidioso: usa i minion (quindi agent-based) e comunica via un message bus persistente che lo rende molto veloce su larga scala, ma può funzionare anche senza minion tramite salt-ssh. Non incasellarlo in modo rigido.
Ansible in dettaglio (il più probabile all’esame)
Ansible è agentless e push. Il control node legge un inventory (l’elenco dei dispositivi) ed esegue playbook in YAML che invocano moduli idempotenti. Sui server Linux usa SSH e Python; sui dispositivi di rete Cisco (IOS-XE, NX-OS) usa moduli specifici che parlano via CLI su SSH oppure via NETCONF/RESTCONF. Punto cruciale: non esiste alcun daemon Ansible sempre attivo. Il “master server” si materializza solo quando lanci il playbook e sparisce a fine esecuzione — non serve un processo in ascolto permanente né sui nodi né sul controller. Questo lo rende leggero e ideale per l’onboarding rapido.
Dove si colloca Cisco DNA Center
Cisco DNA Center non è un semplice tool di configuration management: è un controller intent-based per il campus enterprise, che orchestra provisioning, SWIM (Software Image Management), template (Jinja2/Velocity nel Template Editor) e Assurance. Espone una northbound REST API (Intent API) verso applicazioni e sistemi esterni (ITSM, IPAM), e verso i device agisce con NETCONF, SNMP e CLI. Rispetto ai tool generalisti:
- Ansible/Puppet possono integrarsi con DNA Center chiamandone la REST API, invece di configurare i device direttamente.
- DNA Center aggiunge un livello di astrazione dell’intento (dico cosa voglio, non come) e di telemetria/assurance che i tool tradizionali non hanno.
Trappole tipiche d’esame
- Scenario: la domanda chiede se Ansible sia agent-based → Risposta giusta: NO. Ansible è agentless, usa SSH o API, e opera in push. Chi lo classifica come agent-based sbaglia.
- Scenario: “quale tool NON richiede un master server sempre in esecuzione?” → Risposta giusta: Ansible. Non tutti i tool hanno un daemon persistente; Ansible gira on-demand dal control node.
- Scenario: distinguere push da pull per Puppet/Chef → Risposta giusta: entrambi sono pull (l’agent scarica la config dal server), mentre Ansible e SaltStack sono push.
- Scenario: SaltStack classificato solo come agentless → Risposta giusta: è agent-based con i minion; l’opzione
salt-sshè una variante agentless, non la modalità principale. - Scenario: DNA Center trattato come “l’ennesimo Puppet” → Risposta giusta: è un controller intent-based con REST API e Assurance, un livello di orchestrazione superiore, non un semplice config manager.