When adopting IaaS cloud solutions, one of the biggest challenges will be template management. Creating that first template can easily be more challenging that deploying the cloud software itself. In this presentation two options are presented for template creation, using a kickstart file or cloning a running VM with Packer from packer.io as the core framework.
This presentation was delivered at CloudStack Days 2015 in Austin Texas. Two demos were given. The first demo used an existing XenServer environment to create a golden master from ISO and kickstart file, then automatically upload it to a CloudStack management server for deployment. The second demo cloned a running VM and created a template which was then uploaded to CloudStack. In the case of the running VM, migration occurred without any user interruption. The VM in question was a CentOS 7 image, and the hypervisor for both source infrastructure and CloudStack compute was XenServer based
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Using Packer to Migrate XenServer Infrastructure to CloudStack
1. CloudStack Day – Austin 2015
Clone VMs to CloudStack templates without downtime
Simplifying Template Management Using Packer
2. #whoami
Name: Tim Mackey
Current roles: XenServer Community Manager and Evangelist; occasional coder
Cool things I’ve done
• Designed laser communication systems
• Early designer of retail self-checkout machines
• Embedded special relativity algorithms into industrial control system
Find me
• Twitter: @XenServerArmy
• SlideShare: slideshare.net/TimMackey
• LinkedIn: https://www.linkedin.com/in/mackeytim
• GitHub: https://github.com/xenserverarmy
3. Define “VM Migration”
What people think
• VM moves from source host to destination
Why it doesn’t work “to the cloud”
• Incompatible host micro-architecture
• Lack of control over networking
• Do we really want a VM_HALT?
• Long distance ARP
Really need “template migration”
Template
Template
Template
6. Template Management in CloudStack
My first template
• Existing VM or appliance
• Need to have HTTP server
• Set secstorage.allowed.internal.sites if private cloud
Creation options
• Register template in UI
• Templates Register Template
• Upload using registerTemplate API
• http://cloudstack.apache.org/docs/api/apidocs-4.5/user/registerTemplate.html
• Clone from CloudStack instance
• Stop instance View Volumes Create Template
7. Key Template Attributes
Obvious
• Hypervisor
• Operating system type
• Zone
Not so obvious
• IsDynamicallyScalable Hypervisor tools
• PasswordEnabled CloudStack sets root pwd
• SSHKeyEnabled Can post configure
• RequiresHVM Defines virtualization mode
8. VM Password and SSH Key Management Challenges
Obtain information from VR
• VR is obtained from leases
• Scripts use wget
• Assumes sysinit not systemd
What to fix – varies by OS?
• CentOS 7 defaults to curl not wget
• CentOS 7 is systemd need unit files
• CentOS 7 may use NetworkManager
9. Core Packer Concepts
Builder
• Responsible for creation of VM image
• Connects to virtual infrastructure
• Default supports vSphere, OpenStack, AMI, VirtualBox, QEMU, Docker
• No XenServer needed to fix that ;)
Provisioner
• Runs post-build activities
Post-Processor
• Takes VM image artifact and transforms it
• In our case upload to CloudStack needed to fix that too ;)
10. Key activities occurring during template build from ISO
1. Download ISO into ISO SR (if not already present)
2. Attach ISO to VM object and boot
3. Instruct installer to user kickstart file
4. Installer does its thing and shuts VM down
5. Upon shutdown, swap installer ISO for XenServer tools ISO
6. Install ISO and shutdown
7. Detect shutdown and run Provisioners
8. Export and import into CloudStack as template
12. xenserver-iso Builder
Creates a new XenServer image from an ISO
Key parameters
• Host connection
• ISO location
• Boot commands
Artifact output type
• xva, vdi_raw, vhd, vhd_raw
Known limitations
• Linux only (uses SSH)
• Requires NFS shared storage
14. xenserver-vm builder
Creates a new XenServer image from existing running VM
Key parameters
• Host connection
• VM name
• Cleanse command
• Cleanse scripts
Artifact output type
• xva, vdi_raw, vhd, vhd_raw
Known limitations
• Linux only (uses SSH)
• Requires NFS shared storage
15. cloudstack-xenserver post-processor
Creates a new CloudStack template from xenserver builders
Key parameters
• CloudStack API keys
• Zone, OS type
• Script configuration
Artifact input
• xenserver-iso, xenserver-vm
16. Key activities occurring during live clone
1. Snapshot of existing VM to minimize downtime
2. Detect if VM is PV or HVM and flag accordingly
3. Copy snapshot to NFS SR to collapse snapshot chain
4. Connect primary network to HIMN to ensure no machine collision
5. Use VNC to reconfigure network and connect to XenServer DHCP
6. Copy and run cleanse scripts which shutdown clone when complete
7. Detect shutdown and run Provisioners
8. Export and import into CloudStack as template