Page MenuHomePhabricator

[drydock/libvirt] Implement a Drydock blueprint for libvirt-based hosts
AbandonedPublic

Authored by hach-que on Apr 4 2015, 4:46 PM.
Tags
None
Referenced Files
Unknown Object (File)
Wed, Apr 3, 5:19 AM
Unknown Object (File)
Mon, Apr 1, 11:48 PM
Unknown Object (File)
Feb 18 2024, 9:36 AM
Unknown Object (File)
Feb 2 2024, 9:23 PM
Unknown Object (File)
Dec 24 2023, 2:56 PM
Unknown Object (File)
Dec 22 2023, 5:28 AM
Unknown Object (File)
Dec 21 2023, 12:47 PM
Unknown Object (File)
Nov 30 2023, 1:47 AM
Subscribers

Details

Reviewers
epriestley
Group Reviewers
Blessed Reviewers
Maniphest Tasks
T2015: Implement Drydock
Summary

Ref T2015. This implements support for allocating build hosts on a remote machine with libvirt. It basically supports dynamic allocation of virtual machines on your own infrastructure (in contrast to AWS).

It's not too fiddly to get working; there's mainly some things around how host images are prepared (since you don't have AWS to do it for you). Specifically when preparing Windows build images, you need to release the DHCP lease and stop the network service before shutting down the machine you're going to use as the base image, by running the following commands at an administrative command prompt:

ipconfig /release
net dhcp stop

The network topology also needs to be configured in a 'Routed' configuration (not NAT).

Test Plan

This has only been tested with Windows build agents.

Diff Detail

Repository
rP Phabricator
Branch
hachque-reconstructed
Lint
Lint Passed
Unit
Tests Skipped
Build Status
Buildable 7797
Build 8626: [Placeholder Plan] Wait for 30 Seconds
Build 8625: arc lint + arc unit

Event Timeline

hach-que retitled this revision from to Implement a Drydock blueprint for libvirt-based hosts.
hach-que updated this object.
hach-que edited the test plan for this revision. (Show Details)
hach-que added a reviewer: epriestley.
hach-que edited edge metadata.

Fix various issues:

  • Ignore errors when closing libvirt VMs
  • Fix missing parenthesis
  • Support SSH commands over libvirt proxy
  • Remove leading test prefixes
  • Lookup IP address on each lease in case hosts obtain new DHCP leases
epriestley edited edge metadata.

Let's get DrydockPreallocatedHostBlueprintImplementation stable in production before adding a bunch of other host blueprints.

This is also probably not something we necessarily want in the upstream since I've never heard of libvirt before. I'd rather just leave this more esoteric stuff up to the community.

This revision now requires changes to proceed.Aug 8 2015, 6:54 PM

To clarify, libvirt is the common API for KVM / Xen / VirtualBox / etc. It abstracts allocation of virtual machines on non-cloud services (so when people have their own hardware or datacentre they want to manage virtual machines on, libvirt is a hypervisor-independent and platform-independent way of doing that).

hach-que retitled this revision from Implement a Drydock blueprint for libvirt-based hosts to [drydock/libvirt] Implement a Drydock blueprint for libvirt-based hosts.Aug 24 2015, 1:40 PM
hach-que edited edge metadata.
hach-que edited edge metadata.

Rebase on master