NAB for my network I’m using my own rosapi. ROSAPI allows to perform configuration synchronization. It mirrors local config stored on main server to devices. ROSAPI allows you to define in script a php function. Function can build a configuration for device using data stored in database.
In my setup each device has a class, has a mac-address, list of wireless links which is connected to (with backup links), ip addresses, and basic configuration like passwords. Every night each device is synchronized to latest configuration stored on servers. Sometimes I change trusted-addr (list of ip hosts which has unlimited access to devices), or for example to revert all hand made configurations (other people have access to private and user devices). In my network I divided devices into several classes. My configuration is hierarchical. It means that first is global network configuration, than device class configuration, and last is specific device configuration.
Configuration is stored in text files. I will post a few stripped files to let you see how it works:
/config - main configuration file
require sections
# base config
set identity name=%name%
set clock time-zone-name=Europe/Warsaw
set ntp-client enabled=true mode=unicast primary-ntp=192.168.10.5 secondary-ntp=192.168.10.6
set dns primary-dns=192.168.10.5 secondary-dns=192.168.10.6 allow-remote-requests=false cache-size=8192 cache-max-ttl=1w00:00:00
set graphing store-every=hour
set e-mail from=%name%@mgnt.osk-net.local server=192.168.254.2:25
set user-aaa use-radius=false accounting=false default-group=read
# backup
var backup_email ayufan@***
var backup_subject "[MGNT] " . [/ system clock get date] . " - %name%"
var backup_event / system backup save name=current; / tool e-mail send subject=(%backup_subject% . ".backup") to=%backup_email% file=current.backup;
var backup_event %backup_event% / export file=current; / tool e-mail send subject=(%backup_subject% . ".rsc") to=%backup_email% file=current.rsc;
add scheduler name=SendBackup disabled=false interval=1d00:00:00 start-date=jan/01/1970 start-time=12:%sub%:00 on-event=%backup_event%
# services config
add service name=telnet port=23 disabled=true address=0.0.0.0/0
add service name=ftp port=21 disabled=true address=0.0.0.0/0
add service name=www-ssl port=443 disabled=true address=0.0.0.0/0
add service name=winbox port=8291 disabled=false address=0.0.0.0/0
add service name=api port=8728 disabled=false address=192.168.254.2/32
add service name=www port=80 disabled=true address=0.0.0.0/0
add service name=ssh port=22 disabled=false address=0.0.0.0/0
# disable accounting
set accouting enabled=false
set accouting-web-access accessible-via-web=false
# include individual configs
require %class%/config
/user/config - main config for user class devices
# disable connection tracking
set connection-tracking enabled=false
# backbone config
wireless-local-backbone backbone
vlan backbone 100 backbone.local
address backbone 192.168.10.%%/16
# disable
disable ospf ospf-area ospf-interface ospf-network ospf-area-range
disable ppp-aaa ppp-profile pppoe-server
# load device config
require device.%name%
/user/device.mirek - config for device named mirek
require default-nat
/user/default-nat - configuration of client side router with dhcp-server
# enable connection tracking
set connection-tracking enabled=true
# enable dhcp-client
add dhcp-client interface=backbone.local use-peer-dns=true use-peer-ntp=false add-default-route=true disabled=false
# enable dhcp-server
address ether1 192.168.0.1/24
add ether name=ether1 arp=enabled
add pool name=local ranges=192.168.0.2-192.168.0.99
add dhcp-server interface=ether1 name=local lease-time=01:00:00 address-pool=local add-arp=false bootp-support=static authoritative=after-2sec-delay use-radius=false disabled=false
add dhcp-server-network address=192.168.0.0/24 gateway=192.168.0.1 netmask=24 dns-server=192.168.0.1
add dhcp-server-alert interface=ether1 alert-timeout=1h disabled=false
set dns allow-remote-requests=true
# enable nat
require firewall
add firewall-filter chain=forward src-address=!192.168.0.0/24 in-interface=ether1 action=drop
add firewall-nat chain=srcnat src-address=192.168.0.0/24 out-interface=backbone.local action=masquerade
# disable changes
disable queue-simple queue-type
# allow to create user port mappings in dstnat chain on router!
pass firewall-nat chain=srcnat
Simple script function written in php which fetches data from mysql database and configures wireless interface
function wireless-ap $interface $profile=default $limit=1M/3M
$parser->call('local-network', array($interface, $interface));
$parser->call('add-devices', array($interface, $profile, $limit, "ap"));
if($res = mysql_query("SELECT address,freq FROM interfaces WHERE interface='$interface' LIMIT 1")) {
if($i = mysql_fetch_assoc($res)) {
$freq="frequency=${i['freq']}";
}
}
$parser->config('wlan', "name=$interface radio-name=$interface $freq default-authentication=false default-forwarding=false mode=ap-bridge wds-default-bridge=none wds-ignore-ssid=true wds-mode=static wmm-support=enabled security-profile=radius");
$parser->config('wireless-access-list', "mac-address=00:03:03:03:03:03 interface=$interface comment=dummy disabled=false authentication=true forwarding=false");
$parser->config('wireless-access-list', "mac-address=00:1D:92:C4:51:E0 interface=$interface comment=gregoxmsi disabled=false authentication=true forwarding=false");
endfunction
Then this function can be used in script:
wireless-ap wlan1 wpa-protected
–
Now I can say that ROSAPI is really powerful, but requires some heavy script coding and very good knowledge of RouterOS command line support. When You master ROSAPI, it will make your life easier or even it make you synchronized 
–
For netinstall, You can prepare some predefined configuration, than add device on web and then click synchronize, to push configuration to device 
–
Kamil