Un-hardcode host/guest IP

I was running into trouble using gitian LXC INSIDE a VirtualBox VM, because
the 10.0.2.x IP range overlaps with the range that VirtualBox uses for
its internal NAT network.

This commit makes it possible to override the host and guest IP that
is used during LXC image creation and the build, using environment variables:

- `GITIAN_HOST_IP` (default=10.0.2.2, host IP from the viewpoint of the
   VM, can be used for both LXC and KVM)
- `LXC_GUEST_IP` (default=10.0.2.5, guest IP from the viewpoint of the
   host, effective for LXC only)

When these are not defined the behavior remains the same as before.
lxc
Wladimir J. van der Laan 10 years ago
parent c9e62adc21
commit 5785dfc3ae

@ -20,10 +20,10 @@ usage() {
--vbox use VirtualBox instead of kvm --vbox use VirtualBox instead of kvm
The MIRROR_HOST environment variable can be used to change the The MIRROR_HOST environment variable can be used to change the
apt-cacher host. It should be something that the target VM can apt-cacher host. It should be something that both the host and the
resolve. It may be set to 127.0.0.1, in which case it will be target VM can reach. It may be set to 127.0.0.1, in which case it will be
changed to 10.0.2.2 on the guest. 10.0.2.2 is the host IP as visible changed to 10.0.2.2 on the guest (or GITIAN_HOST_IP if it is defined)
from the guest under qemu networking. 10.0.2.2 is the host IP as visible from the guest under qemu networking.
EOF EOF
} }
@ -104,6 +104,7 @@ if [ -e $OUT.qcow2 ]; then
exit 1 exit 1
fi fi
libexec/config-bootstrap-fixup
rm -rf $OUT rm -rf $OUT
sudo vmbuilder kvm ubuntu --rootsize 10240 --arch=$ARCH --suite=$SUITE --addpkg=$addpkg --removepkg=$removepkg --ssh-key=var/id_dsa.pub --ssh-user-key=var/id_dsa.pub --mirror=$MIRROR --security-mirror=$SECURITY_MIRROR --dest=$OUT --flavour=$FLAVOUR --firstboot=`pwd`/target-bin/bootstrap-fixup sudo vmbuilder kvm ubuntu --rootsize 10240 --arch=$ARCH --suite=$SUITE --addpkg=$addpkg --removepkg=$removepkg --ssh-key=var/id_dsa.pub --ssh-user-key=var/id_dsa.pub --mirror=$MIRROR --security-mirror=$SECURITY_MIRROR --dest=$OUT --flavour=$FLAVOUR --firstboot=`pwd`/target-bin/bootstrap-fixup
mv $OUT/*.qcow2 $OUT.qcow2 mv $OUT/*.qcow2 $OUT.qcow2

@ -26,7 +26,9 @@ lxc.mount.entry=sysfs ROOTFS/sys sysfs defaults 0 0
# Container with network virtualized using a pre-configured bridge named br0 and # Container with network virtualized using a pre-configured bridge named br0 and
# veth pair virtual network devices # veth pair virtual network devices
# On the host, run: ifconfig br0 up 10.0.2.2 # On the host, run: ifconfig br0 up 10.0.2.2
# Alternatively, you can use another IP range for the bridge interface, in this case set
# the environment variables GITIAN_HOST_IP and LXC_GUEST_IP appropriately.
lxc.network.type = veth lxc.network.type = veth
lxc.network.flags = up lxc.network.flags = up
lxc.network.link = br0 lxc.network.link = br0
lxc.network.ipv4 = 10.0.2.5/24 lxc.network.ipv4 = GUESTIP/24

@ -0,0 +1,15 @@
#!/bin/bash
wd=`pwd`
# Default host IP is 10.0.2.2
if [ -z "$GITIAN_HOST_IP" ]; then
GITIAN_HOST_IP=10.0.2.2
fi
# Default to host IP if the MIRROR_HOST is not set, or set to 127.0.0.1
if [ -z "$MIRROR_HOST" ] || [ "$MIRROR_HOST" == "127.0.0.1" ]; then
MIRROR_HOST=$GITIAN_HOST_IP
fi
sed "s;HOSTIP;$MIRROR_HOST;g" < target-bin/bootstrap-fixup.in > target-bin/bootstrap-fixup

@ -1,4 +1,9 @@
#!/bin/bash #!/bin/bash
wd=`pwd` wd=`pwd`
sed "s;ROOTFS;$wd/target-$LXC_SUITE-$LXC_ARCH;;s;ARCH;$LXC_ARCH;g" < etc/lxc.config.in > var/lxc.config
if [ -z "$LXC_GUEST_IP" ]; then
LXC_GUEST_IP=10.0.2.5
fi
sed "s;ROOTFS;$wd/target-$LXC_SUITE-$LXC_ARCH;;s;ARCH;$LXC_ARCH;g;;s;GUESTIP;$LXC_GUEST_IP;g" < etc/lxc.config.in > var/lxc.config

@ -60,6 +60,7 @@ case $VMSW in
;; ;;
LXC) LXC)
cp -a $BASE $OUT cp -a $BASE $OUT
libexec/config-bootstrap-fixup
on-target -u root bash < target-bin/bootstrap-fixup on-target -u root bash < target-bin/bootstrap-fixup
;; ;;
VBOX) VBOX)

@ -1,8 +0,0 @@
#!/bin/sh
set -e
. /etc/lsb-release
echo "deb http://10.0.2.2:3142/archive.ubuntu.com/ubuntu $DISTRIB_CODENAME main universe" > $1/etc/apt/sources.list
echo "deb http://10.0.2.2:3142/archive.ubuntu.com/ubuntu $DISTRIB_CODENAME-updates main universe" >> $1/etc/apt/sources.list

@ -0,0 +1,8 @@
#!/bin/sh
set -e
. /etc/lsb-release
echo "deb http://HOSTIP:3142/archive.ubuntu.com/ubuntu $DISTRIB_CODENAME main universe" > $1/etc/apt/sources.list
echo "deb http://HOSTIP:3142/archive.ubuntu.com/ubuntu $DISTRIB_CODENAME-updates main universe" >> $1/etc/apt/sources.list
Loading…
Cancel
Save