A PaaS for
Continuous Delivery
of
Cloud Native
Apps
https://github.com/atx2016/openstack-summit-austin-2016
Tech Stack
- OpenStack ( BlueBox Cloud ) - IaaS
- Terraform - Orchestration
- DEIS - PaaS
- Docker Swarm - Adhoc Container Scheduling
- Jenkins - CI/CD tasks / webhooks
- Docker Registry - Docker Image Storage
- Github (external service - source control)
Architecture
OpenStack
BlueBox Cloud - Private Cloud as a Service
- Keystone
- Nova
- Neutron
- Cinder (Ceph)
- Swift
- Heat
- LBaaSv2
Terraform
About Terraform
No vendor lock-in
Multi-cloud
Hybrid cloud (resources can be on multiple clouds)
Terraform Config File
resource "openstack_compute_instance_v2" "atx2016_swarm_primary" {
name = "swarm-${var.cluster_name}-0"
image_name = "${var.image_name}"
flavor_name = "${var.flavor}"
key_pair = "${openstack_compute_keypair_v2.atx2016.name}"
network { name = "${openstack_networking_network_v2.atx2016.name}" }
security_groups = [
"${openstack_compute_secgroup_v2.atx2016_swarm.name}",
"${openstack_compute_secgroup_v2.atx2016.name}"
]
floating_ip = "${openstack_networking_floatingip_v2.atx2016_swarm.address}"
user_data = "${template_file.swarm_cloud_init.rendered}"
depends_on = [
"template_file.swarm_cloud_init",
"null_resource.write_ssh_config",
"openstack_networking_router_interface_v2.atx2016"
]
}
https://github.com/atx2016/openstack-summit-austin-2016/blob/develop/terraform/swarm.tf
DEIS

- PaaS built on top of Docker and CoreOS
- Scale, Rollback, etc. easily
Docker Swarm
https://docs.docker.com/swarm/overview/
Docker Swarm
Docker Registry

https://docs.docker.com/registry/
Jenkins
https://jenkins.io/
Jenkins Job - Deploy Dev Environment
#!/bin/bash
APP="dev-${ghprbPullId}"
git checkout ${ghprbSourceBranch}
deis create ${APP} || \
git remote add deis ssh://git@deis.atx2016.paulcz.net:2222/${APP}.git
git push -f deis ${ghprbSourceBranch} | tee deis_deploy.txt
Our Application
FROM jumanjiman/caddy
ADD . /demo
WORKDIR /demo/presentation
ENTRYPOINT ["/usr/sbin/caddy", "-conf", "/demo/presentation/caddyfile", "-root", "/demo/presentation"]
EXPOSE 8080
Development Workflow
Links
Thank You!
Questions?