Dos and Don’ts for Virtual Appliance...

34
www.egi.eu EGI-Engage is co-funded by the Horizon 2020 Framework Programme of the European Union under grant number 654142 Dos and Don’ts for Virtual Appliance Preparation Boris Parák 1 Enol Fernández 2 1 CESNET 2 EGI.eu Nov 10, 2015

Transcript of Dos and Don’ts for Virtual Appliance...

Page 1: Dos and Don’ts for Virtual Appliance Preparationindico.egi.eu/event/2544/contributions/5163/attachments/5168/6189/egi...Dos and Don’ts for Virtual Appliance Preparation BorisParák1

www.egi.eu EGI-Engage is co-funded by the Horizon 2020 Framework Programme of the European Union under grant number 654142

Dos and Don’ts for Virtual AppliancePreparation

Boris Parák1 Enol Fernández2

1CESNET

2EGI.eu

Nov 10, 2015

Page 2: Dos and Don’ts for Virtual Appliance Preparationindico.egi.eu/event/2544/contributions/5163/attachments/5168/6189/egi...Dos and Don’ts for Virtual Appliance Preparation BorisParák1

Insert footer here

Introduction

Nov 10, 2015 Dos and Don’ts for Virtual Appliance Preparation 2/34

Page 3: Dos and Don’ts for Virtual Appliance Preparationindico.egi.eu/event/2544/contributions/5163/attachments/5168/6189/egi...Dos and Don’ts for Virtual Appliance Preparation BorisParák1

Insert footer here

Virtual Appliance

• a set of one or more virtual resource descriptors• in the cloud context, virtual resource == virtual machine• metadata & binary data of included virtual machines• pre-installed and partially pre-configured software• simplifies and speeds up resource deployment for users• for the purposes of this talk, one resource per appliance

Nov 10, 2015 Dos and Don’ts for Virtual Appliance Preparation 3/34

Page 4: Dos and Don’ts for Virtual Appliance Preparationindico.egi.eu/event/2544/contributions/5163/attachments/5168/6189/egi...Dos and Don’ts for Virtual Appliance Preparation BorisParák1

Insert footer here

Life-cycle

Nov 10, 2015 Dos and Don’ts for Virtual Appliance Preparation 4/34

Page 5: Dos and Don’ts for Virtual Appliance Preparationindico.egi.eu/event/2544/contributions/5163/attachments/5168/6189/egi...Dos and Don’ts for Virtual Appliance Preparation BorisParák1

Insert footer here

Maintenance

Nov 10, 2015 Dos and Don’ts for Virtual Appliance Preparation 5/34

Page 6: Dos and Don’ts for Virtual Appliance Preparationindico.egi.eu/event/2544/contributions/5163/attachments/5168/6189/egi...Dos and Don’ts for Virtual Appliance Preparation BorisParák1

Insert footer here

Pros & Cons

+ easier for users, no installation guides+ faster instance convergence, provisioning → work+ fine-grained environment control (version, configuration)

– time-consuming preparation of appliances– issues with interoperability across different platforms– challenging security-related aspects

Nov 10, 2015 Dos and Don’ts for Virtual Appliance Preparation 6/34

Page 7: Dos and Don’ts for Virtual Appliance Preparationindico.egi.eu/event/2544/contributions/5163/attachments/5168/6189/egi...Dos and Don’ts for Virtual Appliance Preparation BorisParák1

Insert footer here

EGI.eu VAs

• virtual appliances provided & endorsed by EGI.eu• available in The EGI Applications Database• mostly so-called base appliances containing a clean operating system• providing useful jumping-off points for new users• making sure users do not repeat the same mistakes• isolating users from technical details of our infrastructure

Nov 10, 2015 Dos and Don’ts for Virtual Appliance Preparation 7/34

Page 8: Dos and Don’ts for Virtual Appliance Preparationindico.egi.eu/event/2544/contributions/5163/attachments/5168/6189/egi...Dos and Don’ts for Virtual Appliance Preparation BorisParák1

Insert footer here

Community VAs

• virtual appliances provided by the community• available in (& endorsed by) selected virtual organizations• available in The EGI Applications Database• contain end-user applications & computational frameworks• responsibility of the community and endorsing VO managers

Nov 10, 2015 Dos and Don’ts for Virtual Appliance Preparation 8/34

Page 9: Dos and Don’ts for Virtual Appliance Preparationindico.egi.eu/event/2544/contributions/5163/attachments/5168/6189/egi...Dos and Don’ts for Virtual Appliance Preparation BorisParák1

Insert footer here

Should You Have One?

• depends on your workflow and applications• use generic/base appliances as much as possible• consider utilizing contextualization tools with base appliances• create your own, if you really have to and know how• a virtual appliance is your pet, for as long as it lives

Nov 10, 2015 Dos and Don’ts for Virtual Appliance Preparation 9/34

Page 10: Dos and Don’ts for Virtual Appliance Preparationindico.egi.eu/event/2544/contributions/5163/attachments/5168/6189/egi...Dos and Don’ts for Virtual Appliance Preparation BorisParák1

Insert footer here

Hands-on Interlude

Nov 10, 2015 Dos and Don’ts for Virtual Appliance Preparation 10/34

Page 11: Dos and Don’ts for Virtual Appliance Preparationindico.egi.eu/event/2544/contributions/5163/attachments/5168/6189/egi...Dos and Don’ts for Virtual Appliance Preparation BorisParák1

Insert footer here

Instructions

Prerequisites:1. Install & test VirtualBox2. Install & test Packer3. Install & test OVFTool

Steps:1. Get the tutorial package (flash drive or link)2. Run the automated build3. Package the resulting appliance as OVA

Nov 10, 2015 Dos and Don’ts for Virtual Appliance Preparation 11/34

Page 12: Dos and Don’ts for Virtual Appliance Preparationindico.egi.eu/event/2544/contributions/5163/attachments/5168/6189/egi...Dos and Don’ts for Virtual Appliance Preparation BorisParák1

Insert footer here

Instructions

https://goo.gl/Md7zJp

$ cd fedcloud-userinterface-packer

$ packer build fedcloud-userinterface.json

$ ovftool output-virtualbox-iso/FedCloud-Client-Ubuntu.14.04.20150902.ovf \output-virtualbox-iso/FedCloud-Client-Ubuntu.14.04.20150902.ova

Nov 10, 2015 Dos and Don’ts for Virtual Appliance Preparation 12/34

Page 13: Dos and Don’ts for Virtual Appliance Preparationindico.egi.eu/event/2544/contributions/5163/attachments/5168/6189/egi...Dos and Don’ts for Virtual Appliance Preparation BorisParák1

Insert footer here

VA Preparation Basics

Nov 10, 2015 Dos and Don’ts for Virtual Appliance Preparation 13/34

Page 14: Dos and Don’ts for Virtual Appliance Preparationindico.egi.eu/event/2544/contributions/5163/attachments/5168/6189/egi...Dos and Don’ts for Virtual Appliance Preparation BorisParák1

Insert footer here

Think First

• Why am I doing this? Do I have to?• How can I distribute my application in the best way possible?• Which operating system should I choose?• Do I know how to configure the chosen operating system?• How should I (pre-)configure my application?• Can I easily adjust my application’s configuration for each instance?

Nov 10, 2015 Dos and Don’ts for Virtual Appliance Preparation 14/34

Page 15: Dos and Don’ts for Virtual Appliance Preparationindico.egi.eu/event/2544/contributions/5163/attachments/5168/6189/egi...Dos and Don’ts for Virtual Appliance Preparation BorisParák1

Insert footer here

Installation

General:• minimalistic OS installation• basic configuration for remote access• contextualization support (e.g., cloud-init)• guest utilities or agents, not good for portability• integration with 3rd party services

Linux-specific:• no GUI, no desktop applications, no network managers• up-to-date kernel & modules, ideally v3+• avoid complex partition layouts• make sure /etc/fstab and grub use labels or UUIDs

Nov 10, 2015 Dos and Don’ts for Virtual Appliance Preparation 15/34

Page 16: Dos and Don’ts for Virtual Appliance Preparationindico.egi.eu/event/2544/contributions/5163/attachments/5168/6189/egi...Dos and Don’ts for Virtual Appliance Preparation BorisParák1

Insert footer here

Contextualization

• every appliance must support contextualization→ metadata-based configuration on boot

• cloud-init is the de facto standard• YAML-based configuration file containing user data• helps with credentials, user accounts, mounts, package installation,writing files, adding repositories, . . .

• do NOT forget to remove /var/lib/cloud before distributingthe appliance

• see https://cloudinit.readthedocs.org/en/latest/

Nov 10, 2015 Dos and Don’ts for Virtual Appliance Preparation 16/34

Page 17: Dos and Don’ts for Virtual Appliance Preparationindico.egi.eu/event/2544/contributions/5163/attachments/5168/6189/egi...Dos and Don’ts for Virtual Appliance Preparation BorisParák1

Insert footer here

Configuration

• always keep in mind “less is better”• no unnecessary services or user accounts• be careful with publicly visible listeners• no password-based authentication, if possible• no pre-installed credentials or “backdoor” utils• let contextualization do the work

Nov 10, 2015 Dos and Don’ts for Virtual Appliance Preparation 17/34

Page 18: Dos and Don’ts for Virtual Appliance Preparationindico.egi.eu/event/2544/contributions/5163/attachments/5168/6189/egi...Dos and Don’ts for Virtual Appliance Preparation BorisParák1

Insert footer here

Security

• minimize the attack surface for running instances• always use an up-to-date system, enable security updates if possible• do NOT use plain authentication methods• always check your newly created appliance

• nmap, netstat, lynis, ssh• /etc/passwd, /etc/shadow, /etc/sudoers• /etc/ssh/sshd_config, ~/.ssh/authorized_keys

• think about runtime patch status monitoring→ Pakiti http://pakiti.sourceforge.net/

Nov 10, 2015 Dos and Don’ts for Virtual Appliance Preparation 18/34

Page 19: Dos and Don’ts for Virtual Appliance Preparationindico.egi.eu/event/2544/contributions/5163/attachments/5168/6189/egi...Dos and Don’ts for Virtual Appliance Preparation BorisParák1

Insert footer here

Security

$ apt-get update && apt-get dist-upgrade# or$ yum update

$ ssh -o PreferredAuthentications=none localhost

$ lynis audit system# or$ lynis --auditor system

$ nmap -sS localhost

$ netstat -tapn$ netstat -uapn

Nov 10, 2015 Dos and Don’ts for Virtual Appliance Preparation 19/34

Page 20: Dos and Don’ts for Virtual Appliance Preparationindico.egi.eu/event/2544/contributions/5163/attachments/5168/6189/egi...Dos and Don’ts for Virtual Appliance Preparation BorisParák1

Insert footer here

Image & Appliance Formats

• every virtualization platform uses a different native disk image format• commonly used: qcow(2), vdi, vmdk, raw• compression optional, reduces size → reduces performance• on top of that, appliance “envelopes” → OVF/OVA• Open Virtualization Format → Open Virtual Appliance

• OVF appliance descriptor (metadata)• disk image(s), usually vmdk

Nov 10, 2015 Dos and Don’ts for Virtual Appliance Preparation 20/34

Page 21: Dos and Don’ts for Virtual Appliance Preparationindico.egi.eu/event/2544/contributions/5163/attachments/5168/6189/egi...Dos and Don’ts for Virtual Appliance Preparation BorisParák1

Insert footer here

Distribution w/ The EGI AppDB

→ Demo Later

Nov 10, 2015 Dos and Don’ts for Virtual Appliance Preparation 21/34

Page 22: Dos and Don’ts for Virtual Appliance Preparationindico.egi.eu/event/2544/contributions/5163/attachments/5168/6189/egi...Dos and Don’ts for Virtual Appliance Preparation BorisParák1

Insert footer here

Advanced Topics

Nov 10, 2015 Dos and Don’ts for Virtual Appliance Preparation 22/34

Page 23: Dos and Don’ts for Virtual Appliance Preparationindico.egi.eu/event/2544/contributions/5163/attachments/5168/6189/egi...Dos and Don’ts for Virtual Appliance Preparation BorisParák1

Insert footer here

Format Conversion

Tools:• QEMU utilities (for disk image conversion)• VMWare OVFTool (for OVF/OVA transformation)

## convert formats$ qemu-img convert -f vmdk -O qcow2 Appliance.vmdk Appliance.qcow2$ qemu-img convert -f qcow2 -O vmdk Appliance.qcow2 Appliance.vmdk$ qemu-img convert -f qcow2 -O raw Appliance.qcow2 Appliance.raw

## package$ ovftool MyFirstAppliance.ovf MyFirstAppliance.ova

## unpack$ tar xvf MyFirstAppliance.ova

Nov 10, 2015 Dos and Don’ts for Virtual Appliance Preparation 23/34

Page 24: Dos and Don’ts for Virtual Appliance Preparationindico.egi.eu/event/2544/contributions/5163/attachments/5168/6189/egi...Dos and Don’ts for Virtual Appliance Preparation BorisParák1

Insert footer here

Portability

• changing hardware (CPU, memory, PCI devices)→ most systems can cope with that

• dynamically adding/removing disks→ most systems can cope with that

• dynamically adding/removing NICs→ disable udev rules generator

• different network topologies→ most systems can cope with that

• different methods of contextualization→ cloud-init v0.7.5+

• different supported appliance/image formats→ use one of the most popular formats and hope for the best

Nov 10, 2015 Dos and Don’ts for Virtual Appliance Preparation 24/34

Page 25: Dos and Don’ts for Virtual Appliance Preparationindico.egi.eu/event/2544/contributions/5163/attachments/5168/6189/egi...Dos and Don’ts for Virtual Appliance Preparation BorisParák1

Insert footer here

Automation

• identify repetitive tasks, don’t perform them manually• good places to start looking

• OS installation (building)• configuration (provisioning)• publishing appliances (distribution)

• automation saves your time and makes the process more reliable

Nov 10, 2015 Dos and Don’ts for Virtual Appliance Preparation 25/34

Page 26: Dos and Don’ts for Virtual Appliance Preparationindico.egi.eu/event/2544/contributions/5163/attachments/5168/6189/egi...Dos and Don’ts for Virtual Appliance Preparation BorisParák1

Insert footer here

Automating Builds

Tools:• Packer → https://www.packer.io/• VeeWee → https://github.com/jedi4ever/veewee

Sample Packer Templates:• https://github.com/shiguredo/packer-templates• https://github.com/joefitzgerald/packer-windows• Notice: builders, provisioners, post-processors

$ packer build template.json

Nov 10, 2015 Dos and Don’ts for Virtual Appliance Preparation 26/34

Page 27: Dos and Don’ts for Virtual Appliance Preparationindico.egi.eu/event/2544/contributions/5163/attachments/5168/6189/egi...Dos and Don’ts for Virtual Appliance Preparation BorisParák1

Insert footer here

Automating Provisioning

• usual suspects• scripting (shell, powershell, . . . )• ansible, saltstack, chef• puppet

• select one based on the complexity of your application• use in Packer provisioners

Nov 10, 2015 Dos and Don’ts for Virtual Appliance Preparation 27/34

Page 28: Dos and Don’ts for Virtual Appliance Preparationindico.egi.eu/event/2544/contributions/5163/attachments/5168/6189/egi...Dos and Don’ts for Virtual Appliance Preparation BorisParák1

Insert footer here

Automating Distribution

???

EGI Federated Cloud:• The EGI AppDB (w/ custom built tools)

Out There:• Project Raindrops http://projectraindrops.net/• Atlas by HashiCorp https://atlas.hashicorp.com/

Nov 10, 2015 Dos and Don’ts for Virtual Appliance Preparation 28/34

Page 29: Dos and Don’ts for Virtual Appliance Preparationindico.egi.eu/event/2544/contributions/5163/attachments/5168/6189/egi...Dos and Don’ts for Virtual Appliance Preparation BorisParák1

Insert footer here

The EGI AppDB

Nov 10, 2015 Dos and Don’ts for Virtual Appliance Preparation 29/34

Page 30: Dos and Don’ts for Virtual Appliance Preparationindico.egi.eu/event/2544/contributions/5163/attachments/5168/6189/egi...Dos and Don’ts for Virtual Appliance Preparation BorisParák1

Insert footer here

Quick AppDB Summary

1. SSO Account Registration2. First AppDB Login (w/ SSO account)3. Quick AppDB Orientation4. Registering a VA5. Asking for VO Endorsement

Nov 10, 2015 Dos and Don’ts for Virtual Appliance Preparation 30/34

Page 31: Dos and Don’ts for Virtual Appliance Preparationindico.egi.eu/event/2544/contributions/5163/attachments/5168/6189/egi...Dos and Don’ts for Virtual Appliance Preparation BorisParák1

Insert footer here

Quick AppDB Summary

Example VA: https://goo.gl/WqEKsq

Register VA: https://goo.gl/2cCCjI

Populate VA: https://goo.gl/YikgZN

Notify VO(s): https://goo.gl/OxUTz7

Nov 10, 2015 Dos and Don’ts for Virtual Appliance Preparation 31/34

Page 32: Dos and Don’ts for Virtual Appliance Preparationindico.egi.eu/event/2544/contributions/5163/attachments/5168/6189/egi...Dos and Don’ts for Virtual Appliance Preparation BorisParák1

Insert footer here

Overall Summary(Credit: Toronja Azul via Creative Commons)

. . . and automate . . . A lot!

Nov 10, 2015 Dos and Don’ts for Virtual Appliance Preparation 32/34

Page 33: Dos and Don’ts for Virtual Appliance Preparationindico.egi.eu/event/2544/contributions/5163/attachments/5168/6189/egi...Dos and Don’ts for Virtual Appliance Preparation BorisParák1

Insert footer here

The End

– That’s All Folks! –

. . .

Nov 10, 2015 Dos and Don’ts for Virtual Appliance Preparation 33/34

Page 34: Dos and Don’ts for Virtual Appliance Preparationindico.egi.eu/event/2544/contributions/5163/attachments/5168/6189/egi...Dos and Don’ts for Virtual Appliance Preparation BorisParák1

Insert footer here

Contact Info

Do you have any questions?• ask NOW!• ask us directly at [email protected] or [email protected]

• send your questions to [email protected]

Nov 10, 2015 Dos and Don’ts for Virtual Appliance Preparation 34/34