A PaaS for
Continuous Delivery
of
Cloud Native
Apps

https://github.com/atx2016/openstack-summit-austin-2016

Submit a PR at

http://ibm.biz/atx-apr-2016

About us....

Paul Czarkowski @pczarkowski
Rags Srinivas @ragss
Boaty McBoatFace

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

    Terraform Demo

    DEIS


    • PaaS built on top of Docker and CoreOS
    • Scale, Rollback, etc. easily
    http://docs.deis.io/en/latest/_images/DeisSystemDiagram.png
    http://docs.deis.io/en/latest/_images/DeisGitPushWorkflow.png

    DEIS Demo

    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

    Workflow Demo

    Links

    Thank You!

    Questions?