22 Commits

Author SHA1 Message Date
Zuul
26d0d53ea5 Merge "Adds iPXE UEFI support to Multi Node AIO" 2018-08-27 21:38:48 +00:00
Jesse Pretorius
42189e272f MNAIO: Use discard option for all mount points
Using the discard option for all mount points ensures
that the deletes actually release the blocks on the disk.
This ensures that SSD performance is optimised and that
file-backed images are kept as small as possible.

Change-Id: I648cbaca56d75e355cf6c8af01e2e3ad20dfc398
2018-08-23 18:57:02 +01:00
Jesse Pretorius
f3575be76a MNAIO: Move to using SCSI controller for TRIM support
When using file-backed storage, or SSD storage, any erasing
done in the VM does not actually clear up the space. By using
the virtio-scsi controller the VM is able to use TRIM to clear
any blocks which are deleted.

This also allows us to use fstrim to reduce the size of the
qemu files before we save them for later re-use.

Change-Id: Ia9001522ce054ee9f8a6dd38270da3e3fd039813
2018-08-23 13:53:20 +01:00
Antony Messerli
c3e04a5106 Adds Support for MNAIO CentOS 7 Environment
* Adds support for provisioning a Multi Node AIO using
  CentOS 7.
* Cleans up older MNAIO/Compute/Infra image configs
* Increases LB/Logging/Swift VM ram to allow for CentOS rootfs
  to load into RAM. (1GB to 2GB)
* Uses systemd-network networking for configuring network/bridges
* Adds keymap to kvm configuration to alleviate keyboard issues in
  virt-manager
Change-Id: I54d903e7c1c70882e8b20a9cef4eafb42be46770
2018-07-24 09:31:11 -05:00
d34dh0r53
358be0158e Adjust flat networking
This adjusts the VM networking to only create the additional veth pair for the
flat bridge.  Without this the other bridges can get IPs other than those
statically assigned by the DHCP server.  This also adjusts the range to exclude
the statically assigned ranges.

Change-Id: I289e808b5acb68b1c51e05cbe7d914077c20ba1a
2018-06-01 15:40:44 -05:00
d34dh0r53
f856f3bfaf Fix MNAIO Flat Networking
In order to get flat networking working correctly we need to create
a new veth pair that neutron can use on the host machines.  Neutron can
take the veth end of this pair for the brq bridge while the other end
remains in br-flat allowing communication back to the VM.  This also
expands the DHCP range for the veth pairs and changes the
host_bind_override to use the new veth.

Change-Id: I9cd161599ba659890142143d4718420d680d7dca
2018-05-17 14:21:21 -05:00
Antony Messerli
bc611698c8 Adds iPXE UEFI support to Multi Node AIO
Now expects a base URL that looks for iPXE files.  Uses
boot.ipxe.org by default but the base URL can be overridden to
point to custom compiled versions of ipxe.lkrn, ipxe.efi,
and undionly.kpxe.

Change-Id: Ib2c10c4817eaf9a78326f3de00aed0c16f8df776
2018-03-26 13:29:06 -05:00
Kevin Carter
3f6ec2ffac
Update mnaio to allow deployers to use nspawn
This change updates the preseed files and the default
openstack-user-config file so that deployers can use and test nspawn
type containers using the in-built automation.

Change-Id: I2ec3bd284540fa9f79490a350f016ca594fb5f98
Signed-off-by: Kevin Carter <kevin.carter@rackspace.com>
2018-02-14 16:38:57 -06:00
Antony Messerli
f00c6bf215 Replace pxelinux with iPXE support in MNAIO
Adds support for iPXE scripting.  Allows for the
operator to specify a remote iPXE kernel to pull in
newer iPXE kernel features and specify a remote
default iPXE script for customizing the multi node
for other types of deployments.

Switches the installations to use netboot installer kernels
instead of ISO retrival and extraction.

Restructures directory to allow for future multi node configs
instead of just debian based installs.

Change-Id: Ie97f021dbd33ad3d852132b0b2850f54d4e13476
2018-02-07 18:20:00 -06:00
Shannon Mitchell
64acebe745 Fix tftpd-hpa configuration issues
This includes:
    - removing two bad /etc/default/tftpd-hpa tasks
    - relocating the good /etc/default/tftpd-hpa task
      to the pre-tasks area of the broken configs.
    - Removing OPTIONS from /etc/default/tftpd-hpa as they
      were causing duplicate -s config errors. The -l is
      taken care of in the init script as well.

Change-Id: Ie474fceb116c921a373f5711194e222594095e51
Closes-Bug: 1746354
2018-01-30 15:38:57 -06:00
Antony Messerli
e3a1d1fcb9 Allows for the VMs preseed mirror to be overridden
In the case the upstream mirror might be down or there might be a
faster mirror available, this allows you to specify the desired
Ubuntu mirror and base directory.

Change-Id: I49c33b9e4e107990f2abb418b859fd280ba91107
2017-12-13 16:39:06 -06:00
Kevin Carter
2f503c228e
Tune-up the MNAIO for physical and virtual hosts
This change makes it possible to deploy ACNG within a physical
host NOT automatically tied to an MNAIO installation. This also
adds an infra preseed file which can be used to provision physical
hosts.

By default the domain name is now passed into the server boot params
which is useful when setting up an environment in support of
RFC-1034/5.

Ubuntu 16.04 has an issue with the options "quiet splash" being passed
in which cause it to have no usable console. See [Related-Issue] for
more.

Related-Issue: #1656605
Change-Id: I731dfb70e4b5d676d8c22082da77c0d22d5afb58
Signed-off-by: Kevin Carter <kevin.carter@rackspace.com>
2017-10-16 00:42:32 -05:00
Kevin Carter
be1d365ef5
allow a default kernel to be set
Change-Id: I6cf0cf918df6c79757b283333f5a687ff20a46bd
2017-10-09 22:28:16 -05:00
Kevin Carter
d0cb21c139
create specific preseed for vm-compute
Change-Id: I8dc124265774fae6f754e75f5936210c222fc93d
Signed-off-by: Kevin Carter <kevin.carter@rackspace.com>
2017-10-09 18:46:19 -05:00
Matt Thompson
ce29ea23d1 Updates for Trusty VMs
Currently, attempting to use Trusty (14.04) VMs causes VMs to not
provision correctly due to a grub-install error.  With respect to this
specific issue, this commit updates vm.preseed.j2 by removing some
grub-installer options which were not present before the ansible
rewrite.

Secondly, with that change in place, VMs do not come online on their
10.0.236 addresses as something is overwriting
/etc/networking/interfaces, which wipes out the source of the
/etc/network/interfaces.d directory.  Bug [1] seems to indicate this
is in fact an issue and has been resolved, however attempts at using
this preseed option (netcfg/target_network_config) were not successful.
As a workaround, we simply chattr +i the interfaces file in
vm-post-install-script.sh.j2, and then remove the attr in
deploy-vms.yml when the instance is up an accessible.

[1] https://bugs.launchpad.net/ubuntu/+source/netcfg/+bug/1361902

Change-Id: I12d0c5108d1df0ab02b69d1b8cdb271a02999602
2017-09-26 08:52:38 -04:00
Kevin Carter
67161e5d81
General improvements
Adding even more dynamic user config options and a compute preseed.

Change-Id: Ieccbd61a45a77b7dff9e228fc6fdaf92df852abb
Signed-off-by: Kevin Carter <kevin.carter@rackspace.com>
2017-08-17 09:16:20 -05:00
Kevin Carter
c678e83275
General improvements
* added ip alias for interfaces

* Update settings and improve vm performance

* Change the VG name in VMs. The VG name was changed so that the volume
  which is being used by VMs can be mounted on a physical host, and not
  conflict, with standard volume group naming. This is usful when a VM
  is DOA and a deployer wants to disect the instance.

Change-Id: If4d10165fe08f82400772ca88f8490b01bad5cf8
Signed-off-by: Kevin Carter <kevin.carter@rackspace.com>
2017-08-14 10:35:12 -05:00
Kevin Carter
cfc76ded4a
Convert vars in files to host_vars
This change allows the MNAIO to really be used as a stand alone kick
system which has the potential to be developed into a stand alone
project. At the very least this change improves playbook performance
by scoping variables.

The inventory has been converted into a typical Ansible inventory and
the "servers" used in the MNAIO are now simply host_vars
which will trigger specific VM builds when instructed to do so. This
gives the MNAIO the ability to serve as a stand alone kick system which
could be used for physical hosts as well as MNAIO testing all through
the same basic set of playbooks. Should a deployer want to use this with
physical servers they'd need to do nothing more than define their basic
inventory and where the the required pieces of infrastructure needed to
PXE boot their machines.

Change-Id: I6c47e02ecfbe8ee7533e77b11041785db485a1a9
Signed-off-by: Kevin Carter <kevin.carter@rackspace.com>
2017-07-31 23:31:13 -05:00
Kevin Carter
9abaeba8c8
move deploy node to infra1 and make a LB node
Sadly the log node does not have enough ram to run a full ansible run.
Ansible 2.x requires more ram than one would expect, especially when the
inventory gets large. this change moves the deploy node to infra1 as it
will already have the ram needed to run the playbooks. Additionally the
container storage for infra nodes was too small which forces builds into
error. The default storage for VMs has been set to 90GiB each and the
preseed will create a logical volume for VMs mounted at /var/lib/lxc.

While the limited ram works well for the VMs and within a running
deployment of OSA, ansible-playbook is subject to crash like so:

  An exception occurred during task execution. To see the full traceback,
  use -vvv. The error was: OSError: [Errno 12] Cannot allocate memory
  fatal: [infra1_cinder_api_container-b38b47ea]: FAILED! =>
  {"failed": true, "msg": "Unexpected failure during module execution.", "stdout": ""}

So infra nodes have had the memory constraint raised to 8GiB

Change-Id: I7175ea92f663dfef5966532cfc0b4beaadb9eb03
Signed-off-by: Kevin Carter <kevin.carter@rackspace.com>
2017-07-29 15:52:36 -05:00
Kevin Carter
3f17e2b5db
add acng to the host system and preseeds
This change ensures that the VMs and host systems cache apt packges
locally which will speed up the boot and deployment process.

Change-Id: I234e338b9f1b9f11ff1e81ede8c5717e033fdad8
Signed-off-by: Kevin Carter <kevin.carter@rackspace.com>
2017-07-28 18:53:57 -05:00
Kevin Carter
c3800224b0
move drive layout to deploy-vms and fix deploy-osa tags/tasks
Change-Id: Iaee4c3683d798320099dec77286e6fac7a10bee8
Signed-off-by: Kevin Carter <kevin.carter@rackspace.com>
2017-07-28 14:49:27 -05:00
Kevin Carter
a94f0a9026 Combine our two multi-node-aio processes into one
The original mnaio was built using a lot of bash and was tailored
specifically for ubuntu 14.04. The new mnaio was built using a mix of
bash and ansible and was tailored specifically for ubuntu 16.04. This
patch takes the two code bases and combines the best things from each
method and wraps it up into a single code path all written using ansible
playbooks and basic variables.

While underlying system has changed the bash environment variable syntax
for overrides remains the same. This allows users to continue with what
has become their normal work-flow while leveraging the new structure and
capabilities.

High level overview:
  * The general performance of the VMs running within the MNAIO will now
    be a lot better. Before the VMs were built within QCOW2 containers,
    while this was flexible and portable it was slower. The new
    capabilities will use RAW logical volumes and native IO.
  * New repo management starts with preseeds and allows the user to pin
    to specific repositories without having to worry about flipping them
    post build.
  * CPU overhead will be a lot less. The old VM system used an
    un-reasonable number of processors per VM which directly translated
    to sockets. The new system will use cores and a single socket
    allowing for generally better VM performance with a lot less
    overhead and resource contention on the host.
  * Memory consumption has been greatly reduced. Each VM is now
    following the memory restrictions we'd find in the gate, as a MAX.
    Most of the VMs are using 1 - 2 GiB of RAM which should be more than
    enough for our purposes.

Overall the deployment process is simpler and more flexible and will
work on both trusty and xenial out of the box with the hope to bring
centos7 and suse into the fold some time in the future.

Change-Id: Idc8924452c481b08fd3b9362efa32d10d1b8f707
Signed-off-by: Kevin Carter <kevin.carter@rackspace.com>
2017-07-28 15:35:23 +00:00