diff --git a/README.md b/README.md
index 7c1c3e7edf85614362313cdb7c3f792f755c59e4..3d52602d3719ed43b6d4123d2dc498b26caf44b9 100644
--- a/README.md
+++ b/README.md
@@ -45,6 +45,7 @@ services:
 * Ceilometer
 * Horizon
 * Zaqar
+* Magnum
 
 ```
 $ sudo docker search kollaglue
diff --git a/compose/magnum-api-conductor.yml b/compose/magnum-api-conductor.yml
new file mode 100644
index 0000000000000000000000000000000000000000..b7da90ef449d66c2a7b29ccb70900f1a979620b1
--- /dev/null
+++ b/compose/magnum-api-conductor.yml
@@ -0,0 +1,14 @@
+magnumapi:
+  image: kollaglue/centos-rdo-magnum-api:kilo
+  name: magnum-api
+  net: "host"
+  restart: always
+  env_file:
+   - openstack.env
+magnumconductor:
+  image: kollaglue/centos-rdo-magnum-conductor:kilo
+  name: magnum-conductor
+  net: "host"
+  restart: always
+  env_file:
+   - openstack.env
diff --git a/docker/magnum/magnum-api/Dockerfile b/docker/magnum/magnum-api/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..84efa2a92da75e33c60e6b1828002d080516074c
--- /dev/null
+++ b/docker/magnum/magnum-api/Dockerfile
@@ -0,0 +1,11 @@
+FROM %%KOLLA_NAMESPACE%%/%%KOLLA_PREFIX%%magnum-base:%%KOLLA_TAG%%
+MAINTAINER Kolla Project (https://launchpad.net/kolla)
+
+RUN yum -y install \
+    openstack-magnum-api \
+    && yum clean all
+
+ADD ./start.sh /start.sh
+ADD ./check.sh /check.sh
+
+CMD ["/start.sh"]
diff --git a/docker/magnum/magnum-api/build b/docker/magnum/magnum-api/build
new file mode 120000
index 0000000000000000000000000000000000000000..43944faa006f278c2090cfeeb7397fc7cd1fc6a4
--- /dev/null
+++ b/docker/magnum/magnum-api/build
@@ -0,0 +1 @@
+../../../tools/build-docker-image
\ No newline at end of file
diff --git a/docker/magnum/magnum-api/check.sh b/docker/magnum/magnum-api/check.sh
new file mode 100755
index 0000000000000000000000000000000000000000..ee03dc6d23e3488433ffda423f567aabda4f9e73
--- /dev/null
+++ b/docker/magnum/magnum-api/check.sh
@@ -0,0 +1,16 @@
+#!/bin/bash
+
+RES=0
+
+. /openrc
+if ! keystone token-get > /dev/null; then
+    echo "ERROR: keystone token-get failed" >&2
+    RES=1
+else
+    if ! heat stack-list > /dev/null; then
+        echo "ERROR: heat stack-list failed" >&2
+        RES=1
+    fi
+fi
+
+exit $RES
diff --git a/docker/magnum/magnum-api/start.sh b/docker/magnum/magnum-api/start.sh
new file mode 100755
index 0000000000000000000000000000000000000000..00a51b3cdfa31b34cc9afecdd3c8e2399f269c21
--- /dev/null
+++ b/docker/magnum/magnum-api/start.sh
@@ -0,0 +1,27 @@
+#!/bin/bash
+set -e
+
+. /opt/kolla/kolla-common.sh
+. /opt/kolla/config-magnum.sh
+
+check_required_vars KEYSTONE_ADMIN_TOKEN KEYSTONE_ADMIN_SERVICE_HOST \
+                    MAGNUM_KEYSTONE_USER MAGNUM_KEYSTONE_PASSWORD \
+                    KEYSTONE_AUTH_PROTOCOL ADMIN_TENANT_NAME \
+                    MAGNUM_API_SERVICE_HOST KEYSTONE_ADMIN_SERVICE_PORT \
+                    MAGNUM_API_SERVICE_PORT
+
+fail_unless_os_service_running keystone
+
+export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}"
+export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_ADMIN_SERVICE_HOST}:${KEYSTONE_ADMIN_SERVICE_PORT}/v2.0"
+crux user-create -n ${MAGNUM_KEYSTONE_USER} \
+    -p ${MAGNUM_KEYSTONE_PASSWORD} \
+    -t ${ADMIN_TENANT_NAME} \
+    -r admin
+
+crux endpoint-create --remove-all -n ${MAGNUM_KEYSTONE_USER} -t container \
+    -I "${KEYSTONE_AUTH_PROTOCOL}://${MAGNUM_API_SERVICE_HOST}:${MAGNUM_API_SERVICE_PORT}/v1" \
+    -P "${KEYSTONE_AUTH_PROTOCOL}://${MAGNUM_API_SERVICE_HOST}:${MAGNUM_API_SERVICE_PORT}/v1" \
+    -A "${KEYSTONE_AUTH_PROTOCOL}://${MAGNUM_API_SERVICE_HOST}:${MAGNUM_API_SERVICE_PORT}/v1"
+
+exec /usr/bin/magnum-api
diff --git a/docker/magnum/magnum-base/Dockerfile b/docker/magnum/magnum-base/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..c9c3db08b707edf2f80ce8c70d358198c24c5c83
--- /dev/null
+++ b/docker/magnum/magnum-base/Dockerfile
@@ -0,0 +1,9 @@
+FROM %%KOLLA_NAMESPACE%%/%%KOLLA_PREFIX%%base:%%KOLLA_TAG%%
+MAINTAINER Kolla Project (https://launchpad.net/kolla)
+
+# Magnum is not yet in upstream RDO packaging
+
+RUN curl https://copr.fedoraproject.org/coprs/sdake/openstack-magnum/repo/epel-7/sdake-openstack-magnum-epel-7.repo -o /etc/yum.repos.d/sdake-openstack-magnum-epel-7.repo
+
+RUN mkdir -p /opt/kolla
+COPY config-magnum.sh /opt/kolla/config-magnum.sh
diff --git a/docker/magnum/magnum-base/build b/docker/magnum/magnum-base/build
new file mode 120000
index 0000000000000000000000000000000000000000..43944faa006f278c2090cfeeb7397fc7cd1fc6a4
--- /dev/null
+++ b/docker/magnum/magnum-base/build
@@ -0,0 +1 @@
+../../../tools/build-docker-image
\ No newline at end of file
diff --git a/docker/magnum/magnum-base/config-magnum.sh b/docker/magnum/magnum-base/config-magnum.sh
new file mode 100755
index 0000000000000000000000000000000000000000..03599d359eb2c874e298443c891e7d7155225234
--- /dev/null
+++ b/docker/magnum/magnum-base/config-magnum.sh
@@ -0,0 +1,46 @@
+#!/bin/bash
+
+set -e
+
+. /opt/kolla/kolla-common.sh
+
+check_required_vars MAGNUM_DB_PASSWORD MAGNUM_KEYSTONE_PASSWORD \
+                    KEYSTONE_PUBLIC_SERVICE_HOST KEYSTONE_PUBLIC_SERVICE_PORT \
+                    MAGNUM_KEYSTONE_USER ADMIN_TENANT_NAME \
+                    MAGNUM_DB_USER MAGNUM_DB_NAME KEYSTONE_AUTH_PROTOCOL \
+                    KEYSTONE_PUBLIC_SERVICE_PORT RABBITMQ_SERVICE_HOST \
+                    VERBOSE_LOGGING DEBUG_LOGGING
+
+fail_unless_db
+dump_vars
+
+cat > /openrc <<EOF
+export OS_AUTH_URL="http://${KEYSTONE_PUBLIC_SERVICE_HOST}:${KEYSTONE_PUBLIC_SERVICE_PORT}/v2.0"
+export OS_USERNAME="${MAGNUM_KEYSTONE_USER}"
+export OS_PASSWORD="${MAGNUM_KEYSTONE_PASSWORD}"
+export OS_TENANT_NAME="${ADMIN_TENANT_NAME}"
+EOF
+
+cfg=/etc/magnum/magnum.conf
+
+crudini --set $cfg DEFAULT log_file ""
+crudini --set $cfg DEFAULT verbose "${VERBOSE_LOGGING}"
+crudini --set $cfg DEFAULT debug "${DEBUG_LOGGING}"
+crudini --set $cfg DEFAULT use_stderr true
+crudini --set $cfg DEFAULT rpc_backend magnum.openstack.common.rpc.impl_kombu
+crudini --set $cfg DEFAULT admin_user admin
+crudini --set $cfg oslo_messaging_rabbit rabbit_host ${RABBITMQ_SERVICE_HOST}
+crudini --set $cfg oslo_messaging_rabbit rabbit_userid ${RABBIT_USER}
+crudini --set $cfg oslo_messaging_rabbit rabbit_password ${RABBIT_PASSWORD}
+crudini --set $cfg database connection \
+    mysql://${MAGNUM_DB_USER}:${MAGNUM_DB_PASSWORD}@${MARIADB_SERVICE_HOST}/${MAGNUM_DB_NAME}
+crudini --set $cfg keystone_authtoken auth_protocol "${KEYSTONE_AUTH_PROTOCOL}"
+crudini --set $cfg keystone_authtoken auth_host "${KEYSTONE_PUBLIC_SERVICE_HOST}"
+crudini --set $cfg keystone_authtoken auth_port "${KEYSTONE_PUBLIC_SERVICE_PORT}"
+crudini --set $cfg keystone_authtoken auth_uri \
+    "${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_PUBLIC_SERVICE_HOST}:${KEYSTONE_PUBLIC_SERVICE_PORT}/v2.0"
+crudini --set $cfg  keystone_authtoken admin_tenant_name "${ADMIN_TENANT_NAME}"
+crudini --set $cfg keystone_authtoken admin_user "${MAGNUM_KEYSTONE_USER}"
+crudini --set $cfg keystone_authtoken admin_password \
+    "${MAGNUM_KEYSTONE_PASSWORD}"
+crudini --set $cfg api host ${MAGNUM_API_SERVICE_HOST}
diff --git a/docker/magnum/magnum-conductor/Dockerfile b/docker/magnum/magnum-conductor/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..f3d506cb8fb7b5c0f41f41cfa6a390d4c83186e2
--- /dev/null
+++ b/docker/magnum/magnum-conductor/Dockerfile
@@ -0,0 +1,13 @@
+FROM %%KOLLA_NAMESPACE%%/%%KOLLA_PREFIX%%magnum-base:%%KOLLA_TAG%%
+MAINTAINER Kolla Project (https://launchpad.net/kolla)
+
+RUN yum -y install \
+    openstack-magnum-conductor \
+    tar \
+    && yum clean all
+
+# Install kubectl binary (ugh)
+RUN cd /tmp && curl -L https://github.com/GoogleCloudPlatform/kubernetes/releases/download/v0.15.0/kubernetes.tar.gz -o /tmp/kubernetes.tar.gz && /usr/bin/tar -xzvf /tmp/kubernetes.tar.gz && cp -a /tmp/kubernetes/platforms/linux/amd64/kubectl /usr/bin/kubectl && rm -rf /tmp/kubernetes
+
+ADD ./start.sh /start.sh
+CMD ["/start.sh"]
diff --git a/docker/magnum/magnum-conductor/build b/docker/magnum/magnum-conductor/build
new file mode 120000
index 0000000000000000000000000000000000000000..43944faa006f278c2090cfeeb7397fc7cd1fc6a4
--- /dev/null
+++ b/docker/magnum/magnum-conductor/build
@@ -0,0 +1 @@
+../../../tools/build-docker-image
\ No newline at end of file
diff --git a/docker/magnum/magnum-conductor/start.sh b/docker/magnum/magnum-conductor/start.sh
new file mode 100755
index 0000000000000000000000000000000000000000..4cf1291a393c92d093d18497e0ca0c7b334b0c85
--- /dev/null
+++ b/docker/magnum/magnum-conductor/start.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+. /opt/kolla/kolla-common.sh
+. /opt/kolla/config-magnum.sh
+
+check_required_vars MAGNUM_DB_NAME MAGNUM_DB_USER MAGNUM_DB_PASSWORD
+fail_unless_db
+
+mysql -h ${MARIADB_SERVICE_HOST} -u root -p${DB_ROOT_PASSWORD} mysql <<EOF
+CREATE DATABASE IF NOT EXISTS ${MAGNUM_DB_NAME} DEFAULT CHARACTER SET utf8;
+GRANT ALL PRIVILEGES ON ${MAGNUM_DB_NAME}.* TO
+    '${MAGNUM_DB_USER}'@'%' IDENTIFIED BY '${MAGNUM_DB_PASSWORD}'
+EOF
+
+/usr/bin/magnum-db-manage upgrade
+
+exec /usr/bin/magnum-conductor
diff --git a/docs/integration-guide.md b/docs/integration-guide.md
index 58165a06eff8e94da870f7f967cba464e70820f0..1db81ab7bfb4662337542f0564ee40a021558b57 100644
--- a/docs/integration-guide.md
+++ b/docs/integration-guide.md
@@ -110,6 +110,12 @@ all containers.  This allows a simple method of ensuring every type of node
     RABBITMQ_USER=<rabbit> - The RabbitMQ user name
     RABBIT_PASSWORD=<password> - The RabbitMQ password
     RABBIT_USERID=<rabbit> - The RabbitMQ user id on the host
+    MAGNUM_DB_NAME=<magnum> - The Magnum database name
+    MAGNUM_DB_PASSWORD=<kolla> - The Magnum database password
+    MAGNUM_KEYSTONE_PASSWORD=<magnum> - The Magnum keystone password
+    MAGNUM_API_SERVICE_HOST=<IP> - The Magnum Host IP address
+    MAGNUM_API_SERVICE_PORT=<9511> - The Magnum port
+
 
 [Minimum environment variable setup guide.](https://github.com/stackforge/kolla/blob/master/docs/minimal-environment-vars.md)
 
diff --git a/tools/genenv b/tools/genenv
index ecd648e5a5ac0d260d95d567e75938d9f7879f15..483c792ddc1361eda48abed0de627fb591e423d3 100755
--- a/tools/genenv
+++ b/tools/genenv
@@ -117,6 +117,13 @@ HEAT_API_SERVICE_HOST=$HOST_IP
 HEAT_API_CFN_SERVICE_HOST=$HOST_IP
 HEAT_API_CFN_URL_HOST=$HOST_IP
 
+# Magnum
+MAGNUM_DB_NAME=magnum
+MAGNUM_DB_PASSWORD=kolla
+MAGNUM_KEYSTONE_PASSWORD=magnum
+MAGNUM_API_SERVICE_HOST=$HOST_IP
+MAGNUM_API_SERVICE_PORT=9511
+
 cat > ./openrc <<EOF
 export OS_AUTH_URL="http://${KEYSTONE_PUBLIC_SERVICE_HOST}:5000/v2.0"
 export OS_USERNAME=$ADMIN_TENANT_NAME
@@ -147,6 +154,7 @@ ADMIN_TENANT_NAME=$ADMIN_TENANT_NAME
 DB_ROOT_PASSWORD=$MARIADB_ROOT_PASSWORD
 FLAT_INTERFACE=$NOVA_FLAT_INTERFACE
 GLANCE_API_SERVICE_HOST=$GLANCE_API_SERVICE_HOST
+MAGNUM_API_SERVICE_HOST=$MAGNUM_API_SERVICE_PORT
 GLANCE_DB_NAME=$GLANCE_DB_NAME
 GLANCE_DB_PASSWORD=$GLANCE_DB_PASSWORD
 GLANCE_DB_USER=$GLANCE_DB_USER
@@ -192,6 +200,10 @@ HEAT_DB_NAME=$HEAT_DB_NAME
 HEAT_DB_PASSWORD=$HEAT_DB_PASSWORD
 HEAT_KEYSTONE_PASSWORD=$HEAT_KEYSTONE_PASSWORD
 HEAT_API_SERVICE_HOST=$HEAT_API_SERVICE_HOST
+MAGNUM_DB_NAME=$MAGNUM_DB_NAME
+MAGNUM_DB_PASSWORD=$MAGNUM_DB_PASSWORD
+MAGNUM_KEYSTONE_PASSWORD=$MAGNUM_KEYSTONE_PASSWORD
+MAGNUM_API_SERVICE_HOST=$MAGNUM_API_SERVICE_HOST
 PUBLIC_INTERFACE=$NOVA_PUBLIC_INTERFACE
 PUBLIC_IP=$HOST_IP
 PUBLIC_IP=$PUBLIC_IP
diff --git a/tools/kolla b/tools/kolla
index 805a5cca24ae782101e1de085db1979abbee5f53..df69d64e8be65816db3570a23d3416ed857558cb 100755
--- a/tools/kolla
+++ b/tools/kolla
@@ -38,6 +38,7 @@ function process_all {
         process neutron-agents
     fi
     process heat-api-engine
+    process magnum-api-conductor
     process horizon
 }