podman/contrib/cirrus/packer/fah_base-setup.sh
Chris Evich cb900798ce
Cirrus: Document and codify base-image production
A number of images required for future testing are not present in GCE.
Importing them is a long proscribed process prone to errors and
complications.

Improve this situation by documenting, and encoding the majority of the
steps required.  Due to the required complexity, these are clearly
identified as 'semi-automated'.  This means a discerning eye is
sometimes needed to address unforeseen problems (networking issues,
format or packaging changes, etc).

Nevertheless, having these steps in writing, will reduce current and
future  maintenance burden while supporting future testing needs of
RHEL, Fedora and Fedora Atomic Host.

Also:

* Add necessary configuration, scripts, and Makefile updates needed to
  prepare RHEL, Fedora, & FAH cloud images for use in GCE.  This
  is a complex, multi-step process where the cloud image is booted
  un a local user-mod qemu-kvm instance, where it can be modified.
  From there, it's converted into a specific format, and imported into
  GCE.  Lastly, the imported raw disk data is made available as a GCE
  VM image.

  Note: As of this commit, the RHEL base-image builds (CentOS has native
  image), however neither RHEL or CentOS cache-images build correctly.

* Left testing on FAH disabled, the GCE/Cirrus integration needs needs more
  work.  Specifically, the python3-based google startup script service
  throws a permission-denied (as root) when trying to create a temp.
  directory.  Did not investigate further, though manually running the
  startup script does allow the libpod tests to start running.

* Enabled Fedora 29 image to execute tests and general use.

* Utilize the standardized F28-based container image  for gating
  of more the intensive unit and integration testing.  Update
  documentation to reflect this as the standard platform for
  these checks.  Rename tasks with shorter names and to better
  reflect their purpose.

* Cirrus: Trim unnecessary env vars before testing since the vast
  majority are only required for orchestration purposes.  Since most
  are defined within `.cirrus.yml`, it's a good place to store the
  list of undesirables.  Since each of the cirrus-scripts runs in
  it's own shell, unsetting these near the end will have no
  consequence.  Also trim down the number of calls to show_env_vars()

Signed-off-by: Chris Evich <cevich@redhat.com>
2018-12-06 15:39:18 -05:00

46 lines
1.4 KiB
Bash

# N/B: This script is not intended to be run by humans. It is used to configure the
# FAH base image for importing, so that it will boot in GCE.
set -e
# Load in library (copied by packer, before this script was run)
source $GOSRC/$SCRIPT_BASE/lib.sh
install_ooe
if [[ "$1" == "pre" ]]
then
echo "Upgrading Atomic Host"
setenforce 0
ooe.sh atomic host upgrade
echo "Configuring Repositories"
ooe.sh sudo tee /etc/yum.repos.d/ngompa-gce-oslogin.repo <<EOF
[ngompa-gce-oslogin]
name=Copr repo for gce-oslogin owned by ngompa
baseurl=https://copr-be.cloud.fedoraproject.org/results/ngompa/gce-oslogin/fedora-\$releasever-\$basearch/
type=rpm-md
skip_if_unavailable=True
gpgcheck=1
gpgkey=https://copr-be.cloud.fedoraproject.org/results/ngompa/gce-oslogin/pubkey.gpg
repo_gpgcheck=0
enabled=1
enabled_metadata=1
EOF
echo "Installing necessary packages and google services"
# Google services are enabled by default, upon install.
ooe.sh rpm-ostree install rng-tools google-compute-engine google-compute-engine-oslogin
echo "Rebooting..."
systemctl reboot # Required for upgrade + package installs to be active
elif [[ "$1" == "post" ]]
then
echo "Enabling necessary services"
systemctl enable rngd # Must reboot before enabling
rh_finalize
echo "SUCCESS!"
else
echo "Expected to be called with 'pre' or 'post'"
exit 6
fi