# Guida Deploy Template MikroTik — RouterOS 7.x

Procedura per applicare da remoto un template di configurazione base
(accesso di management via VLANX + SSH + paracadute MAC) su router MikroTik,
in modo pulito e ripetibile.

> **Principio di fondo:** il template applica solo il MINIMO per rientrare.
> Le VLAN dati e le regole di dettaglio si aggiungono dopo, da remoto, una
> volta ripreso l'accesso. Il router di prova deve avere la STESSA versione
> RouterOS dei router di produzione: un collaudo su versione diversa non è valido.

---

## 1. Controllo versione e (se serve) aggiornamento

### 1.1 Verifica la versione attuale
```
/system resource print
```
Guarda il campo `version` (es. `7.21.4`) e `architecture-name`.

Controlla anche il firmware del RouterBoard:
```
/system routerboard print
```
Confronta `current-firmware` con `upgrade-firmware`: se differiscono, andrà
aggiornato (passo 1.5).

### 1.2 Decidi la versione target
Il template va testato e applicato sulla **stessa major/minor version** dei
router di produzione. Se la produzione è su una versione precisa (es. 7.21.4),
allinea tutti i router a quella, non "all'ultima disponibile".

### 1.3 Aggiornamento ONLINE (se il router naviga)
Richiede connettività Internet **e DNS funzionante** sul router.
Verifica prima:
```
/ping 8.8.8.8
/ping download.mikrotik.com
```
Se il primo va ma il secondo no, manca il DNS:
```
/ip dns set servers=9.9.9.9,149.112.112.112
```
Poi aggiorna:
```
/system package update set channel=stable
/system package update check-for-updates
/system package update download
/system package update install
```
Il comando `install` riavvia il router e applica la nuova versione.

> Per massima stabilità si può usare `channel=long-term` invece di `stable`.

### 1.4 Aggiornamento OFFLINE (metodo consigliato: non dipende da Internet)
1. Da un PC, scarica da https://mikrotik.com/download il **Main package**
   per architettura **ARM** della versione desiderata (file `.npk`).
2. Carica il pacchetto sul router via SCP:
   ```
   scp routeros-7.xx.x-arm.npk admin@<IP-router>:
   ```
3. Verifica che sia arrivato:
   ```
   /file print
   ```
4. Riavvia: RouterOS installa il pacchetto all'avvio.
   ```
   /system reboot
   ```
5. A riavvio completato, verifica la nuova versione:
   ```
   /system resource print
   ```

### 1.5 Aggiorna il firmware del RouterBoard (dopo l'update di RouterOS)
```
/system routerboard print
```
Se `current-firmware` != `upgrade-firmware`:
```
/system routerboard upgrade
/system reboot
```

### 1.6 Backup prima di operare (sempre consigliato)
```
/system backup save name=pre-update
/export file=config-pre-update
```

---

## 2. Upload del template ed esecuzione

### 2.2 Carica il template via SCP
Dal tuo PC:
```
scp template-base-mgmt.rsc admin@<IP-router>:
```
Se RouterOS 7.x rifiuta la connessione per mismatch di algoritmi SSH,
abilita lo strong crypto sul router e riprova:
```
/ip ssh set strong-crypto=yes
```

### 2.3 Verifica che il file sia arrivato col nome ESATTO
Collegati via SSH al router e:
```
/file print
```
Deve comparire `template-base-mgmt.rsc`. **Il nome deve combaciare
esattamente** con quello usato nel comando del passo 2.4: se non combacia,
il reset azzera il router ma NON esegue lo script.

### 2.4 Esegui il template con reset-con-script
```
/system reset-configuration no-defaults=yes skip-backup=yes run-after-reset=template-base-mgmt.rsc
```
Il router si azzera, applica il template e si riavvia.

### 2.5 Riconnetti
Dopo ~1–2 minuti, riprova l'accesso all'IP di management:
```
ssh admin@<IP-management-sede>
```
Se risponde, il deploy è riuscito. Da qui completi il resto della
configurazione da remoto (VLAN dati, firewall, ecc.).

### Paracadute
Il template abilita **MAC-Winbox su tutte le interfacce**: se la VLAN/trunk
non passa, chiunque sul posto con un cavo e Winbox può entrare via MAC.
Il `run-after-reset` **non ha rollback**: una volta azzerato, o il template
funziona o serve un intervento fisico. Per questo il collaudo in laboratorio
sulla stessa versione deve essere sempre verificato al 100%.

---

## 3. Il template: spiegazione e manutenzione

### 3.1 Perché NON usare le variabili globali nel template
Una versione precedente usava `:global` e `$MGMTIP` in cima al file. In un
file `.rsc` **importato**, l'espansione delle variabili è fragile e cambia tra
versioni di RouterOS: produce errori di parsing tipo `expected end of command`
o `expected interface value`. La versione con **valori diretti** è robusta e
portabile tra versioni. Regola: nei file di configurazione da importare, usa
valori diretti, non variabili.

### 3.2 Mantenere il template per versioni future di RouterOS
La sintassi di alcuni comandi (soprattutto **bridge VLAN filtering**, routing)
cambia tra major version (es. v6 → v7). Per ogni nuova versione RouterOS che
adotterai:
1. **Aggiorna un router di prova** alla nuova versione (stessa dei futuri
   router di produzione).
2. **Reimporta il template a mano** e verifica che non dia errori:
   ```
   /import file-name=template-base-mgmt.rsc
   ```
   Se una riga fallisce, l'import indica riga e colonna: correggi la sintassi.
3. **Rigenera il template dal router aggiornato** partendo da una config buona:
   ```
   /export file=nuovo-template
   ```
   e ripulisci l'export tenendo solo le righe essenziali (bridge, VLAN mgmt,
   IP, route, DNS, mac-server), reinserendo i marcatori `### MODIFICA`.
4. **Valida il run-after-reset** sul banco prima di usarlo in produzione.
5. Tieni un template **per major version** se gestisci un parco misto
   (es. `template-v6.rsc`, `template-v7.rsc`), perché la stessa sintassi non
   è garantita compatibile.

### 3.3 Checklist di collaudo prima di ogni uso in produzione
- [ ] Router di prova sulla STESSA versione dei router di produzione
- [ ] Import manuale del template SENZA errori
- [ ] Raggiungibilità via SSH ATTRAVERSO IL TRUNK (switch a monte come in sede,
      VLANX taggata, native allineata)
- [ ] `run-after-reset` riporta il router su in modo affidabile e ripetibile
- [ ] MAC-Winbox raggiungibile come paracadute