Add an ami compose type for AWS images

This differs from lmc's --make-ami in that creates a full disk image instead of
an fsimage. Create a raw disk image with a / and /boot partitions, and enable
sshd, chronyd, and cockpit by default.
This commit is contained in:
David Shea 2018-09-28 14:54:51 -04:00
parent 847fff4e11
commit 18188bf6cf
4 changed files with 71 additions and 3 deletions

View File

@ -40,8 +40,8 @@ compose start http-server qcow2``. It will print a UUID that you can use to
keep track of the build. You can also cancel the build if needed. keep track of the build. You can also cancel the build if needed.
The available types of images is displayed by ``composer compose types``. The available types of images is displayed by ``composer compose types``.
Currently this consists of: ext4-filesystem, live-iso, partitioned-disk, qcow2, Currently this consists of: ami, ext4-filesystem, live-iso, partitioned-disk,
tar qcow2, tar
Monitor the build status Monitor the build status
------------------------ ------------------------

46
share/composer/ami.ks Normal file
View File

@ -0,0 +1,46 @@
# Lorax Composer AMI output kickstart template
# Add a separate /boot partition
part /boot --size=1024
# Firewall configuration
firewall --enabled
# Root password
rootpw --plaintext removethispw
# Network information
network --bootproto=dhcp --onboot=on --activate
# System authorization information
auth --useshadow --enablemd5
# System keyboard
keyboard --xlayouts=us --vckeymap=us
# System language
lang en_US.UTF-8
# SELinux configuration
selinux --enforcing
# Installation logging level
logging --level=info
# Shutdown after installation
shutdown
# System timezone
timezone US/Eastern
# System bootloader configuration
bootloader --location=mbr --append="no_timer_check console=ttyS0,115200n8 console=tty1 net.ifnames=0"
# Basic services
services --enabled=sshd,chronyd
%post
# Remove random-seed
rm /var/lib/systemd/random-seed
%end
%packages
kernel
-dracut-config-rescue
grub2
chrony
# NOTE lorax-composer will add the recipe packages below here, including the final %end

View File

@ -515,6 +515,28 @@ def compose_args(compose_type):
"app_template": None, "app_template": None,
"app_file": None, "app_file": None,
}, },
"ami": {"make_iso": False,
"make_disk": True,
"make_fsimage": False,
"make_appliance": False,
"make_ami": False,
"make_tar": False,
"make_pxe_live": False,
"make_ostree_live": False,
"make_oci": False,
"make_vagrant": False,
"ostree": False,
"live_rootfs_keep_size": False,
"live_rootfs_size": 0,
"image_type": False,
"qemu_args": [],
"image_name": "disk.ami",
"fs_label": "",
"image_only": True,
"app_name": None,
"app_template": None,
"app_file": None,
},
} }
return _MAP[compose_type] return _MAP[compose_type]

View File

@ -810,7 +810,7 @@ class ServerTestCase(unittest.TestCase):
data = json.loads(resp.data) data = json.loads(resp.data)
self.assertNotEqual(data, None) self.assertNotEqual(data, None)
self.assertEqual(data["status"], False, "Failed to fail to start test compose: %s" % data) self.assertEqual(data["status"], False, "Failed to fail to start test compose: %s" % data)
self.assertEqual(data["errors"], [{"id": BAD_COMPOSE_TYPE, "msg": "Invalid compose type (snakes), must be one of ['ext4-filesystem', 'live-iso', 'partitioned-disk', 'qcow2', 'tar']"}], self.assertEqual(data["errors"], [{"id": BAD_COMPOSE_TYPE, "msg": "Invalid compose type (snakes), must be one of ['ami', 'ext4-filesystem', 'live-iso', 'partitioned-disk', 'qcow2', 'tar']"}],
"Failed to get errors: %s" % data) "Failed to get errors: %s" % data)
def test_compose_03_status_fail(self): def test_compose_03_status_fail(self):