You are on page 1of 24

ManageableVirtualAppliances

DavidLutterkort
20070509

Overview

VirtualAppliances

Benefits Problems

ApplianceImages ApplianceRecipes Example

Appliances

VirtualAppliance

oneormorevirtualmachinespackagedfor distribution supplierdefinedfunction sealedblackbox(?) Oneormoredisks(binaryimages) Exampleconfigfileforvirtplatform READMEorsimilar

Distributionofawholesystem

Typicaldistribution

Examples

Routingfirewall AsteriskVoIP Wiki Blogs Databaseserver Tomcat LAMPstack

AppliancesBenefits

Applianceinstallationsimplerthanapplication installation Appliancetestedasawholebysupplier MorelatitudeinOSandcomponentselection Integrated,simplifiedconfiguration Generalvirtualizationbenefits


Hardwareisolation Improvedhardwareutilization Applicationisolation

AppliancesProblems

Imagesize Safedeployment Scaleproblems


Oneappliance,twoappliances,... DatacenterfullofDSLrouters?

AppliancesProblems

Separation

Keepusermodificationsseparatefromoriginal appliance Easeofuseforconsumers Automationforenterpriseusers Networkconfig Outgoingmailserver

Configuration

Discovery

BuildersandUsers

Developmentvs.Assembly

Collaborationapplication,developedasappliance PostgreSQL+phpPgAdmin GoldenMaster Easysetupvs.automation Smallvs.largenumberofappliances Singledeploymentvs.multipledeployments Noinfrastructurevs.existinginfrastructure

Consumersvs.Enterprise

VirtualizationPlatforms

libvirt

commonAPI abstractawayplatformdifferences fullyvirtvs.paravirt Xen,kvm,qemu,... featuressuchaspaevs.nonpae

Uselibvirtcapabilities

Appliancesvs.Baremetal

Similarproblemsandadvantagesasimagebased management

Localmodificationshardtocapture Updatesclunky Runwithalmostentirefilesystemreadonly Markmutablefilesandcategorize


StatelessLinux

Persistent(/etc/statetab) Temporary(/etc/rwtab)

ImagesandRecipes

Images:metadata+diskimages

Easytodeploy Updatesunreliable Hardtocomprehend Moredeploymentinfrastructure Completedescriptionofcontents Easytofitintoexistinginfrastructure Buildfromrecipeandcreateimages

Recipes:metadataonly

Hybridapproach

Images:VMdescriptor

CreatelibvirtXMLfromdescriptor Checkappliancematchesplatform

hypervisor(xen,hvm) arch(i386,x86_64,...) features(pae,nonpae)

Bootdescriptor(multiple) Storagedescription

Listdiskimages MapintoVM

Images:Disks

Imagesareraw(wouldliketouseqcow) Classifyintosystem/data/scratch

SimilartoclassificationforStateless

Replacesystemdisksonupdate MultipleVM'scanrunsameappliance

MustkeeporiginalapplianceimageandVMimage separate TrackVM/appliancerelation

Images:Building

Createinitialimagesinanywaythatseemsconvenient

Forrepeatability,userecipe Multiplebootdescriptors,e.g.,paravirtandfullyvirt

Write/generateappliancedescriptor

Packageastarball PackageasRPM

Useyumfordistribution Signpackages Versioning

Toolsneededtosimplifybuilding

Images:Deploying

Downloadandinstallinto/var/lib/appliances UsevirtinstalltocreateVM

Checkappliancematcheshost CopyappliancedisksandrecordVM<>appliance association CreatelibvirtXMLandstartVM BasisisvirtinstallAPI

Integrationwithvirtmanagerplanned

Recipes

Onlymetadataconsistingof

Appliancedescriptor Kickstartforbasesystem Puppetmanifestforapplianceconfig Storagedefinition Yumrepos

Importantpartsofkickstart

Keepkickstartsimple,moveappliancespecificsetupto puppet

Recipes:Puppet

Manifestdescribesconfigurationindeclarative language

Resourcesdescribebasicconfigelement

Files,users,services,packages,etc. webserver,mailserver,nagiosclient

Classesgroupresourcesintologicalunits

Nodesmappingclassestosystems(hostsand guests)

Client/servermodeandcommandlinemode Distributepuppetconfigasmodule

Recipes:ApplianceModifications

Overridesofcoreapplianceconfig

Closelyrelatedtoappliance'sfunction UsesitespecificSSLcertforappliance'swebserver Basedonpuppet'ssubclassingmechanism Tangentialtoappliance'sfunction Sendallsyslogmessagestocentralserver MapadditionalclassestoVM'snode

Additionstoapplianceconfig

Worksarounddiscoveryproblems

Recipes:Deploying

Usevirtfactory,integratesallnecessarytools Simplestsetup:kickstart,virtinstall, puppetmaster Deploymentdrivenbyvirtinstall


Loadpuppetmanifestintopuppetmaster Createandpopulatediskimageswithbasesystem Puppetclientperformsfinalsetup/configuration

Example:Kronolithsetup

SimplewebcalendaringappliancebasedonKronolith

UsePostgreSQLstoragebackend Twodisks

Mainsystemdisk DatadiskforPostgreSQL

CreateappliancebyfollowingKronolithinstallguide

CreateVMwithminimalbasesystem Configureandinitializedatabase Openport80infirewall ...

Example:ImageandRecipe

ProduceApplianceImage

Writeappliancedescriptor Compressdiskimagesandpackage Image~320MBcompressed Writeappliancedescriptor Includekickstartfileforbasesystem Writepuppetmoduleforkronolithsetup

ProduceApplianceRecipe

Usecfttoautomatethis

Onlytextfilesverysmall

Example:Mailsetup

Kronolithsendsemailreminders,needsmailserver SolutionforApplianceImage

UsercanconfiguremailserverinKronolithWebUI Ooops,modifies/etc/horde Move/etc/hordetodatadisk Makeconfigfilein/etc/hordetemplate,includein recipe Userprovidesvaluesfortemplate Nooriginalconfiginformationstoredonappliance

SolutionforApplianceRecipe

Example:DiskFull

Howtoindicatethatdatadiskisfillingup

Consumer/SMBhappywithwebUIoremail notification Uselessforenterprise,wantsmonitoring Consumer/SMBneedshelp

Howtoexpanddatadisk

Storagemanagementinvirtinfrastructure

Links
ETWebsitewithlinkstotoolsmentioned:http://et.redhat.com/ Mailinglist:etmgmttools@redhat.com Commentedimage/recipeexamples: http://people.redhat.com/dlutter/kronolithappliance.html

You might also like