On Tue, Oct 17, 2017 at 06:14:35PM +0200, Pavel Hrdina wrote:
On Tue, Oct 17, 2017 at 05:04:57PM +0100, Daniel P. Berrange wrote:
> On Tue, Oct 17, 2017 at 05:57:30PM +0200, Pavel Hrdina wrote:
> > On Mon, Oct 16, 2017 at 06:02:06PM +0200, Andrea Bolognani wrote:
> > > The 'manage' tool can now be used to install most known guests
> > > without requiring user interaction.
> > >
> > > Signed-off-by: Andrea Bolognani <abologna(a)redhat.com>
> > > ---
> > > ansible/group_vars/all/install.yml | 10 +++
> > > ansible/host_vars/libvirt-centos-6/install.yml | 3 +
> > > ansible/host_vars/libvirt-centos-7/install.yml | 3 +
> > > ansible/host_vars/libvirt-debian-8/install.yml | 3 +
> > > ansible/host_vars/libvirt-debian-9/install.yml | 3 +
> > > ansible/host_vars/libvirt-fedora-25/install.yml | 3 +
> > > ansible/host_vars/libvirt-fedora-26/install.yml | 3 +
> > > .../host_vars/libvirt-fedora-rawhide/install.yml | 3 +
> > > ansible/host_vars/libvirt-ubuntu-12/install.yml | 3 +
> > > ansible/host_vars/libvirt-ubuntu-14/install.yml | 3 +
> > > ansible/host_vars/libvirt-ubuntu-16/install.yml | 3 +
> > > ansible/kickstart.cfg | 60 +++++++++++++++
> > > ansible/manage | 74
+++++++++++++++++++
> > > ansible/preseed.cfg | 85
++++++++++++++++++++++
> > > 14 files changed, 259 insertions(+)
> > > create mode 100644 ansible/group_vars/all/install.yml
> > > create mode 100644 ansible/host_vars/libvirt-centos-6/install.yml
> > > create mode 100644 ansible/host_vars/libvirt-centos-7/install.yml
> > > create mode 100644 ansible/host_vars/libvirt-debian-8/install.yml
> > > create mode 100644 ansible/host_vars/libvirt-debian-9/install.yml
> > > create mode 100644 ansible/host_vars/libvirt-fedora-25/install.yml
> > > create mode 100644 ansible/host_vars/libvirt-fedora-26/install.yml
> > > create mode 100644 ansible/host_vars/libvirt-fedora-rawhide/install.yml
> >
> > I wouldn't include Ubuntu related things. Yes, we use travis where they
> > have Ubuntu nodes, but this is jenkins-ci repository where we don't use
> > Ubuntu at all.
> >
> > > create mode 100644 ansible/host_vars/libvirt-ubuntu-12/install.yml
> > > create mode 100644 ansible/host_vars/libvirt-ubuntu-14/install.yml
> > > create mode 100644 ansible/host_vars/libvirt-ubuntu-16/install.yml
> > > create mode 100644 ansible/kickstart.cfg
> > > create mode 100644 ansible/preseed.cfg
> > >
> > > diff --git a/ansible/group_vars/all/install.yml
b/ansible/group_vars/all/install.yml
> > > new file mode 100644
> > > index 0000000..714328e
> > > --- /dev/null
> > > +++ b/ansible/group_vars/all/install.yml
> > > @@ -0,0 +1,10 @@
> > > +---
> > > +# Sizes are in GiB
> > > +install_virt_type: kvm
> > > +install_arch: x86_64
> > > +install_machine: pc
> > > +install_vcpus: 2
> > > +install_memory_size: 2
> > > +install_disk_size: 10
> >
> > Currently we have 15 GiB per guest and in some cases we are able to run
> > out of space. Let's use 15 GiB.
>
> We used to run out of space periodically because our RPM build jobs were
> creating RPMs in $HOME/rpmbuild which jenkins never purged. I reconfigured
> Jenkins to use the GIT workspace as the RPM build dir, so jenkins always
> purges RPMs. Since then we've not run out of space again AFAIK. None the
> less, I agree that 15 GiB is probably the min we need
Mainly because some of the guests have only 10 GiB disk.
> > > diff --git a/ansible/kickstart.cfg b/ansible/kickstart.cfg
> > > new file mode 100644
> > > index 0000000..c28f275
> > > --- /dev/null
> > > +++ b/ansible/kickstart.cfg
> > > @@ -0,0 +1,60 @@
> > > +# Installer configuration
> > > +#
> > > +# Perform a text based installation followed by a reboot, and disable
> > > +# the first boot assistant
> > > +text
> > > +install
> > > +reboot
> > > +firstboot --disable
> > > +
> > > +
> > > +# Environment configuration
> > > +#
> > > +# Locale, keyboard and timezone. All these will be configured again
> > > +# later with Ansible, but they're required information so we must
> > > +# provide them
> > > +lang en_US.UTF-8
> > > +keyboard us
> > > +timezone --utc Europe/Prague
>
> How about UTC as a neutral option for timezone ;-)
+1
>
>
> > > +
> > > +
> > > +# User creation
> > > +#
> > > +# We don't create any user except for root. We can use a very
insecure
> > > +# root password because the guest will not be exposed to the Internet:
> > > +# it will only be accessible from the host itself
> > > +authconfig --enableshadow --passalgo=sha512
> > > +rootpw --plaintext root
> > > +
> > > +
> > > +# Partition disk
> > > +#
> > > +# Erase everything and set up a 2 GiB swap partition, then assign all
> > > +# remaining space to the root partition
> > > +ignoredisk --only-use=vda
> > > +zerombr
> > > +clearpart --none
> > > +part / --fstype=ext4 --size=2048 --grow
> > > +part swap --fstype=swap --size=2048
>
> We shouldn't need 2 GiB swap - any builder that uses even a few 100 MB
> of swap is doomed. I'd give it 300 MB swap max.
We can definitely try that, I'm not sure how much memory the guest needs
if there are multiple jobs running.
If we have too much load from jobs for the amount of RAM allocated, such
that some are pushed to swap, the build time is just going to balloon. We
would get faster builds by reducing the number of parallel jobs so that
we don't exceed RAM, even if this ends up basically serializing most of
it. Or give guests more RAM, and let the host OS do swapping of idle
KVM instances instead.
Regards,
Daniel
--
|:
https://berrange.com -o-
https://www.flickr.com/photos/dberrange :|
|:
https://libvirt.org -o-
https://fstop138.berrange.com :|
|:
https://entangle-photo.org -o-
https://www.instagram.com/dberrange :|