OpenStack

Mission

to produce the ubiquitous Open Source Cloud Computing platform that will meet the needs of public and private clouds regardless of size, by being simple to implement and massively scalable.

Borrowed from Ubuntu

Time Based Releases

Design summits each cycle

Release codenames in alphabetical order

Different from Ubuntu

No BDFL

All decisions are democratic

"OpenStack needs product management"

Developers work on whatever they feel like, so there is no cohesion

not quite

OpenStack needs product management coordination

Product Management Working Group

Today 2:00pm - 3:30pm Room 212

What can the working group do?

I've got 99 Problems ...

As an application developer,
I want to deploy and run an application on the internet
so that my customers all over the world can consume it.

As an application developer,
I want to deploy the application across multiple clouds
so that my service survives issues in any one of them.

THIS WORKS

I'm doing it myself as we speak

10-20k VMs per-day

3 (soon to be 6) clouds

Only using OpenStack APIs

To do this, there are some basic steps

Get (make/fetch/find) a base image

Upload it to each cloud

Boot a VM on one or more of the clouds

Ensure it's on the Internet

Get a base image

OpenStack diskimage-builder

packer

Download pre-built image from Ubuntu/Fedora

NO

Problem: hypervisor image file format

Upload it to each cloud

glance image-create

NO

Problem: image API version

Problem: List API versions

Root of the Image API lists versions

keystone catalog only lists a versioned endpoint

Problem: API version discovery

Try one - if it doesn't work, try the other

maybe look at the end of the API endpoint for v1 or v2

Upload it to each cloud

glance image-create filename

NO

Problem: image task vs. PUT

swift upload --object-name local-image-filename images image-name
glance task-create
   --type=import
   --input='{"import_from": "images/image-name",
             "image_properties" : {"name": "My Image Name"}}'
                  
glance image-create --name=image-name --file=local-image-filename
                  

Boot a VM on one or more of the clouds

nova boot --image=image-name --flavor=something
                  

NO

Problem: the image needs to get on the network

nova boot --image=image-name --flavor=something
                      

NO

Problem: Ensure it's on the Internet

VM Network with nova-network

        addresses:
          private:
          - addr: 10.181.5.77
            version: 4
          public:
          - addr: 2001:4800:7810:512:be76:4eff:fe05:8325
            version: 6
          - addr: 98.129.169.30
            version: 4
                  

VM Network with nova-network

        addresses:
          mordred@inaugust.com-network:
          - OS-EXT-IPS-MAC:mac_addr: fa:16:3e:a6:de:26
            OS-EXT-IPS:type: fixed
            addr: 10.0.0.6
            version: 4
          - OS-EXT-IPS-MAC:mac_addr: fa:16:3e:a6:de:26
            OS-EXT-IPS:type: floating
            addr: 15.126.239.219
            version: 4
                  

Boot a VM on one or more of the clouds

nova boot --image=image-name --flavor=something --name=my-server
nova floating-ip-create
nova floating-ip-associate my-server {{ value_from_create }}
                  

NO

Problem: My Internet server is behind a NAT

Problem: Security Groups

I was trying to spin up a web server, but all my ports were blocked

I'll be using ansible and puppet on this machine, I can configure iptables thanks

Boot a VM on one or more of the clouds

nova secgroup-add-rule default tcp 80 80 0.0.0.0/0
nova boot --image=image-name --flavor=something --name=my-server
nova floating-ip-create
nova floating-ip-associate my-server {{ value_from_create }}
                  

Wow. So that's

I think we can do better than that

What am I doing about it?

os-client-config

http://git.openstack.org/cgit/openstack/os-client-config

A library to handle config information for openstack clients

Tracks differences in vendors that can't be discovered

In use in python-openstackclient and ansible today

shade

http://git.openstack.org/cgit/openstack-infra/shade

A library to wrap business logic around client libraries

cloud.create_server('my-server', auto_ip=True)
                  

In use in Infra Nodepool and ansible today

Raising Issues

What should we do about it?