diff --git a/xos/openstack_observer/steps/sync_container.py b/xos/openstack_observer/steps/sync_container.py
index c6ac936..a5880f0 100644
--- a/xos/openstack_observer/steps/sync_container.py
+++ b/xos/openstack_observer/steps/sync_container.py
@@ -41,14 +41,45 @@
     def get_node_key(self, node):
         return "/opt/xos/node-key"
 
+    def get_instance_port(self, container_port):
+        print container_port
+        print container_port.network
+        for p in container_port.network.links.all():
+            if (p.instance) and (p.instance.node == container_port.container.node) and (p.mac):
+                return p
+        return None
+
+    def get_ports(self, o):
+        i=0
+        ports = []
+        for port in o.ports.all():
+            if not port.mac:
+                raise Exception("Port on network %s is not yet ready" % port.network.name)
+
+            pd={}
+            pd["device"] = "eth%d" % i
+            pd["mac"] = port.mac
+            pd["ip"] = port.ip
+
+            instance_port = self.get_instance_port(port)
+            if not instance_port:
+                raise Exception("No instance on slice for port on network %s" % port.network.name)
+
+            pd["snoop_instance_mac"] = instance_port.mac
+            pd["snoop_instance_id"] = instance_port.instance.instance_id
+
+            ports.append(pd)
+        return ports
+
     def get_extra_attributes(self, o):
         fields={}
         fields["ansible_tag"] = "container-%s" % str(o.id)
         fields["baremetal_ssh"] = True
         fields["instance_name"] = "rootcontext"
-        fields["container_name"] = o.name
+        fields["container_name"] = "%s-%s" % (o.slice.name, str(o.id))
         fields["docker_image"] = o.docker_image
         fields["username"] = "xos"
+        fields["ports"] = self.get_ports(o)
         return fields
 
     def sync_fields(self, o, fields):
diff --git a/xos/openstack_observer/steps/sync_container.yaml b/xos/openstack_observer/steps/sync_container.yaml
index d97f0df..f8c6df5 100644
--- a/xos/openstack_observer/steps/sync_container.yaml
+++ b/xos/openstack_observer/steps/sync_container.yaml
@@ -5,6 +5,18 @@
   user: {{ username }}
   sudo: yes
 
+  vars:
+    container_name: {{ container_name }}
+    docker_image: {{ docker_image }}
+    ports:
+    {% for port in ports %}
+       - device: {{ port.device }}
+         mac: {{ port.mac }}
+         ip: {{ port.ip }}
+         snoop_instance_mac: {{ port.snoop_instance_mac }}
+         snoop_instance_id: {{ port.snoop_instance_id }}
+    {% endfor %}
+
   tasks:
 
 #  - name: Fix /etc/hosts
@@ -13,6 +25,7 @@
 #      regexp="127.0.0.1 localhost"
 #      line="127.0.0.1 localhost {{ instance_hostname }}"
 
+{% if false %}
   - name: Add repo key
     apt_key:
       keyserver=hkp://pgp.mit.edu:80
@@ -38,11 +51,23 @@
       name=docker-py
       state=latest
 
-  - name: Start Container
-    docker:
-      docker_api_version: "1.18"
-      name: {{ container_name }}
-      # was: reloaded
-      state: running
-      image: {{ docker_image }}
+  - name: install Pipework
+    get_url: url=https://raw.githubusercontent.com/jpetazzo/pipework/master/pipework
+       dest=/usr/local/bin/pipework
+       mode=0755
+{% endif %}
+
+#  - name: Start Container
+#    docker:
+#      docker_api_version: "1.18"
+#      name: {{ container_name }}
+#      # was: reloaded
+#      state: running
+#      image: {{ docker_image }}
+
+  - name: container upstart
+    template: src=/opt/xos/openstack_observer/templates/container.conf.j2 dest=/etc/init/container-{{ container_name }}.conf
+
+  - name: container startup script
+    template: src=/opt/xos/openstack_observer/templates/start-container.sh.j2 dest=/usr/local/sbin/start-container-{{ container_name }}.sh mode=0755
 
diff --git a/xos/openstack_observer/templates/container.conf.j2 b/xos/openstack_observer/templates/container.conf.j2
new file mode 100644
index 0000000..d3ef42d
--- /dev/null
+++ b/xos/openstack_observer/templates/container.conf.j2
@@ -0,0 +1,11 @@
+# Upstart script for container
+description "container"
+author "smbaker@gmail.com"
+start on filesystem and started docker
+stop on runlevel [!2345]
+respawn
+
+script
+  /usr/local/sbin/start-container-{{ container_name }}.sh
+end script
+
diff --git a/xos/openstack_observer/templates/start-container.sh.j2 b/xos/openstack_observer/templates/start-container.sh.j2
new file mode 100644
index 0000000..5656992
--- /dev/null
+++ b/xos/openstack_observer/templates/start-container.sh.j2
@@ -0,0 +1,44 @@
+#!/bin/bash
+
+iptables -L > /dev/null
+ip6tables -L > /dev/null
+
+CONTAINER={{ container_name }}
+IMAGE={{ docker_image }}
+
+docker inspect $CONTAINER > /dev/null 2>&1
+if [ "$?" == 1 ]
+then
+    docker pull $IMAGE
+    docker run -d --name=$CONTAINER --privileged=true --net=none $IMAGE
+else
+    docker start $CONTAINER
+fi
+
+{% if ports %}
+{% for port in ports %}
+IP="{{ port.ip }}"
+MAC="{{ port.mac }}"
+DEVICE="{{ port.device }}"
+INSTANCE_MAC="{{ port.snoop_instance_mac }}"
+INSTANCE_ID="{{ port.snoop_instance_id }}"
+INSTANCE_TAP=`virsh domiflist $INSTANCE_ID | grep -i $INSTANCE_MAC | awk '{print $1}'`
+INSTANCE_TAP=${INSTANCE_TAP:3}
+VLAN_ID=`ovs-vsctl show | grep -i -A 1 port.*$INSTANCE_TAP | grep -i tag | awk '{print $2}'`
+TAP="con`echo $CONTAINER_$DEVICE|md5sum|awk '{print $1}'`"
+TAP=${TAP:0:12}
+echo im=$INSTANCE_MAC ii=$INSTANCE_ID it=$INSTANCE_TAP vlan=$VLAN_ID tap=$TAP con=$CONTAINER dev=$DEVICE mac=$MAC
+ovs-vsctl show | grep -i $TAP
+if [[ $? == 1 ]]; then
+    echo creating tap
+    ovs-vsctl add-port br-int $TAP tag=$VLAN_ID -- set interface $TAP type=internal
+else
+    echo tap exists
+fi
+
+docker exec $CONTAINER ifconfig $DEVICE >> /dev/null || pipework $TAP -i $DEVICE $CONTAINER $IP/24 $MAC
+{% endfor %}
+{% endif %}
+
+# Attach to container
+# docker start -a $CONTAINER
