From 22ab0f1a87a61a84dc78721ecbdde43ec2b1c556 Mon Sep 17 00:00:00 2001 From: Monty Taylor Date: Sat, 1 Aug 2015 02:53:18 +1000 Subject: Add talks --- src/talks/now-what/index.html | 436 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 436 insertions(+) create mode 100644 src/talks/now-what/index.html (limited to 'src/talks/now-what') diff --git a/src/talks/now-what/index.html b/src/talks/now-what/index.html new file mode 100644 index 0000000..ca21fa8 --- /dev/null +++ b/src/talks/now-what/index.html @@ -0,0 +1,436 @@ + + + + + + + OpenStack works ... so now what? + + + + + + + + + + + + + + + + + + +
+ +
+ +

+ OpenStack works ... so now what? +

+

Monty Taylor

+

http://inaugust.com/talks/now-what.html

+

twitter: @e_monty

+
+ +
+

Who am I?

+ +

Distinguished Technologist

+

HP Cloud

+
+ +
+

Who am I?

+ +

Technical Committee

+

Foundation Board of Directors

+

Developer Infrastructure Core Team

+
+ +
+

What are we going to talk about?

+
    +
  • OpenStack
  • +
  • My application
  • +
  • Your applications
  • +
+
+ +
+ OpenStack +
+ +
+

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

+ +
+ +
+

OpenStack Infra

+
+ +
+

Tooling, Automation and CI for OpenStack Project

+
+ +
+

2000 Developers

+
+ +
+

Gated Commits

+

Every commit is fully integration tested (twice) before landing

+
+ +
+

Each Test Runs on a Single Use Cloud Slave

+

This is that "cloud scale out" part

+
+ +
+

1.7 Million Test Jobs in the last 6 Months

+
+ +
+

15 Million Tests in a month

+
+ +
+

18 Terabytes of Log Data in six months

+
+ +
+

We have no servers

+

It all runs across HP and Rackspace Public Clouds.

+
+ +
+

Architecture

+

image

+
+ +
+

Gerrit

+
    +
  • + Traditional 'Enterprise' Java Application
  • +
  • Single Nova VM, Cinder Volume
  • +
  • Scale out farm of git replicas
  • +
+
+ +
+ +
+ +
+

Fun Numbers

+
    +
  • 2500 changes every week
  • +
  • 15000 change revisions every week
  • +
  • 10,000 new changes every 42 days
  • +
+
+ +
+ +
+ +
+

nodepool

+
    +
  • Cloud Native
  • +
  • + Purpose built in Python
  • +
  • Keeps a pool of ready to go nodes
  • +
  • Multi-cloud
  • +
  • Fully elastic - responds to demand
  • +
+
+ +
+ + +
+ +
+

OpenStack Works!

+

What next?

+

Make it easier

+
+ +
+

Basic things you want to do

+ +

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

+
+ +
+

We've made this harder than it should be

+
+ +
+

Get a base image

+

OpenStack diskimage-builder

+

packer

+

Download pre-built image from Ubuntu/RedHat/SuSE

+
+ +
+

Problem: hypervisor image file format

+
    +
  • + Rackspace uses VHD +
  • +
  • + HP uses qcow2 +
  • +
  • + DreamHost uses RAW +
  • +
+
+ +
+

Problem: image API version

+
    +
  • + HP uses v1 +
  • +
  • + vexxhost uses v2 +
  • +
+

Good news! We made a plan for this at + the summit

+
+ +
+

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
+                  
+
+ +
+

Problem: Ensure it's on the Internet

+
    +
  • Cloud has externally routable IP from neutron (RunAbove, OVH)
  • +
  • Cloud has externally routable IP neutron AND supports optional private tenant networks (vexxhost)
  • +
  • Cloud has private tenant network provided by neutron and requires floating IP (HP, Dreamhost)
  • +
  • Cloud only has private tenant network provided by nova-network and requires floating-ip for external routing (auro)
  • +
  • Cloud has externally routable IP from neutron but no neutron APIs (Rackspace)
  • +
+
+ +
+

Maybe in code ...

+
+def get_server_external_ipv4(cloud, server):
+    if cloud.has_service('network'):
+        try:
+            server_ports = cloud.search_ports(
+                filters={'device_id': server.id})
+            ext_nets = cloud.search_networks(filters={'router:external': True})
+        except NeutronClientException as e:
+            pass  # fall through
+        else:
+            for net in ext_nets:
+                for port in server_ports:
+                    if net['id'] == port['network_id']:
+                        for ip in port['fixed_ips']:
+                            if _utils.is_ipv4(ip['ip_address']):
+                                return ip['ip_address']
+    ext_ip = get_server_ip(server, key_name='public')
+    if ext_ip is not None:
+        return ext_ip
+    for interfaces in server.addresses.values():
+        for interface in interfaces:
+            if _utils.is_ipv4(interface['addr']) and \
+                    _utils.is_globally_routable_ipv4(interface['addr']):
+                return interface['addr']
+    return None
+                  
+
+ +
+

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

+
+ +
+

os-client-config

+

~/.config/openstack/clouds.yaml

+
+clouds:
+  hp-mordred:
+    profile: hp
+    auth:
+      username: mordred@inaugust.com
+      password: XXXXXXXXXXXXX
+      project_name: mordred@inaugust.com
+    region_name: region-b.geo-1
+  dreamhost:
+    profile: dreamhost
+    auth:
+      username: montay6
+      project_name: dhc2111978
+      password: XXXXXXXXXXXXX
+    region_name: RegionOne
+                  
+
+ +
+

shade

+

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

+

A library to wrap business logic around client libraries

+
+cloud.create_image('image-name', filename='image-filename.qcow2')
+cloud.create_server('my-server', image='immage-name', auto_ip=True)
+                  
+

In use in Infra Nodepool and ansible

+
+ +
+

ansible

+

Brand new modules, based on shade

+

Coming in 2.0 release

+
+- os_keypair:
+    cloud: hp-mordred
+    name: mordred
+    public_key_file: ~/.ssh/id_rsa.pub
+- os_image:
+    cloud: hp-mordred
+    name: Monty Ubuntu
+    file: ubuntu.vhd
+- os_server:
+    cloud: hp-mordred
+    name: my-server
+    flavor_ram: 1024
+    image: Monty Ubuntu
+                  
+
+ +
+

ansible

+

multi-cloud support

+
+- os_keypair:
+    cloud: "{{ item }"
+    name: mordred
+    public_key_file: ~/.ssh/id_rsa.pub
+    with-items:
+    - vexxhost
+    - rackspace
+    - mordred-hp
+    - ovh
+                  
+
+ +
+

What should we do about it?

+
    +
  • + Get back to basics +
  • + shade existence is a bug +
  • + Make some decisions about divergences in the basic levels +
  • + Take a stand even if one of our product managers disagrees +
  • + Ensure that simple things are simple +
  • +
+
+ + +
+

Thank you!

+

http://inaugust.com/talks/now-what.html

+

twitter: @e_monty

+
+ +
+ + +
+ + + + + + + + -- cgit v1.2.3