dupport dhcp if linux distribution is Ubuntu.

This commit is contained in:
Christoph 2021-11-13 02:22:31 +01:00
parent fd1058d81c
commit 8e0f4ce3fc

View File

@ -300,6 +300,8 @@ echononl "\033[1mLinux Distribution [$DEFAULT_LXC_DIST]:\033[m "
read LXC_DIST read LXC_DIST
if [[ -z "$(trim $LXC_DIST)" ]] ; then if [[ -z "$(trim $LXC_DIST)" ]] ; then
LXC_DIST="$DEFAULT_LXC_DIST" LXC_DIST="$DEFAULT_LXC_DIST"
else
LXC_DIST="${LXC_DIST,,}"
fi fi
echo "" echo ""
@ -314,6 +316,8 @@ echononl "\033[1mCode name [${DEFAULT_CODENAME}]:\033[m "
read LXC_RELEASE read LXC_RELEASE
if [[ -z "$(trim $LXC_RELEASE)" ]] ; then if [[ -z "$(trim $LXC_RELEASE)" ]] ; then
LXC_RELEASE="$DEFAULT_CODENAME" LXC_RELEASE="$DEFAULT_CODENAME"
else
LXC_RELEASE="${LXC_RELEASE,,}"
fi fi
#while [[ -z "$(trim $LXC_RELEASE)" ]]; do #while [[ -z "$(trim $LXC_RELEASE)" ]]; do
@ -347,13 +351,22 @@ echo ""
echo -e "\033[32m--\033[m" echo -e "\033[32m--\033[m"
echo "" echo ""
NETWORK_CONFIGURATION_DHCP=false
echo " # Insert first IPv4 Address for the new LX Containers." echo " # Insert first IPv4 Address for the new LX Containers."
echo " #" echo " #"
if [[ "$LXC_DIST" = "ubuntu" ]] ; then
echo -e " # Type \033[33mNone\033[m or \033[33mDHCP\033[m if no ipv4-address should be assigned"
echo " #"
fi
echo "" echo ""
echononl "\033[1mFirst IPv4 Address:\033[m " echononl "\033[1mFirst IPv4 Address:\033[m "
read IPV4_ADDRESS_1 read IPV4_ADDRESS_1
if [[ "$LXC_DIST" = "ubuntu" ]] && ([[ "${IPV4_ADDRESS_1,,}" = 'none' ]] \
|| [[ "${IPV4_ADDRESS_1,,}" = 'dhcp' ]]) ; then
NETWORK_CONFIGURATION_DHCP=true
else
while ! $(is_valid_ipv4 $IPV4_ADDRESS_1); do while ! $(is_valid_ipv4 $IPV4_ADDRESS_1); do
if [[ -z "$(trim $IPV4_ADDRESS_1)" ]]; then if [[ -z "$(trim $IPV4_ADDRESS_1)" ]]; then
warn "Parameter is needed. Try again.." warn "Parameter is needed. Try again.."
else else
@ -361,23 +374,36 @@ while ! $(is_valid_ipv4 $IPV4_ADDRESS_1); do
fi fi
echononl "\033[1mFirst IPv4 Address:\033[m " echononl "\033[1mFirst IPv4 Address:\033[m "
read IPV4_ADDRESS_1 read IPV4_ADDRESS_1
done
_octets=( ${IPV4_ADDRESS_1//\./ } )
DEFAULT_IPV4_GATEWAY_1="${_octets[0]}.${_octets[1]}.${_octets[2]}.1"
DEFAULT_IPV4_NAME_SERVER_1="${_octets[0]}.${_octets[1]}.${_octets[2]}.1"
echo "" if [[ "$LXC_DIST" = "ubuntu" ]] && ([[ "${IPV4_ADDRESS_1,,}" = 'none' ]] \
echo -e "\033[32m--\033[m" || [[ "${IPV4_ADDRESS_1,,}" = 'dhcp' ]]) ; then
echo "" NETWORK_CONFIGURATION_DHCP=true
break
fi
echo " # Insert IPv4 Address for the gateway."
echo " #"
echo " # Type <return> to accept the default '$DEFAULT_IPV4_GATEWAY_1'."
echo ""
echononl "\033[1mIPv4 (first) Gateway Address [$DEFAULT_IPV4_GATEWAY_1]:\033[m "
read IPV4_GATEWAY_1
while ! $(is_valid_ipv4 $IPV4_GATEWAY_1) ; do done
fi
if ! $NETWORK_CONFIGURATION_DHCP ; then
_octets=( ${IPV4_ADDRESS_1//\./ } )
DEFAULT_IPV4_GATEWAY_1="${_octets[0]}.${_octets[1]}.${_octets[2]}.1"
DEFAULT_IPV4_NAME_SERVER_1="${_octets[0]}.${_octets[1]}.${_octets[2]}.1"
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo " # Insert IPv4 Address for the gateway."
echo " #"
echo " # Type <return> to accept the default '$DEFAULT_IPV4_GATEWAY_1'."
echo ""
echononl "\033[1mIPv4 (first) Gateway Address [$DEFAULT_IPV4_GATEWAY_1]:\033[m "
read IPV4_GATEWAY_1
while ! $(is_valid_ipv4 $IPV4_GATEWAY_1) ; do
if [[ -z "$(trim $IPV4_GATEWAY_1)" ]]; then if [[ -z "$(trim $IPV4_GATEWAY_1)" ]]; then
IPV4_GATEWAY_1="$DEFAULT_IPV4_GATEWAY_1" IPV4_GATEWAY_1="$DEFAULT_IPV4_GATEWAY_1"
break break
@ -386,20 +412,20 @@ while ! $(is_valid_ipv4 $IPV4_GATEWAY_1) ; do
fi fi
echononl "\033[1mIPv4 (first) Gateway Address [$DEFAULT_IPV4_GATEWAY_1]:\033[m " echononl "\033[1mIPv4 (first) Gateway Address [$DEFAULT_IPV4_GATEWAY_1]:\033[m "
read IPV4_GATEWAY_1 read IPV4_GATEWAY_1
done done
echo "" echo ""
echo -e "\033[32m--\033[m" echo -e "\033[32m--\033[m"
echo "" echo ""
echo " # Insert Netmask for the first IPv4 Address." echo " # Insert Netmask for the first IPv4 Address."
echo " #" echo " #"
echo " # Type <return> to accept the default '$DEFAULT_IPV4_NETMASK_1'." echo " # Type <return> to accept the default '$DEFAULT_IPV4_NETMASK_1'."
echo "" echo ""
echononl "\033[1mNetmask (first) IPv4 Address [$DEFAULT_IPV4_NETMASK_1]:\033[m " echononl "\033[1mNetmask (first) IPv4 Address [$DEFAULT_IPV4_NETMASK_1]:\033[m "
read IPV4_NETMASK_1 read IPV4_NETMASK_1
while ! $(is_valid_ipv4 $IPV4_NETMASK_1) ; do while ! $(is_valid_ipv4 $IPV4_NETMASK_1) ; do
if [[ -z "$(trim $IPV4_NETMASK_1)" ]]; then if [[ -z "$(trim $IPV4_NETMASK_1)" ]]; then
IPV4_NETMASK_1="$DEFAULT_IPV4_NETMASK_1" IPV4_NETMASK_1="$DEFAULT_IPV4_NETMASK_1"
break break
@ -408,12 +434,12 @@ while ! $(is_valid_ipv4 $IPV4_NETMASK_1) ; do
fi fi
echononl "\033[1mNetmask (first) IPv4 Address [$DEFAULT_IPV4_NETMASK_1]:\033[m " echononl "\033[1mNetmask (first) IPv4 Address [$DEFAULT_IPV4_NETMASK_1]:\033[m "
read IPV4_NETMASK_1 read IPV4_NETMASK_1
done done
IPV4_PREFIX_1="$(netmask2cidr $IPV4_NETMASK_1)" IPV4_PREFIX_1="$(netmask2cidr $IPV4_NETMASK_1)"
IPV6_PREFIX_1=$DEFAULT_IPV6_PREFIX IPV6_PREFIX_1=$DEFAULT_IPV6_PREFIX
if [[ "$LXC_DIST" = "debian" ]]; then if [[ "$LXC_DIST" = "debian" ]]; then
echo "" echo ""
echo -e "\033[32m--\033[m" echo -e "\033[32m--\033[m"
echo "" echo ""
@ -523,7 +549,7 @@ if [[ "$LXC_DIST" = "debian" ]]; then
IPV6_PREFIX_2=$DEFAULT_IPV6_PREFIX IPV6_PREFIX_2=$DEFAULT_IPV6_PREFIX
fi fi
else # if [[ "$LXC_DIST" = "debian" ]]; then else # if [[ "$LXC_DIST" = "debian" ]]; then
echo "" echo ""
echo -e "\033[32m--\033[m" echo -e "\033[32m--\033[m"
@ -567,29 +593,29 @@ else # if [[ "$LXC_DIST" = "debian" ]]; then
IPV6_ADDRESS_1="" IPV6_ADDRESS_1=""
fi fi
fi # if [[ "$LXC_DIST" = "debian" ]]; then fi # if [[ "$LXC_DIST" = "debian" ]]; then
echo "" echo ""
echo -e "\033[32m--\033[m" echo -e "\033[32m--\033[m"
echo "" echo ""
echo " # Insert first IPv6 Address for the new LX Containers." echo " # Insert first IPv6 Address for the new LX Containers."
echo " #" echo " #"
echo -e " # Type \033[33mNone\033[m if no ipv6-address should be assigned" echo -e " # Type \033[33mNone\033[m if no ipv6-address should be assigned"
echo " #" echo " #"
echo "" echo ""
echononl "\033[1mFirst IPv6 Address:\033[m " echononl "\033[1mFirst IPv6 Address:\033[m "
read IPV6_ADDRESS_1 read IPV6_ADDRESS_1
while [[ -z "$(trim $IPV6_ADDRESS_1)" ]]; do while [[ -z "$(trim $IPV6_ADDRESS_1)" ]]; do
warn "Parameter is needed. Try again.." warn "Parameter is needed. Try again.."
echononl "\033[1mFirst IPv6 Address:\033[m " echononl "\033[1mFirst IPv6 Address:\033[m "
read IPV6_ADDRESS_1 read IPV6_ADDRESS_1
done done
if [[ "${IPV6_ADDRESS_1,,}" = 'none' ]] ; then if [[ "${IPV6_ADDRESS_1,,}" = 'none' ]] ; then
IPV6_ADDRESS_1="" IPV6_ADDRESS_1=""
fi fi
if [[ -n "$IPV6_ADDRESS_1" ]] ; then if [[ -n "$IPV6_ADDRESS_1" ]] ; then
echo "" echo ""
echo -e "\033[32m--\033[m" echo -e "\033[32m--\033[m"
echo "" echo ""
@ -605,7 +631,9 @@ if [[ -n "$IPV6_ADDRESS_1" ]] ; then
echononl "\033[1mFirst IPv6 i(first) Gateway Address:\033[m " echononl "\033[1mFirst IPv6 i(first) Gateway Address:\033[m "
read IPV6_GATEWAY_1 read IPV6_GATEWAY_1
done done
fi fi
fi # if ! $NETWORK_CONFIGURATION_DHCP ; then
echo "" echo ""
@ -618,7 +646,7 @@ echo ""
echononl "\033[1mFull qualified hostname:\033[m " echononl "\033[1mFull qualified hostname:\033[m "
read FQ_HOSTNAME read FQ_HOSTNAME
while [[ -z "$(trim $IPV4_NETMASK_1)" ]]; do while [[ -z "$(trim $FQ_HOSTNAME)" ]]; do
warn "Parameter is needed. Try again" warn "Parameter is needed. Try again"
echononl "\033[1mFull qualified hostname::\033[m " echononl "\033[1mFull qualified hostname::\033[m "
read FQ_HOSTNAME read FQ_HOSTNAME
@ -649,24 +677,28 @@ echo " Code name (or release number)............: $LXC_RELEASE"
echo "" echo ""
echo " MAC Address (first) network device.......: $MAC_ADDRESS_1" echo " MAC Address (first) network device.......: $MAC_ADDRESS_1"
echo "" echo ""
echo " IPv4 Address (first).....................: $IPV4_ADDRESS_1" if $NETWORK_CONFIGURATION_DHCP ; then
echo " IPv4 Gateway Address (first).............: $IPV4_GATEWAY_1" echo -e " Network Configuration....................: \033[33mvia DHCP\033[m"
echo " Netmask first IPv4 Address...............: $IPV4_NETMASK_1" else
echo " CIDR (IPv4 Prefix) of netmask............: $IPV4_PREFIX_1" echo " IPv4 Address (first).....................: $IPV4_ADDRESS_1"
echo "" echo " IPv4 Gateway Address (first).............: $IPV4_GATEWAY_1"
if [[ -n "$IPV6_ADDRESS_1" ]] ; then echo " Netmask first IPv4 Address...............: $IPV4_NETMASK_1"
echo " CIDR (IPv4 Prefix) of netmask............: $IPV4_PREFIX_1"
echo ""
if [[ -n "$IPV6_ADDRESS_1" ]] ; then
echo " IPv6 Address (first).....................: $IPV6_ADDRESS_1" echo " IPv6 Address (first).....................: $IPV6_ADDRESS_1"
echo " IPv6 Gateway Address (first).............: $IPV6_GATEWAY_1" echo " IPv6 Gateway Address (first).............: $IPV6_GATEWAY_1"
else else
echo -e " IPv6 Address (first).....................: - \033[33mNot set\033[m - " echo -e " IPv6 Address (first).....................: - \033[33mNot set\033[m - "
fi fi
if $_second_ipv4 ; then if $_second_ipv4 ; then
echo "" echo ""
echo " MAC Address (second) network device......: $MAC_ADDRESS_2" echo " MAC Address (second) network device......: $MAC_ADDRESS_2"
echo " IPv4 Address (second)....................: $IPV4_ADDRESS_2" echo " IPv4 Address (second)....................: $IPV4_ADDRESS_2"
echo " IPv4 Gateway Address (second)............: $IPV4_GATEWAY_2" echo " IPv4 Gateway Address (second)............: $IPV4_GATEWAY_2"
echo " Netmask second IPv4 Address..............: $IPV4_NETMASK_2" echo " Netmask second IPv4 Address..............: $IPV4_NETMASK_2"
echo " CIDR (IPv4 Prefix) of netmask............: $IPV4_PREFIX_2" echo " CIDR (IPv4 Prefix) of netmask............: $IPV4_PREFIX_2"
fi
fi fi
echo "" echo ""
echo " Hostname.................................: $HOSTNAME" echo " Hostname.................................: $HOSTNAME"
@ -799,7 +831,7 @@ echo -en "\033[1G \033[1;30m[ ... ] \033[32m$msg\033[m"
if [[ "$LXC_DIST" = "ubuntu" ]] ; then if [[ "$LXC_DIST" = "ubuntu" ]] ; then
lxc-create -n $LXC_NAME -t download -P "$(dirname "$LXC_CONTAINER_DIR")" -- \ lxc-create -n $LXC_NAME -t download -P "$(dirname "$LXC_CONTAINER_DIR")" -- \
-d $LXC_DIST --release $LXC_RELEASE --arch amd64 > /dev/null 2> $err_msg --no-validate -d $LXC_DIST --release $LXC_RELEASE --arch amd64 > /dev/null 2> $err_msg
elif [[ "$LXC_DIST" = "debian" ]]; then elif [[ "$LXC_DIST" = "debian" ]]; then
lxc-create -n $LXC_NAME -t $LXC_DIST -P "$(dirname "$LXC_CONTAINER_DIR")" -- \ lxc-create -n $LXC_NAME -t $LXC_DIST -P "$(dirname "$LXC_CONTAINER_DIR")" -- \
--release $LXC_RELEASE --arch amd64 > /dev/null 2> $err_msg --release $LXC_RELEASE --arch amd64 > /dev/null 2> $err_msg
@ -1008,6 +1040,7 @@ lxc.network.flags = up
lxc.network.link = br0 lxc.network.link = br0
lxc.network.name = eth0 lxc.network.name = eth0
lxc.network.hwaddr = $MAC_ADDRESS_1 lxc.network.hwaddr = $MAC_ADDRESS_1
# IPv4 # IPv4
lxc.network.ipv4 = ${IPV4_ADDRESS_1}/$IPV4_PREFIX_1 lxc.network.ipv4 = ${IPV4_ADDRESS_1}/$IPV4_PREFIX_1
lxc.network.ipv4.gateway = ${IPV4_GATEWAY_1} lxc.network.ipv4.gateway = ${IPV4_GATEWAY_1}
@ -1059,7 +1092,7 @@ EOF
fi fi
else else
cat << EOF > ${LXC_CONTAINER_DIR}/config 2> $err_msg cat << EOF >> ${LXC_CONTAINER_DIR}/config 2> $err_msg
lxc.rootfs.path = ${LXC_CONTAINER_DIR}/rootfs lxc.rootfs.path = ${LXC_CONTAINER_DIR}/rootfs
# Common configuration # Common configuration
@ -1081,6 +1114,7 @@ lxc.net.0.flags = up
lxc.net.0.link = br0 lxc.net.0.link = br0
lxc.net.0.name = eth0 lxc.net.0.name = eth0
lxc.net.0.hwaddr = $MAC_ADDRESS_1 lxc.net.0.hwaddr = $MAC_ADDRESS_1
# IPv4 # IPv4
lxc.net.0.ipv4.address = ${IPV4_ADDRESS_1}/$IPV4_PREFIX_1 lxc.net.0.ipv4.address = ${IPV4_ADDRESS_1}/$IPV4_PREFIX_1
lxc.net.0.ipv4.gateway = ${IPV4_GATEWAY_1} lxc.net.0.ipv4.gateway = ${IPV4_GATEWAY_1}
@ -1571,7 +1605,7 @@ EOF
echo -e "\033[1G [ \033[32m\033[1mok\033[m ] ${msg_ok}${blank_signs}" echo -e "\033[1G [ \033[32m\033[1mok\033[m ] ${msg_ok}${blank_signs}"
fi fi
else # if [[ "$LXC_DIST" = "debian" ]]; elif [[ "$LXC_DIST" = "ubuntu" ]]; then
msg="Backup file '${LXC_CONTAINER_DIR}/rootfs/etc/netplan/10-lxc.yaml" msg="Backup file '${LXC_CONTAINER_DIR}/rootfs/etc/netplan/10-lxc.yaml"
echo -en "\033[1G \033[1;30m[ ... ] \033[32m$msg\033[m" echo -en "\033[1G \033[1;30m[ ... ] \033[32m$msg\033[m"
@ -1615,6 +1649,19 @@ else # if [[ "$LXC_DIST" = "debian" ]];
echo -en "\033[1G \033[1;30m[ \033[5m\033[1m...\033[m ] \033[32m$msg\033[m" echo -en "\033[1G \033[1;30m[ \033[5m\033[1m...\033[m ] \033[32m$msg\033[m"
_failed=false _failed=false
if $NETWORK_CONFIGURATION_DHCP ; then
cat << EOF > ${LXC_CONTAINER_DIR}/rootfs/etc/netplan/10-lxc.yaml
network:
version: 2
ethernets:
eth0:
dhcp4: true
dhcp-identifier: mac
EOF
else
cat << EOF > ${LXC_CONTAINER_DIR}/rootfs/etc/netplan/10-lxc.yaml cat << EOF > ${LXC_CONTAINER_DIR}/rootfs/etc/netplan/10-lxc.yaml
network: network:
version: 2 version: 2
@ -1632,6 +1679,9 @@ network:
- ${SEARCH_DOMAIN} - ${SEARCH_DOMAIN}
EOF EOF
fi # if $NETWORK_CONFIGURATION_DHCP
if [[ $? -ne 0 ]]; then if [[ $? -ne 0 ]]; then
_failed=true _failed=true
fi fi