Add a vhd compose type for Azure images
This is similar to the AMI compose type, with a handful of additional changes specific to Azure: * Add waagent (but leave NetworkManager enabled, despite some of the docs) * Disable cloud-init * Add Hyper-V modules into initrams. Fixes specific for RHEL: * Create ifcfg-eth0 required by waagent. * Install python3 and net-tools required by waagent. Recommended changes: * Use recommended kernel boot args. * Disable kdump. (cherry picked from commite0c236ff36
) (cherry picked from commitda0435bc90
) (cherry picked from commitb594fa99bc
) Resolves: rhbz#1656105
This commit is contained in:
parent
61d4353bc7
commit
202814ae9d
@ -41,7 +41,7 @@ keep track of the build. You can also cancel the build if needed.
|
|||||||
|
|
||||||
The available types of images is displayed by ``composer-cli compose types``.
|
The available types of images is displayed by ``composer-cli compose types``.
|
||||||
Currently this consists of: ami, ext4-filesystem, live-iso, partitioned-disk,
|
Currently this consists of: ami, ext4-filesystem, live-iso, partitioned-disk,
|
||||||
qcow2, tar
|
qcow2, tar, vhd
|
||||||
|
|
||||||
Monitor the build status
|
Monitor the build status
|
||||||
------------------------
|
------------------------
|
||||||
|
70
share/composer/vhd.ks
Normal file
70
share/composer/vhd.ks
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
# Lorax Composer VHD (Azure, Hyper-V) output kickstart template
|
||||||
|
|
||||||
|
# Add a separate /boot partition
|
||||||
|
part /boot --size=1024
|
||||||
|
|
||||||
|
# Firewall configuration
|
||||||
|
firewall --enabled
|
||||||
|
|
||||||
|
# NOTE: The root account is locked by default
|
||||||
|
# Network information
|
||||||
|
network --bootproto=dhcp --onboot=on --activate
|
||||||
|
# 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 earlyprintk=ttyS0,115200 rootdelay=300 net.ifnames=0"
|
||||||
|
|
||||||
|
# Basic services
|
||||||
|
services --enabled=sshd,chronyd,waagent
|
||||||
|
|
||||||
|
%post
|
||||||
|
# Remove random-seed
|
||||||
|
rm /var/lib/systemd/random-seed
|
||||||
|
|
||||||
|
# This file is required by waagent in RHEL, but compatible with NetworkManager
|
||||||
|
cat > /etc/sysconfig/network-scripts/ifcfg-eth0 << EOF
|
||||||
|
DEVICE=eth0
|
||||||
|
ONBOOT=yes
|
||||||
|
BOOTPROTO=dhcp
|
||||||
|
TYPE=Ethernet
|
||||||
|
USERCTL=yes
|
||||||
|
PEERDNS=yes
|
||||||
|
IPV6INIT=no
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Add Hyper-V modules into initramfs
|
||||||
|
cat > /etc/dracut.conf.d/10-hyperv.conf << EOF
|
||||||
|
add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Regenerate the intramfs image
|
||||||
|
dracut -f -v --persistent-policy by-uuid
|
||||||
|
%end
|
||||||
|
|
||||||
|
%addon com_redhat_kdump --disable
|
||||||
|
%end
|
||||||
|
|
||||||
|
%packages
|
||||||
|
kernel
|
||||||
|
-dracut-config-rescue
|
||||||
|
|
||||||
|
grub2
|
||||||
|
|
||||||
|
chrony
|
||||||
|
|
||||||
|
WALinuxAgent
|
||||||
|
|
||||||
|
# Requirements of WALinuxAgent
|
||||||
|
net-tools
|
||||||
|
|
||||||
|
# NOTE lorax-composer will add the recipe packages below here, including the final %end
|
@ -566,6 +566,28 @@ def compose_args(compose_type):
|
|||||||
"app_template": None,
|
"app_template": None,
|
||||||
"app_file": None,
|
"app_file": None,
|
||||||
},
|
},
|
||||||
|
"vhd": {"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": "vpc",
|
||||||
|
"qemu_args": ["-o", "subformat=fixed,force_size"],
|
||||||
|
"image_name": "disk.vhd",
|
||||||
|
"fs_label": "",
|
||||||
|
"image_only": True,
|
||||||
|
"app_name": None,
|
||||||
|
"app_template": None,
|
||||||
|
"app_file": None,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
return _MAP[compose_type]
|
return _MAP[compose_type]
|
||||||
|
|
||||||
|
@ -800,7 +800,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 ['ami', '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', 'vhd']"}],
|
||||||
"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):
|
||||||
|
Loading…
Reference in New Issue
Block a user