Confirmed users
396
edits
LesOrchard (talk | contribs) |
(→Building a plain VM: OVA explained) |
||
| (9 intermediate revisions by 4 users not shown) | |||
| Line 4: | Line 4: | ||
of our websites. That way, a new contributor can focus on contributing, | of our websites. That way, a new contributor can focus on contributing, | ||
rather than learning how to install and configure a website first. | rather than learning how to install and configure a website first. | ||
A second use case is continuous integration against a VM hosted environment. As | |||
a first stab, we're using a vagrant based VM. We'll refer to this as CI use case below. | |||
== Open questions == | == Open questions == | ||
| Line 15: | Line 18: | ||
** How would this work? Seems resource intensive | ** How would this work? Seems resource intensive | ||
** See also: {{bug|670471}} - [tracker] set up jenkins job to export socorro vagrant VM | ** See also: {{bug|670471}} - [tracker] set up jenkins job to export socorro vagrant VM | ||
=== Is Vagrant the right tool (vs libcloud)? === | |||
* Seems like I'm fighting against some of the core Vagrant features, eg: | |||
** Shared folder from Host to VM | |||
** Custom box format rather than straight VM appliance or image | |||
** For CI case, we want vanilla Vagrant behaviors, but libcloud thingie would work too | |||
* [http://libcloud.apache.org/getting-started.html libcloud]+Puppet better than Vagrant+Puppet? | |||
** libcloud could [https://bitbucket.org/ianb/libcloud-vbox target VirtualBox] locally and Rackspace / Amazon EC2 remotely | |||
** Generate self-contained VMs with source included | |||
=== Vagrantfile as part of project, or separate repo? === | === Vagrantfile as part of project, or separate repo? === | ||
| Line 36: | Line 48: | ||
*** eg. <code>~/.gitconfig</code> with contributor's name and email, etc | *** eg. <code>~/.gitconfig</code> with contributor's name and email, etc | ||
** Need instructions advising a <code>git pull</code> after initial boot-up | ** Need instructions advising a <code>git pull</code> after initial boot-up | ||
** Vagrant defaults are probably fine for CI use case | |||
=== Blank slate content === | === Blank slate content === | ||
* See also: https://landfill.addons.allizom.org/db/ | |||
* Need to import / generate some sample data / content to make the site useful | * Need to import / generate some sample data / content to make the site useful | ||
* Anonymized export from prod? | * Anonymized export from prod? | ||
| Line 45: | Line 59: | ||
* Synthetic test data | * Synthetic test data | ||
** Need to hand-maintain | ** Need to hand-maintain | ||
** CI use case provides test data | |||
=== Local hardware vs Rackspace VM? === | |||
* Running a VM image oneself needs a capable machine | |||
** Might not be an option for a MacBook Air or netbook owner | |||
* Running a VM on Rackspace costs $$$ | |||
** How to get an image loaded into a Rackspace VM? | |||
* CI use case requires Jenkins server to be able to run Vagrant | |||
** Finding the right mix of CentOS / Ruby / vagrant gem / VirtualBox is challanging | |||
== Participating sites == | == Participating sites == | ||
* AMO? | * AMO? | ||
* SUMO | * SUMO | ||
** https://github.com/aclark4life/kitsune-vagrant | |||
* Socorro | * Socorro | ||
* Mozillians | * Mozillians | ||
* MDN? | * MDN? | ||
** Need proper hosting | ** Need proper hosting | ||
| Line 59: | Line 83: | ||
* AUS | * AUS | ||
* Graphserver | * Graphserver | ||
* sasl-browserid | |||
== Maintaining VM images == | == Maintaining VM images == | ||
| Line 66: | Line 91: | ||
Jenkins. | Jenkins. | ||
=== Building a plain VM === | |||
Here's the general process for building a plain VM by hand, without using Vagrant: | |||
* Grab an ISO of your base OS. (eg. MDN is using CentOS) | |||
* Create a VirtualBox VM. | |||
* Install the bare minimum of server packages. | |||
** You might want to export an OVA (Open Virtualization Format archive) of this base install for future from-scratch builds. | |||
* Create a [https://raw.github.com/mozilla/kuma/HEAD/scripts/rackspace-bootstrap.sh bootstrap script] that gets Puppet installed and prepares a git clone of the project's source | |||
* As root, run <code>puppet apply /vagrant/puppet/manifests/dev-vagrant.pp</code> (or whatever you named it) | |||
* Once Puppet has finished, verify that the project is working. | |||
* Shutdown the VM and export an OVA | |||
* Upload the exported appliance to hosting | |||
With some more thinking, much or most of the above could be automated using libcloud or VBoxManage | |||
=== Building a Vagrant box === | |||
Needs work: | |||
* Use <code>vagrant destroy && vagrant up</code> to spin up a VM in VirtualBox | * Use <code>vagrant destroy && vagrant up</code> to spin up a VM in VirtualBox | ||
| Line 88: | Line 131: | ||
== Hints, tips, HOWTOs == | == Hints, tips, HOWTOs == | ||
===Guest Machine Loses Internet Access=== | |||
If your host machine changes network address while the guest machine is up, the guest machine will lose 'net access. Restart the guest machine to fix. | |||