1. A method comprising: executing, by a router, a version of a network operating system; identifying, with a virtual machine agent executing at the router, a first virtual machine executing at a computing cloud communicatively coupled to the router, wherein the first virtual machine executes a first instance of the version of the network operating system; sending, with the virtual machine agent and to the first virtual machine, a request to perform a first task, wherein the first task is for a first logical segment of a network; receiving, with the virtual machine agent and from the first virtual machine, a first task response that includes a result of performing the first task; identifying, with the virtual machine agent executing at the router, a second virtual machine executing at the computing cloud, wherein the second virtual machine executes a second instance of the version of the network operating system, and wherein the first virtual machine and the second virtual machine are different virtual machines; sending, with the virtual machine agent and to the second virtual machine, a request to perform a second task, wherein the second task is for a second logical segment of the network; receiving, with the virtual machine agent and from the second virtual machine, a second task response that includes a result of performing the second task; and updating, based on the result included in the first task response and the result included in the second task response, the router.