Skip to content

Commit

Permalink
Cirrus: disable Evil Units in base-images
Browse files Browse the repository at this point in the history
Also, minor update to prevent harmless 'Fatal: not a git repo' error.

Signed-off-by: Chris Evich <cevich@redhat.com>
  • Loading branch information
cevich committed Sep 3, 2019
1 parent 3b03acc commit a85da53
Show file tree
Hide file tree
Showing 6 changed files with 45 additions and 43 deletions.
2 changes: 1 addition & 1 deletion .cirrus.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ env:
####
#### Cache-image names to test with (double-quotes around names are critical)
###
_BUILT_IMAGE_SUFFIX: "libpod-5789386598252544"
_BUILT_IMAGE_SUFFIX: "libpod-5420341990522880"
FEDORA_CACHE_IMAGE_NAME: "fedora-30-${_BUILT_IMAGE_SUFFIX}"
PRIOR_FEDORA_CACHE_IMAGE_NAME: "fedora-29-${_BUILT_IMAGE_SUFFIX}"
SPECIAL_FEDORA_CACHE_IMAGE_NAME: "xfedora-30-${_BUILT_IMAGE_SUFFIX}"
Expand Down
35 changes: 11 additions & 24 deletions contrib/cirrus/lib.sh
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ SETUP_MARKER_FILEPATH="${SETUP_MARKER_FILEPATH:-/var/tmp/.setup_environment_sh_c
AUTHOR_NICKS_FILEPATH="${CIRRUS_WORKING_DIR}/${SCRIPT_BASE}/git_authors_to_irc_nicks.csv"

cd $GOSRC
if type -P git &> /dev/null
if type -P git &> /dev/null && [[ -d "$GOSRC/.git" ]]
then
CIRRUS_CHANGE_IN_REPO=${CIRRUS_CHANGE_IN_REPO:-$(git show-ref --hash=8 HEAD || date +%s)}
else # pick something unique and obviously not from Cirrus
Expand All @@ -61,8 +61,8 @@ export PACKER_BUILDS="${PACKER_BUILDS:-ubuntu-18,ubuntu-19,fedora-30,xfedora-30,
export UBUNTU_BASE_IMAGE="ubuntu-1904-disco-v20190724"
export PRIOR_UBUNTU_BASE_IMAGE="ubuntu-1804-bionic-v20190722a"
# Manually produced base-image names (see $SCRIPT_BASE/README.md)
export FEDORA_BASE_IMAGE="fedora-cloud-base-30-1-2-1559164849"
export PRIOR_FEDORA_BASE_IMAGE="fedora-cloud-base-29-1-2-1559164849"
export FEDORA_BASE_IMAGE="fedora-cloud-base-30-1-2-1565360543"
export PRIOR_FEDORA_BASE_IMAGE="fedora-cloud-base-29-1-2-1565360543"
export BUILT_IMAGE_SUFFIX="${BUILT_IMAGE_SUFFIX:--$CIRRUS_REPO_NAME-${CIRRUS_BUILD_ID}}"
# IN_PODMAN container image
IN_PODMAN_IMAGE="quay.io/libpod/in_podman:latest"
Expand All @@ -83,7 +83,7 @@ ROOTLESS_ENV_RE='(CIRRUS_.+)|(ROOTLESS_.+)|(.+_IMAGE.*)|(.+_BASE)|(.*DIRPATH)|(.
SECRET_ENV_RE='(IRCID)|(ACCOUNT)|(GC[EP]..+)|(SSH)'

# Names of systemd units which should never be running
EVIL_UNITS="cron crond atd apt-daily-upgrade apt-daily fstrim motd-news systemd-tmpfiles-clean"
EVIL_UNITS="$($GOSRC/$PACKER_BASE/systemd_banish.sh --list)"

SPECIALMODE="${SPECIALMODE:-none}"
TEST_REMOTE_CLIENT="${TEST_REMOTE_CLIENT:-false}"
Expand Down Expand Up @@ -323,7 +323,7 @@ EOF
sudo chmod 755 /usr/bin/git
}

install_test_configs(){
install_test_configs() {
echo "Installing cni config, policy and registry config"
req_env_var GOSRC SCRIPT_BASE
cd $GOSRC
Expand All @@ -343,7 +343,7 @@ install_test_configs(){
# of pulling in necessary prerequisites packages as the set can change over time.
# For general CI testing however, calling this function makes sure the system
# can only run the compiled source version.
remove_packaged_podman_files(){
remove_packaged_podman_files() {
echo "Removing packaged podman files to prevent conflicts with source build and testing."
req_env_var OS_RELEASE_ID
if [[ "$OS_RELEASE_ID" =~ "ubuntu" ]]
Expand All @@ -362,24 +362,11 @@ remove_packaged_podman_files(){
done
}

systemd_banish(){
echo "Disabling periodic services that could destabilize testing (ignoring errors):"
set +e # Not all of these exist on every platform
for unit in $EVIL_UNITS
do
echo "Banishing $unit (ignoring errors)"
(
sudo systemctl stop $unit
sudo systemctl disable $unit
sudo systemctl disable $unit.timer
sudo systemctl mask $unit
sudo systemctl mask $unit.timer
) &> /dev/null
done
set -e
systemd_banish() {
$GOSRC/$PACKER_BASE/systemd_banish.sh
}

_finalize(){
_finalize() {
set +e # Don't fail at the very end
if [[ -d "$CUSTOM_CLOUD_CONFIG_DEFAULTS" ]]
then
Expand All @@ -402,7 +389,7 @@ _finalize(){
sudo fstrim -av
}

rh_finalize(){
rh_finalize() {
set +e # Don't fail at the very end
echo "Resetting to fresh-state for usage as cloud-image."
PKG=$(type -P dnf || type -P yum || echo "")
Expand All @@ -413,7 +400,7 @@ rh_finalize(){
_finalize
}

ubuntu_finalize(){
ubuntu_finalize() {
set +e # Don't fail at the very end
echo "Resetting to fresh-state for usage as cloud-image."
$LILTO $SUDOAPTGET autoremove
Expand Down
2 changes: 0 additions & 2 deletions contrib/cirrus/packer/fedora_base-setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@ set -e
# Load in library (copied by packer, before this script was run)
source $GOSRC/$SCRIPT_BASE/lib.sh

[[ "$1" == "post" ]] || exit 0 # nothing to do

install_ooe

echo "Updating packages"
Expand Down
16 changes: 5 additions & 11 deletions contrib/cirrus/packer/libpod_base_images.yml
Original file line number Diff line number Diff line change
Expand Up @@ -95,14 +95,15 @@ builders:
source_image_project_id: 'ubuntu-os-cloud'
project_id: '{{user `GCP_PROJECT_ID`}}'
account_file: '{{user `GOOGLE_APPLICATION_CREDENTIALS`}}'
startup_script_file: "systemd_banish.sh"
zone: 'us-central1-a'
disk_size: 20
communicator: 'none'

- <<: *imgcopy
name: 'prior-ubuntu'
image_name: '{{user `PRIOR_UBUNTU_BASE_IMAGE`}}'
source_image: '{{user `UBUNTU_BASE_IMAGE`}}'
source_image: '{{user `PRIOR_UBUNTU_BASE_IMAGE`}}'

provisioners:
- type: 'shell'
Expand Down Expand Up @@ -130,22 +131,15 @@ provisioners:
only: ['fedora', 'prior-fedora']
type: 'shell'
inline:
- 'chmod +x /tmp/libpod/{{user `PACKER_BASE`}}/{{build_name}}_base-setup.sh'
- '/tmp/libpod/{{user `PACKER_BASE`}}/{{build_name}}_base-setup.sh pre'
expect_disconnect: true # Allow this to reboot the VM
- 'chmod +x /tmp/libpod/{{user `PACKER_BASE`}}/*.sh'
- '/tmp/libpod/{{user `PACKER_BASE`}}/{{build_name}}_base-setup.sh'
expect_disconnect: true # Allow this to reboot the VM if needed
environment_vars:
- 'TIMESTAMP={{user `TIMESTAMP`}}'
- 'GOSRC=/tmp/libpod'
- 'SCRIPT_BASE={{user `SCRIPT_BASE`}}'
- 'PACKER_BASE={{user `PACKER_BASE`}}'

- <<: *shell_script
inline: ['{{user `GOSRC`}}/{{user `PACKER_BASE`}}/{{build_name}}_base-setup.sh']
expect_disconnect: false
pause_before: '10s'
inline:
- '/tmp/libpod/{{user `PACKER_BASE`}}/{{build_name}}_base-setup.sh post'

post-processors:
- - type: "compress"
only: ['fedora', 'prior-fedora']
Expand Down
5 changes: 0 additions & 5 deletions contrib/cirrus/packer/libpod_images.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,6 @@

# All of these are required
variables:
# Names of GCE Base images to start from, in .cirrus.yml
UBUNTU_BASE_IMAGE: '{{env `UBUNTU_BASE_IMAGE`}}'
FEDORA_BASE_IMAGE: '{{env `FEDORA_BASE_IMAGE`}}'
PRIOR_FEDORA_BASE_IMAGE: '{{env `PRIOR_FEDORA_BASE_IMAGE`}}'

BUILT_IMAGE_SUFFIX: '{{env `BUILT_IMAGE_SUFFIX`}}'
GOSRC: '{{env `GOSRC`}}'
PACKER_BASE: '{{env `PACKER_BASE`}}'
Expand Down
28 changes: 28 additions & 0 deletions contrib/cirrus/packer/systemd_banish.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#!/bin/bash

set +e # Not all of these exist on every platform

# This is intended to be executed on VMs as a startup script on initial-boot.
# Alternativly, it may be executed with the '--list' option to return the list
# of systemd units defined for disablement (useful for testing).

EVIL_UNITS="cron crond atd apt-daily-upgrade apt-daily fstrim motd-news systemd-tmpfiles-clean"

if [[ "$1" == "--list" ]]
then
echo "$EVIL_UNITS"
exit 0
fi

echo "Disabling periodic services that could destabilize testing:"
for unit in $EVIL_UNITS
do
echo "Banishing $unit (ignoring errors)"
(
sudo systemctl stop $unit
sudo systemctl disable $unit
sudo systemctl disable $unit.timer
sudo systemctl mask $unit
sudo systemctl mask $unit.timer
) &> /dev/null
done

0 comments on commit a85da53

Please sign in to comment.