3
if [ $# -ne 3 ] && [ $# -ne 4 ]; then
4
echo "Usage: $0 <URL> <SHA256> <out file> [curtin file path]"
9
IMG_NAME=$(basename $URL)
11
if [ $(dirname $3) == "." ]; then
18
if [ ! -f $URL ]; then
19
IMG_PATH=/tmp/$IMG_NAME
20
wget --continue $URL -O $IMG_PATH
25
echo "Checking given sha256sum..."
26
if [ $(sha256sum $IMG_PATH | awk ' { print $1 } ') != $SHA256 ]; then
27
echo "Error: SHA256 of $IMG_PATH != $SHA256"
31
if [ $(file $IMG_PATH | grep -c 'XZ compressed data') -gt 0 ]; then
32
echo "Decompressing image..."
33
NEW_IMG_PATH=${IMG_PATH%%'.xz'}
34
[ -f "$NEW_IMG_PATH" ] && rm $NEW_IMG_PATH
36
IMG_PATH=${NEW_IMG_PATH}
39
echo "Mounting image..."
40
sudo modprobe nbd max_path=8
41
sudo qemu-nbd -c /dev/nbd0 $IMG_PATH
43
mnt_point=$(mktemp -d '/tmp/maas-qcow2targz-XXX')
44
sudo mount /dev/nbd0p1 $mnt_point
45
if [ -d "$CURTIN_PATH" ]; then
46
sudo mkdir -p $mnt_point/curtin
47
sudo cp $CURTIN_PATH/* $mnt_point/curtin/
48
sudo chmod +x $mnt_point/curtin/*
51
# CentOS 7 removed python-oauth which is required for cloud-init to
52
# authenticate with the MAAS metadata service. Until cloud-init from CentOS
53
# supports python-oauth2 we need to pull python-oauth from EPEL7-testing
54
if [ -f "${mnt_point}/etc/os-release" ] && \
55
[ $(grep -c "centos:7" "${mnt_point}/etc/os-release") -ge 1 ]; then
56
echo "CentOS 7 detected! Adding python-oauth for MAAS cloud-init..."
59
https://kojipkgs.fedoraproject.org//packages/python-oauth/1.0.1/10.el7/noarch/python-oauth-1.0.1-10.el7.noarch.rpm \
60
-O ${mnt_point}/tmp/python-oauth-1.0.1-10.el7.noarch.rpm
61
sudo chroot ${mnt_point} \
62
/bin/bash -c "rpm -ivh /tmp/python-oauth-1.0.1-10.el7.noarch.rpm"
63
rm ${mnt_point}/tmp/python-oauth-1.0.1-10.el7.noarch.rpm
66
mkdir -p $(dirname $OUT)
68
echo "Taring up image contents..."
74
sudo umount $mnt_point
76
sudo qemu-nbd -d /dev/nbd0