unifying the cloud experience with ubuntu server · 1 unifying the cloud experience adam gandelman...
TRANSCRIPT
1
Unifying the Cloud Experience
Adam Gandelman
Ubuntu Server Cloud Infrastructure Team
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
www.canonical.com
CloudOpen 2012
Questions?