mirror of
https://github.com/containers/podman.git
synced 2025-08-14 02:41:34 +08:00

When the container uses journald logging, we don't want to automatically use the same driver for its exec sessions. If we do we will pollute the journal (particularly in the case of healthchecks) with large amounts of undesired logs. Instead, force exec sessions logs to file for now; we can add a log-driver flag later (we'll probably want to add a `podman logs` command that reads exec session logs at the same time). As part of this, add support for the new 'none' logs driver in Conmon. It will be the default log driver for exec sessions, and can be optionally selected for containers. Great thanks to Joe Gooch (mrwizard@dok.org) for adding support to Conmon for a null log driver, and wiring it in here. Fixes #6555 Signed-off-by: Matthew Heon <matthew.heon@pm.me>
135 lines
4.2 KiB
Bash
Executable File
135 lines
4.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
source $(dirname $0)/lib.sh
|
|
|
|
req_env_var USER HOME GOSRC SCRIPT_BASE SETUP_MARKER_FILEPATH
|
|
|
|
# Ensure this script only executes successfully once and always logs ending timestamp
|
|
if [[ -e "$SETUP_MARKER_FILEPATH" ]]; then
|
|
show_env_vars
|
|
exit 0
|
|
fi
|
|
|
|
exithandler() {
|
|
RET=$?
|
|
echo "."
|
|
echo "$(basename $0) exit status: $RET"
|
|
[[ "$RET" -eq "0" ]] && date +%s >> "$SETUP_MARKER_FILEPATH"
|
|
show_env_vars
|
|
[[ "$RET" -eq "0" ]] || warn "Non-zero exit caused by error ABOVE env. var. display."
|
|
}
|
|
trap exithandler EXIT
|
|
|
|
# Verify basic dependencies
|
|
for depbin in go rsync unzip sha256sum curl make python3 git
|
|
do
|
|
if ! type -P "$depbin" &> /dev/null
|
|
then
|
|
echo "***** WARNING: $depbin binary not found in $PATH *****"
|
|
fi
|
|
done
|
|
|
|
# Sometimes environment setup needs to vary between distros
|
|
# Note: This should only be used for environment variables, and temporary workarounds.
|
|
# Anything externally dependent, should be made fixed-in-time by adding to
|
|
# contrib/cirrus/packer/*_setup.sh to be incorporated into VM cache-images
|
|
# (see docs).
|
|
cd "${GOSRC}/"
|
|
case "${OS_RELEASE_ID}" in
|
|
ubuntu)
|
|
apt-get update
|
|
apt-get install -y containers-common
|
|
sed -ie 's/^\(# \)\?apparmor_profile =.*/apparmor_profile = ""/' /etc/containers/containers.conf
|
|
if [[ "$OS_RELEASE_VER" == "19" ]]; then
|
|
apt-get purge -y --auto-remove golang*
|
|
apt-get install -y golang-1.13
|
|
ln -s /usr/lib/go-1.13/bin/go /usr/bin/go
|
|
fi
|
|
if [[ "$OS_RELEASE_VER" == "20" ]]; then
|
|
apt-get install -y python-is-python3
|
|
fi
|
|
apt-get upgrade -y conmon
|
|
;;
|
|
fedora)
|
|
# All SELinux distros need this for systemd-in-a-container
|
|
setsebool container_manage_cgroup true
|
|
|
|
workaround_bfq_bug
|
|
|
|
# HACK: Need Conmon 2.0.17, currently in updates-testing on F31.
|
|
dnf update -y --enablerepo=updates-testing conmon
|
|
|
|
if [[ "$ADD_SECOND_PARTITION" == "true" ]]; then
|
|
bash "$SCRIPT_BASE/add_second_partition.sh"
|
|
fi
|
|
|
|
warn "Forcing systemd cgroup manager"
|
|
X=$(echo "export CGROUP_MANAGER=systemd" | \
|
|
tee -a /etc/environment) && eval "$X" && echo "$X"
|
|
;;
|
|
centos) # Current VM is an image-builder-image no local podman/testing
|
|
echo "No further setup required for VM image building"
|
|
exit 0
|
|
;;
|
|
*) bad_os_id_ver ;;
|
|
esac
|
|
|
|
# Reload to incorporate any changes from above
|
|
source "$SCRIPT_BASE/lib.sh"
|
|
|
|
case "$CG_FS_TYPE" in
|
|
tmpfs)
|
|
warn "Forcing testing with runc instead of crun"
|
|
X=$(echo "export OCI_RUNTIME=/usr/bin/runc" | \
|
|
tee -a /etc/environment) && eval "$X" && echo "$X"
|
|
;;
|
|
cgroup2fs)
|
|
# This is necessary since we've built/installed from source, which uses runc as the default.
|
|
warn "Forcing testing with crun instead of runc"
|
|
X=$(echo "export OCI_RUNTIME=/usr/bin/crun" | \
|
|
tee -a /etc/environment) && eval "$X" && echo "$X"
|
|
;;
|
|
*)
|
|
die 110 "Unsure how to handle cgroup filesystem type '$CG_FS_TYPE'"
|
|
;;
|
|
esac
|
|
|
|
# Must execute before possible setup_rootless()
|
|
make install.tools
|
|
|
|
case "$SPECIALMODE" in
|
|
none)
|
|
[[ -n "$CROSS_PLATFORM" ]] || \
|
|
remove_packaged_podman_files
|
|
;;
|
|
endpoint)
|
|
remove_packaged_podman_files
|
|
;;
|
|
bindings)
|
|
remove_packaged_podman_files
|
|
;;
|
|
rootless)
|
|
# Only do this once, even if ROOTLESS_USER (somehow) changes
|
|
if ! grep -q 'ROOTLESS_USER' /etc/environment
|
|
then
|
|
X=$(echo "export ROOTLESS_USER='${ROOTLESS_USER:-some${RANDOM}dude}'" | \
|
|
tee -a /etc/environment) && eval "$X" && echo "$X"
|
|
X=$(echo "export SPECIALMODE='${SPECIALMODE}'" | \
|
|
tee -a /etc/environment) && eval "$X" && echo "$X"
|
|
X=$(echo "export TEST_REMOTE_CLIENT='${TEST_REMOTE_CLIENT}'" | \
|
|
tee -a /etc/environment) && eval "$X" && echo "$X"
|
|
setup_rootless
|
|
fi
|
|
remove_packaged_podman_files
|
|
;;
|
|
in_podman) # Assumed to be Fedora
|
|
$SCRIPT_BASE/setup_container_environment.sh
|
|
;;
|
|
*)
|
|
die 111 "Unsupported \$SPECIALMODE: $SPECIALMODE"
|
|
esac
|
|
|
|
install_test_configs
|