diff --git a/.travis.yml b/.travis.yml index 9564fd541..ae0f67896 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,7 +21,7 @@ matrix: - sudo env "PATH=$PATH" "PYTHONUNBUFFERED=1" "OSBUILD_TEST_BUILD_ENV=test/f27-build-from-ubuntu1804.json" test/run --image-info - language: python python: 3.7 - before_install: sudo apt-get install -y qemu-kvm + before_install: sudo apt-get install -y qemu-kvm genisoimage script: # ubuntu's rpm package sets dbpath to ~/.rpmdb, which makes rpm fail... - sudo sh -c 'mkdir /etc/rpm; echo "%_dbpath /var/lib/rpm" > /etc/rpm/macros' diff --git a/test/cloud-init/meta-data b/test/cloud-init/meta-data new file mode 100644 index 000000000..d2e8b7c95 --- /dev/null +++ b/test/cloud-init/meta-data @@ -0,0 +1,2 @@ +instance-id: nocloud +local-hostname: vm diff --git a/test/cloud-init/user-data b/test/cloud-init/user-data new file mode 100644 index 000000000..f69a142d7 --- /dev/null +++ b/test/cloud-init/user-data @@ -0,0 +1,4 @@ +#cloud-config +user: redhat +ssh_authorized_keys: + - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod diff --git a/test/run b/test/run index 6a41eacf6..29a337904 100755 --- a/test/run +++ b/test/run @@ -87,21 +87,34 @@ def create_ssh_keys(): @contextlib.contextmanager def qemu_boot_image(image_file): - # run in background - cmd = ["qemu-system-x86_64", - "-m", "2048", - "-snapshot", - "-accel", "accel=kvm:hvf:tcg", - "-net", "nic,model=rtl8139", "-net", "user,hostfwd=tcp::22-:22", - "-nographic", - image_file - ] - print(f"running qemu command: {' '.join(cmd)}") - vm = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - try: - yield None - finally: - vm.kill() + with tempfile.TemporaryDirectory() as dir: + # Create an ISO that cloud-init can consume with userdata. + subprocess.run(["genisoimage", + "-quiet", + "-input-charset", "utf-8", + "-output", f"{dir}/cloudinit.iso", + "-volid", "cidata", + "-joliet", + "-rock", + f"{TEST_DIR}/cloud-init/user-data", + f"{TEST_DIR}/cloud-init/meta-data"], + check=True) + # run in background + cmd = ["qemu-system-x86_64", + "-m", "2048", + "-snapshot", + "-accel", "accel=kvm:hvf:tcg", + "-cdrom", f"{dir}/cloudinit.iso", + "-net", "nic,model=rtl8139", "-net", "user,hostfwd=tcp::22-:22", + "-nographic", + image_file + ] + print(f"running qemu command: {' '.join(cmd)}") + vm = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + try: + yield None + finally: + vm.kill() @contextlib.contextmanager