Unifying the Cloud Experience with Ubuntu Server · 1 Unifying the Cloud Experience Adam Gandelman...

Post on 25-Sep-2019

11 views 0 download

transcript

1

Unifying the Cloud Experience

Adam Gandelman

Ubuntu Server Cloud Infrastructure Team

Adam.gandelman@canonical.com

www.canonical.com

CloudOpen 2012

with Ubuntu Server

2

My Cloud Story – The Beginning● Building virtualization stacks and rudementary “clouds”

- Xen, Kvm, iSCSI, DRBD, Pacemaker, etc. ●Glue, Glue, Glue. Duct Tape, Duct Tape, Duct Tape.

- The basics were there, but the management capabilites were not.● Proprietary offerings were better but $$$ was an issue.● Open Source solutions worked but still a bit clunky● My Goals: Lowering costs, not so much accelerating productivity

3

My Cloud Story – The Amazon Days● Working Operations at a Software-as-a-service startup● True Infrastructure-as-a-Service● APIs to meet our needs● Traded performance for amazing flexibility● automation == foozball (read: Beer)● Introduction to Ubuntu Server (the defacto on EC2)● Something seems off...

4

My Cloud Story – The Amazon Days● Working Operations at a Software-as-a-service startup● True Infrastructure-as-a-Service● APIs to meet our needs● Traded performance for amazing flexibility● automation == foozball (read: Beer)● Introduction to Ubuntu Server (the defacto on EC2)● Something seems off...

vendor lock in security

closed source ???

5

My Cloud Story – The Open Cloud● Safe to assume Amazon leverages FOSS ● Lets build a platform that suites the needs of all its users● Allow and encourage community and growth● We have the tools and we know how to use them: OS, software, community.

6

My Cloud Story – The Future● ???

7

Ubuntu Cloud Technical Overview

OpenStack

Ubuntu Server

UbuntuServer

Other OS

Orchestrated Services

Juju

UbuntuServer

MAAS

Intel, AMD, ARM

QualityAssurance

Juju

●Innovation and Quality from Top to Bottom

● Tightly integrated, loosely coupled

● Predictable, reliable

8

Ubuntu Cloud Technical Overview

OpenStack

Ubuntu Server

UbuntuServer

Other OS

Orchestrated Services

● A Solid Foundation ● Cadence● Feature-rich● Supported

Juju

UbuntuServer

MAAS

Intel, AMD, ARM

QualityAssurance

Juju

9

Ubuntu Cloud Technical Overview

Ubuntu Server

UbuntuServer

Other OS

Orchestrated Services

● A Solid Foundation ● Cadence● Feature-rich● Supported

Juju

UbuntuServer

MAAS

Intel, AMD, ARM

QualityAssurance

Juju

● Open IaaS● Flexible● Configurable● Open and Free

UbuntuServer

Other OS

UbuntuServer

OpenStack

10

Ubuntu Cloud Technical Overview

Ubuntu Server

UbuntuServer

Other OS

Orchestrated Services

● A Solid Foundation ● Cadence● Feature-rich● Supported

Juju

UbuntuServer

MAAS

Intel, AMD, ARM

QualityAssurance

Juju

● Open IaaS● Flexible● Configurable● Open and Free

UbuntuServer

Other OS

UbuntuServer

OpenStack

Orchestrated Services

● Enabling IT for the Future● Automation● DevOps● Agility

11

Ubuntu Cloud Technical Overview

Ubuntu Server

UbuntuServer

Other OS

Orchestrated Services

● A Solid Foundation ● Cadence● Feature-rich● Supported

Juju

UbuntuServer

MAAS

Intel, AMD, ARM

QualityAssurance

Juju

● Open IaaS● Flexible● Configurable● Open and Free

UbuntuServer

Other OS

UbuntuServer

OpenStack

Orchestrated Services

● Enabling IT for the Future● Automation● DevOps● AgilityJuju

MAAS

Juju

12

Juju?

Service Orchestration Framework

● Originally intended for the cloud (EC2):

$ juju deploy cs:wordpress

$ juju add-relation wordpress haproxy

$ juju add-unit wordpress

● It would be useful to expand to other providers:

$ juju deploy -e hpcloud cs:hadoop-slave$ juju add-relation hadoop-slave hadoop-master$ juju add-unit -n 10 hadoop-slave

● Also became apparent the same has value on HW:

$ juju deploy -e MAAS cs:nova-compute$ juju add-relation nova-compute nova-cloud-controller$ juju add-unit -n 5 nova-compute

13

How do we do it?

● Problem 1: Cloud inter-operability● EC2, HP, Azure, etc., etc.

● Problem 2: Hardware● Hyper-scale?

We have the tools and we know to use them.

Ubuntu Cloud Images

cloud-init

MAAS

14

Metal-as-a-Service (MAAS)

Ubuntu Server

UbuntuServer

Other OS

Juju

UbuntuServer

MAAS

Intel, AMD, ARM

Juju

UbuntuServer

Other OS

UbuntuServer

OpenStack

Orchestrated Services

Juju

MAAS

Juju

Ubuntu Server

UbuntuServer

Other OS

Juju

UbuntuServer

MAAS

Intel, AMD, ARM

Juju

UbuntuServer

Other OS

UbuntuServer

OpenStack

Orchestrated Services

Juju

MAAS

Juju

Ubuntu Server

UbuntuServer

Other OS

Juju

UbuntuServer

MAAS

Intel, AMD, ARM

Juju

UbuntuServer

Other OS

UbuntuServer

OpenStack

Orchestrated Services

Juju

MAAS

Juju

● Hardware management and inventory● Automatic discovery and enlistment.● Node inventory● Graphical management.

● API-driven machine provisioning● Consumable by Juju as a baremetal provider● Dynamic, flexible and “cloudy”

● Designed to scale● OpenStack● Hadoop● Cloudfoundry

15

cloud-init

Ubuntu Server

UbuntuServer

Other OS

Juju

UbuntuServer

MAAS

Intel, AMD, ARM

Juju

UbuntuServer

Other OS

UbuntuServer

OpenStack

Orchestrated Services

Juju

MAAS

Juju

Ubuntu Server

UbuntuServer

Other OS

Juju

UbuntuServer

MAAS

Intel, AMD, ARM

Juju

UbuntuServer

Other OS

UbuntuServer

OpenStack

Orchestrated Services

Juju

MAAS

Juju

Ubuntu Server

UbuntuServer

Other OS

Juju

UbuntuServer

MAAS

Intel, AMD, ARM

Juju

UbuntuServer

Other OS

UbuntuServer

OpenStack

Orchestrated Services

Juju

MAAS

Juju

● Flexible, First boot configuration system● Yaml format● Install packages, import SSH Keys, run arbitrary

scripts, etc.● Integrated with system init.

● Provider agnostic● Plugable data sources● EC2, OpenStack (config drive), KVM, local

● Easily extended● Many user-contributed extensions and data

sources.

● Integrated● Baked into Ubuntu Cloud Images.● Used heavily by MAAS and Juju

16

Example cloud-init

#cloud-configpackages: - git - bzr - python-setuptools - python-pip - vim - tmux - ipython

apt_mirror: http://mirror.home.base/ubuntu/

runcmd: - [ wget, "http://amebix.home.base/~adam/devenv/vimrc", -O, /home/ubuntu/.vimrc ] - [ wget, "http://amebix.home.base/~adam/devenv/bash_aliases", -O, /home/ubuntu/.bash_aliases ] - [ wget, "http://amebix.home.base/~adam/devenv/gitconfig", -O, /home/ubuntu/.gitconfig ] - [ wget, "http://amebix.home.base/~adam/devenv/gdbinit", -O, /home/ubuntu/.gdbinit ]

17

Example cloud-init

#cloud-config# Mounts volfile exported by glusterfsd running on# "volfile-server-hostname" onto the local mount point '/mnt/data'#packages: - glusterfs-client

mounts: - [ 'volfile-server-hostname:6996', /mnt/data, glusterfs, "defaults,nobootwait", "0", "2" ]

runcmd: - [ modprobe, fuse ] - [ mkdir, '-p', /mnt/data ] - [ mount, '-a' ]

18

Ubuntu Cloud Images

Ubuntu Server

UbuntuServer

Other OS

Juju

UbuntuServer

MAAS

Intel, AMD, ARM

Juju

UbuntuServer

Other OS

UbuntuServer

OpenStack

Orchestrated Services

Juju

MAAS

Juju

Ubuntu Server

UbuntuServer

Other OS

Juju

UbuntuServer

MAAS

Intel, AMD, ARM

Juju

UbuntuServer

Other OS

UbuntuServer

OpenStack

Orchestrated Services

Juju

MAAS

Juju

Ubuntu Server

UbuntuServer

Other OS

Juju

UbuntuServer

MAAS

Intel, AMD, ARM

Juju

UbuntuServer

Other OS

UbuntuServer

OpenStack

Orchestrated Services

Juju

MAAS

Juju

● Base OS image● Public Cloud● Private Cloud● KVM● LXC

● Maintained, supported● Tested● Bug fixes, security updates

● Daily Builds, Easily Avaiable● cloud-images.ubuntu.com● API● Compatable● Releases back to Hardy

19

Consuming the images

20

Consuming the images

21

Consuming the images

EC2 via cloud-utils

$ ubuntu-cloudimg-query ami-fe5bd4ce

$ euca-run-instances -k adam -t t1.micro ami-fe5bd4ce

22

Consuming the images

OpenStack

$ glance add name=ubuntu-12.04 container_format=ami \ disk_format=ami \ ubuntu-12.04-server-cloudimg-amd64-disk1.img

Uploading image 'ubuntu-12.04-amd64'Added new image with ID: 3564c7fd-6346-46e0-b810-f8a9bad5f854

$ nova boot --flavor m1.small \ --image 3564c7fd-6346-46e0-b810-f8a9bad5f854 \ my_server

23

Tightly Integrated, Loosely Coupled

OpenStack

Ubuntu Server

UbuntuServer

Other OS

Orchestrated Services

Juju

UbuntuServer

MAAS

Intel, AMD, ARM

QualityAssurance

Juju

● MAAS can deploy any workload Juju can deploy.

● Hadoop on EC2● Hadoop on Metal

● MAAS is but one of many Juju providers.

● EC2, Openstack, Azure, LXC

● Cloud Images and cloud-init environment agnostic.

● Cloud-config on hardware● Ubuntu Cloud Image in LXC

24

Unifying the Experience

● On EC2:$ juju deploy -e EC2 cs:wordpress$ juju add-relation wordpress haproxy$ juju add-unit wordpress

● On baremetal:$ juju deploy -e MAAS cs:nova-compute$ juju add-relation nova-compute nova-cloud-controller$ juju add-unit -n 5 nova-compute

● On HP Cloud:$ juju deploy -e hpcloud cs:hadoop-slave$ juju add-relation hadoop-slave hadoop-master$ juju add-unit -n 10 hadoop-slave

● On your private cloud:$ juju deploy -e openstack cs:mediawiki$ juju add-relation mediawiki mysql

25

My Own Use Case

OpenStack Integration Testing

26

My Own Use Case

OpenStack Integration Testing

● Using Juju and MAAS, deploy full OpenStack cloud to bare-metal

● Run integration and smoke tests against deployed cloud

● Use Juju to deploy an application into the new cloud, native OS API

● Use Juju to deploy an application into the new cloud, native EC2 API

27

Thank you.

Adam Gandelman

Ubuntu Server Cloud Infrastructure Team

Adam.gandelman@canonical.com

www.canonical.com

CloudOpen 2012

Questions?