From ec1f1edd32984b1e0ce3bff34ca604f0a4fb9dd2 Mon Sep 17 00:00:00 2001 From: Mike Gahagan Date: Fri, 13 Oct 2017 14:54:11 -0400 Subject: [PATCH] initial commit of tests from upstreamfirst --- tests/add-luks-keys/Makefile | 52 ++++++++++++++++++++++++++++++ tests/add-luks-keys/PURPOSE | 3 ++ tests/add-luks-keys/runtest.sh | 59 ++++++++++++++++++++++++++++++++++ tests/tests.yml | 11 +++++++ 4 files changed, 125 insertions(+) create mode 100644 tests/add-luks-keys/Makefile create mode 100644 tests/add-luks-keys/PURPOSE create mode 100644 tests/add-luks-keys/runtest.sh create mode 100644 tests/tests.yml diff --git a/tests/add-luks-keys/Makefile b/tests/add-luks-keys/Makefile new file mode 100644 index 0000000..17a923a --- /dev/null +++ b/tests/add-luks-keys/Makefile @@ -0,0 +1,52 @@ +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Makefile of /dracut/add-luks-keys +# Description: Create and add a luks key to all luks devices to allow booting of a system without entering a passphrase +# Author: Jan Stodola +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2016 Red Hat, Inc. All rights reserved. +# Red Hat Internal +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +export TEST=/dracut/add-luks-keys +export TESTVERSION=1.0 +export DESCRIPTION="Create and add a luks key to all luks devices to allow booting of a system without entering a passphrase" + +BUILT_FILES= + +FILES=$(METADATA) runtest.sh Makefile PURPOSE + +.PHONY: all install download clean + +run: $(FILES) build + ./runtest.sh + +build: $(BUILT_FILES) + test -x runtest.sh || chmod a+x runtest.sh + +clean: + rm -f *~ $(BUILT_FILES) + + +include /usr/share/rhts/lib/rhts-make.include + +$(METADATA): Makefile + @echo "Owner: Jan Stodola " > $(METADATA) + @echo "Name: $(TEST)" >> $(METADATA) + @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) + @echo "Path: $(TEST_DIR)" >> $(METADATA) + @echo "Description: $(DESCRIPTION)" >> $(METADATA) + @echo "Type: Install" >> $(METADATA) + @echo "TestTime: 10m" >> $(METADATA) + @echo "RunFor: dracut" >> $(METADATA) + @echo "Requires: dracut" >> $(METADATA) + @echo "Priority: Normal" >> $(METADATA) + @echo "License: Red Hat Internal" >> $(METADATA) + @echo "Confidential: no" >> $(METADATA) + @echo "Destructive: no" >> $(METADATA) + @echo "Releases: -RHEL4 -RHELClient5 -RHELServer5" >> $(METADATA) + + rhts-lint $(METADATA) diff --git a/tests/add-luks-keys/PURPOSE b/tests/add-luks-keys/PURPOSE new file mode 100644 index 0000000..a7c6063 --- /dev/null +++ b/tests/add-luks-keys/PURPOSE @@ -0,0 +1,3 @@ +PURPOSE of /dracut/add-luks-keys +Description: Create and add a luks key to all luks devices to allow booting of a system without entering a passphrase. +Author: Jan Stodola diff --git a/tests/add-luks-keys/runtest.sh b/tests/add-luks-keys/runtest.sh new file mode 100644 index 0000000..7ef652b --- /dev/null +++ b/tests/add-luks-keys/runtest.sh @@ -0,0 +1,59 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /dracut/add-luks-keys +# Description: Create and add a luks key to all luks devices to allow booting of a system without entering a passphrase +# Author: Jan Stodola +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2016 Red Hat, Inc. All rights reserved. +# Red Hat Internal +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/bin/rhts-environment.sh || exit 1 +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGE="dracut" + +keyfile="/root/keyfile" +kernel_file=`grubby --default-kernel` +initrd_file=`grubby --info=$kernel_file | grep ^initrd= | sed 's/^initrd=//' | head -n1` +kernel_version=`rpm -qf $kernel_file --qf '%{VERSION}-%{RELEASE}.%{ARCH}\n'` + +rlJournalStart + rlPhaseStartTest "Add luks keys to initramfs" + + if [ ! -e "$keyfile" ]; then + rlLog "Creating new key file: $keyfile" + rlRun "dd if=/dev/urandom bs=1 count=32 of=$keyfile" + rlRun "chmod 0400 $keyfile" + else + rlLog "Using existing key file: $keyfile" + fi + + rlAssertExists "/etc/crypttab" + rlFileSubmit "/etc/crypttab" + UUIDS=`cat /etc/crypttab | cut -d' ' -f2 | cut -d'=' -f2` + for UUID in $UUIDS; do + rlRun "echo 'redhat' | /sbin/cryptsetup luksAddKey /dev/disk/by-uuid/$UUID $keyfile" + done; + + # modify /etc/crypttab, set key file in the thirth column of the file + rlRun "awk -v \"KEY_FILE=$keyfile\" '{\$3=KEY_FILE; print \$0}' /etc/crypttab > crypttab_mod" + rlRun "mv -Z crypttab_mod /etc/crypttab" + rlRun "chmod 0600 /etc/crypttab" + + rlRun "dracut -f -I $keyfile $initrd_file $kernel_version" + + # zipl has to be executed on s390x + if [ -x /sbin/zipl ]; then + rlRun "/sbin/zipl" + fi + + rlPhaseEnd +rlJournalEnd + diff --git a/tests/tests.yml b/tests/tests.yml new file mode 100644 index 0000000..60a098d --- /dev/null +++ b/tests/tests.yml @@ -0,0 +1,11 @@ +--- +# This first play always runs on the local staging system +- hosts: localhost + roles: + - role: standard-test-beakerlib + tags: + - classic + tests: + - add-luks-keys + required_packages: + - dracut # Required for add-luks-keys