1. A method comprising: converting, by a processor of a first node associated with a first data center, a plurality of constraints and a goal for a cloud deployment that are expressed in a plurality of statements of a first program expressed using a declarative policy language into a constraint optimization problem expressed in a second program, the plurality of constraints comprising a constraint that restricts an allowed value of a predicate, wherein the constraint represents an invariant that is to be maintained at all times; selecting, by the processor of the first node, a second node associated with a second data center neighboring the first data center; determining, by the processor of the first node, that the first node is a master of a link between the first node and the second node; based on determining that the first node is the master of the link between the first node and the second node, receiving, by the processor of the first node from the second node, a first system state of the second data center associated with the second node; aggregating, by the processor of the first node, the first system state of the second data center associated with the second node with a second system state of the first data center associated with the first node to form an aggregated system state; and calculating, by the processor using the aggregated system state, a solution for the constraint optimization problem for use in performing cloud resource orchestration for the cloud deployment.