MikroTik Devices Controller

If it is the devices controller this could explain why version 7.9beta takes that long to be prepared.

I thought it was BFD reaching out to say hello. But I’m pretty sure we’ll both be disappointed.

might be CAP AX (XL)

I think eduplant’s point here is the most important one here. I’m just elaborating below, so please consider their comment. :up_arrow:

Without configuration transactions any tool is just another way to mutate state on a device: It doesn’t matter if it’s a single pane of glass for twiddling 1000 devices, it’s still going to be a process of: read, observe, decide, then write back regardless of the transport method or whether a human or computer is doing it. A multi-device config interface allows you to make changes faster but doesn’t help determining what changes to make.

Transaction support is the clearest pathway to declarative configuration and the software/IT/tech world is rapidly moving to declarative configuration and infrastructure-as-code.

While it currently appears that there’s Ansible support for RouterOS, a closer examination shows it’s parsing and wrapping the CLI just like a human. Any idempotent behavior with Ansible must be hand-coded by the user in the Ansible script. Writing repeatable deploys or config update requires a lot of RouterOS scripting e.g. [find where ...] and the work and testing associated with that is much more work than specifying the actual desired configuration. Wrangling repeatable router setup is extremely difficult to achieve without writing a ton of defensive scripting code. Any of this logic will need to exist somewhere in a mass-config tool unless it’s moved elsewhere.

The idea for MikroTik to keep their offering vendor-neutral makes a lot of sense, and adding config transactions allows MikroTik devs and communities of things like Ansible, Terraform, and scriptwriters be more productive in a way only MikroTik can deliver by adding a transaction abstraction to RouterOS.

+100 for that would be a killer upgrade (checkpoint, VyOS, barracuda,… all those vendors have something alike for years now)


integration or a solution like that would enhance large/mass deployments big time!

You know about the { command; command; command; } construct from commandline?

The issue is definition of a “failed operation” is tricky, with or without transactions. So the { command, … } will protect against bad syntax, and that may help in a lot of cases. But everyone’s definition of what failure looks like beyond that may be different. So “transactions” aren’t the whole story. From a SQL POV, you need a schema to enforce transactional integrity too. And not sure that part be so easily express by the admin (e.g. in the using Ansible etc. track), which look a lot more like policy config, than directly help with controlling devices.

While config’s structure is very “SQL-ish”, and that’s a good thing, I’m not sure that means the API and wire protocols need to follow SQL off a cliff.

Perhaps a model of a “template-configuration” that’s “applied” to devices. Unlike default-configuration, this template offer “template parameters” that can be dynamically changed by “controller” at runtime. And that’s not far off what’s done today, except be “dynamic” and avoid either monolithic config replace/reboot or complex :if/set/add syntax that’s “pushed” (and thus managed) by a “controller”. Basically a “idempotent QuickSet”, with parameters provided by the “controller” and the QuickSet profiles customizable is closer to what’s be looking for than “transactions”. Especially for the ansible, terraform, etc. “playbook” cases — if this API-controlled QuickSet got bad data or otherwise failed, then it reports the failure (and cleans up itself) – no “transactions” required, it only one.

But I ain’t picky, the issue is how to best describe the desired idempotency for the controlled device and that’s what’s key… the mechanism less so.

It is not clear to me what people want and expect… the { command; command; command; } construct already makes sure that only the complete set of grouped commands is processed, and then there is the “safe mode” that can roll back changes when they result in loss of connectivity.
It is already so much better than what I know from e.g. Cisco IOS (but that is some time ago).
Sometimes it is nice to have the model of “apply config, run a test, and if test fails revert to previous config” (as seen in Ubiquiti devices, for example) but it is often difficult to test well within the short interval available for that so it usually is only a test for connectivity, which we already have. Except for the case where you e.g. change the config of a VPN and a disconnect/reconnect is fully expected, in which case safe mode cannot be used.

If only it did work that way, it would save so much pain when trying to bring a replacement unit up. I took me 2 hours of mucking around ti massage my RB750gr3 config into my RB3011, manually extracting certificates and importing them prior to loading config back in for VPN to avoid config errors. also the ability for routeros to ignore duplicate config rather than erroring out.

Maybe its just that people know how to slice and dice a config file to get it to import correctly but the output that an export generates almost never goes back into a device without re-jigging the config, having config dependencies defined before the config that it depends on would be a huge plus, even if there was a way to tell export to format a config in a way where it could be loaded into a new device.

Maybe that is what a Device controller can do. apply a device config to a different kind of device and give you an opportunity to map specific ports to new ports on the different hardware.

Not a problem wholesomely unique to Mikrotik either, Cisco are just as bad with differences between hardware and software platforms (NXOS, IOS, IOS XE etc)

Agree! The config export file should:

  1. include ALL configuration, at least optionally. also the users and certificates.
  2. have a facility to import the export file in a load-and-replace fashion, i.e. a combination of “clear config” and “import file”, with continuation on non-fatal errors.

As it is now, loading of a config file is an expert job.

Already on post #32, this topic is one useless frill… 10 months and no news, no comment, no something from Staff involved of development of something…
http://forum.mikrotik.com/t/mikrotik-devices-controller/158354/1

I think they have forgotten about it haha
Very ashame..

It MUST be able to monitor and auto discover devices with IP addresses that are assigned dynamically (I.e DHCP or IP pool if dialing in via VPN). The auto discover needs to be smart enough to not add a new device when device already exists but IP has changed.

Also an option to auto discover the device with the router identity as the display name.

You didn’t see that in the beta version of the controller? :wink: I think it already does all those device discovery things…

I did not know about this construct. I appreciate the comment :slight_smile:

Now that I think about it, if some of the final or interstitial commands are written as tests for previous commands that error out if something doesn’t add up. I could see doing pings, arp, fetch, resolve etc. in tests like that. I guess the issue is that it’s just a lot of code to write, test, and debug. On the other hand, I can’t think of what I reasonable default idea of a transaction failure would be, so perhaps the way it currently is is the most reasonable and I just need to get more comfortable with scripting and testing.

I guess I just don’t have that much experience looking at real-world code where semi-high-stakes changes are made. I do small community ISP work and we just haven’t gotten to the point of needing to edit devices where a lot of users are using it and success is critical.

Any news about mikrotik device Controller?

Hi all,

because of MT inability to release anything after 1 year…check UPTIME MONITOR. It is opensource and it can run in docker. It can send you notofication thorough many providers etc Microsoft teams and it is very simple, nice monitoring of servers.

https://www.youtube.com/watch?v=DbF96IHOZig

Pretty “simple” I think to develop a good controller:

Step 1: Fix your DNS Implementations, make stuff like mDNS great again!
Step 2: Update / fix your Openflow Integration
Step 3: Fix your […] implementations
Step 4: Make Controller that supports Openflow asides just Mikrotik devices

but for the love of god start at Step 1 before you attempt anything else at all!

That is just a NMS. not a controller.

I’m using Cloutik.com but since I learned about Omada and experienced to many disappointments on Mikrotik LTE devices I have to switch to Omada - how it look and work is perfect.

Mikrotik, is there any chance soon?