From e80572bca8d345056862235a41597d8b2540e68b Mon Sep 17 00:00:00 2001 From: Monty Taylor Date: Sat, 1 Aug 2015 13:49:51 +1000 Subject: Template the talks! --- src/talks/now-what/index.html | 436 ------------------------------------------ 1 file changed, 436 deletions(-) delete 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 deleted file mode 100644 index ca21fa8..0000000 --- a/src/talks/now-what/index.html +++ /dev/null @@ -1,436 +0,0 @@ - - - - - - - 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