lower level default.
     Type: Number
     Default: 0
+  ControlVirtualInterface:
+    Default: 'br-ex'
+    Description: Interface where virtual ip will be assigned.
+    Type: String
+  ControlFixedIPs:
+    Default: []
+    Description: Should be used for arbitrary ips.
+    Type: Json
 Resources:
+  ControlVirtualIP:
+    Type: OS::Neutron::Port
+    Properties:
+      name: control_virtual_ip
+      network_id: {Ref: NeutronControlPlaneID}
+      fixed_ips:
+        Ref: ControlFixedIPs
   RabbitCookie:
     Type: OS::Heat::RandomString
     Properties:
         ntp:
           servers:
               - {server: {Ref: NtpServer}, fudge: "stratum 0"}
+        keepalived:
+          keepalive_interface:
+            Ref: NeutronPublicInterface
+          priority: 101
+        virtual_ips:
+            -
+              ip: {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]}
+              interface:
+                Ref: ControlVirtualInterface
   controllerPassthrough:
     Type: OS::Heat::StructuredConfig
     Properties: