create-lx-container.sh: add support vor LXC Version 3.
This commit is contained in:
		| @@ -142,6 +142,35 @@ netmask2cidr() { | ||||
|   echo "${len}" | ||||
| } | ||||
|  | ||||
| detect_os_1 () { | ||||
|  | ||||
|    if $(which lsb_release > /dev/null 2>&1) ; then | ||||
|  | ||||
|       os_dist="$(lsb_release -i | awk '{print tolower($3)}')" | ||||
|       os_version="$(lsb_release -r | awk '{print tolower($2)}')" | ||||
|       os_codename="$(lsb_release -c | awk '{print tolower($2)}')" | ||||
|  | ||||
|       if [[ "$os_dist" = "debian" ]]; then | ||||
|          if $(echo "$os_version" | grep -q '\.') ; then | ||||
|             os_version=$(echo "$os_version" | cut --delimiter='.' -f1) | ||||
|          fi | ||||
|       fi | ||||
|  | ||||
|    elif [[ -e "/etc/os-release" ]]; then | ||||
|  | ||||
|       . /etc/os-release | ||||
|  | ||||
|       os_dist=$ID | ||||
|       os_version=${VERSION_ID} | ||||
|  | ||||
|    fi | ||||
|  | ||||
|    # remove whitespace from os_dist and os_version | ||||
|    os_dist="${os_dist// /}" | ||||
|    os_version="${os_version// /}" | ||||
|  | ||||
| } | ||||
|  | ||||
|  | ||||
| # ------------- | ||||
| # - Running in a terminal? | ||||
| @@ -166,9 +195,10 @@ DEFAULT_IPV4_NETMASK_1="255.255.255.0" | ||||
|  | ||||
| DEFAULT_IPV6_PREFIX=64 | ||||
|  | ||||
| DEFAULT_CODENAME="$(lsb_release -c | awk '{print tolower($2)}')" | ||||
|  | ||||
| if [[ -f "$conf_file" ]]; then | ||||
|    source "$conf_file" | ||||
|    fatal "Configuration file '$(basename ${conf_file})' not found!" | ||||
| else | ||||
|    warn "No Configuration file '$(basename ${conf_file})'. Using default values.." | ||||
| fi | ||||
| @@ -278,16 +308,19 @@ echo "" | ||||
|  | ||||
| echo "   # Insert the Code name of the Linux Distribution." | ||||
| echo "   #" | ||||
| echo "   # Example for debian: 'stretch'" | ||||
| echo "   # Type <return> to accept the default '$DEFAULT_CODENAME'." | ||||
| echo "" | ||||
| echononl "\033[1mCode name:\033[m " | ||||
| echononl "\033[1mCode name [${DEFAULT_CODENAME}]:\033[m " | ||||
| read LXC_RELEASE | ||||
| if [[ -z "$(trim $LXC_RELEASE)" ]] ; then | ||||
|    LXC_RELEASE="$DEFAULT_CODENAME" | ||||
| fi | ||||
|  | ||||
| while [[ -z "$(trim $LXC_RELEASE)" ]]; do | ||||
|    warn "Parameter is needed. Try again.." | ||||
| 	echononl "\033[1mCode name:\033[m " | ||||
|    read LXC_RELEASE | ||||
| done | ||||
| #while [[ -z "$(trim $LXC_RELEASE)" ]]; do | ||||
| #   warn "Parameter is needed. Try again.." | ||||
| #	echononl "\033[1mCode name:\033[m " | ||||
| #   read LXC_RELEASE | ||||
| #done | ||||
|  | ||||
| echo "" | ||||
| echo -e "\033[32m--\033[m" | ||||
| @@ -541,6 +574,11 @@ while [[ -z "$(trim $IPV4_NETMASK_1)" ]]; do | ||||
| done | ||||
| HOSTNAME="$(echo "$FQ_HOSTNAME" | cut -f1 -d'.')" | ||||
|  | ||||
| # - Determin LXC Version | ||||
| # - | ||||
| LXC_VERSION="$(lxc-info --version)" | ||||
| declare -i LXC_MAJOR_VERSION=$(echo $LXC_VERSION | cut -d '.' -f1) | ||||
|  | ||||
|  | ||||
| echo "" | ||||
| echo "" | ||||
| @@ -548,6 +586,9 @@ echo -e "  \033[32m---\033[m" | ||||
| echo -e "   \033[32m\033[1mParameter Summary - create new LX Container \033[m\033[1m$LXC_NAME\033[m" | ||||
| echo -e "  \033[32m---\033[m" | ||||
| echo "" | ||||
| echo "   LXC Version..............................: $LXC_VERSION" | ||||
| echo "   LXC Major Version........................: $LXC_MAJOR_VERSION" | ||||
| echo "" | ||||
| echo "   Base directory LX Containers.............: $LXC_ROOT_DIR" | ||||
| echo "   Root directory new LX Container..........: $LXC_CONTAINER_DIR" | ||||
| echo "" | ||||
| @@ -556,16 +597,18 @@ echo "   Linux distribution.......................: $LXC_DIST" | ||||
| echo "   Code name (or release number)............: $LXC_RELEASE" | ||||
| echo "" | ||||
| echo "   MAC Address (first) network device.......: $MAC_ADDRESS_1" | ||||
| echo "" | ||||
| echo "   IPv4 Address (first).....................: $IPV4_ADDRESS_1" | ||||
| echo "   IPv4 Gateway Address (first).............: $IPV4_GATEWAY_1" | ||||
| 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 Gateway Address (first).............: $IPV6_GATEWAY_1" | ||||
| else | ||||
|    echo -e "   IPv6 Address (first).....................: - \033[33mNot set\033[m - " | ||||
| fi | ||||
| echo "   Netmask first IPv4 Address...............: $IPV4_NETMASK_1" | ||||
| echo "   CIDR (IPv4 Prefix) of netmask............: $IPV4_PREFIX_1" | ||||
| if $_second_ipv4 ; then | ||||
| 	echo "" | ||||
| 	echo "   MAC Address (second) network device......: $MAC_ADDRESS_2" | ||||
| @@ -861,11 +904,12 @@ fi | ||||
|  | ||||
| # - Create the Container configuration file | ||||
| # - | ||||
| msg="Create Container Configuration '${LXC_CONTAINER_DIR}/config' .." | ||||
| msg="Create Container Configuration '${LXC_CONTAINER_DIR}/config (LXC Version $LXC_VERSION)' .." | ||||
| echo -en "\033[1G   \033[1;30m[ ... ]    \033[32m$msg\033[m" | ||||
|  | ||||
| _failed=false | ||||
| cat << EOF > ${LXC_CONTAINER_DIR}/config 2> $err_msg | ||||
| if [[ $LXC_MAJOR_VERSION -lt 3 ]]; then | ||||
|    cat << EOF > ${LXC_CONTAINER_DIR}/config 2> $err_msg | ||||
| lxc.rootfs = ${LXC_CONTAINER_DIR}/rootfs | ||||
|  | ||||
| # Common configuration | ||||
| @@ -893,25 +937,25 @@ lxc.network.ipv4 = ${IPV4_ADDRESS_1}/$IPV4_PREFIX_1 | ||||
| lxc.network.ipv4.gateway = ${IPV4_GATEWAY_1} | ||||
| # IPv6 | ||||
| EOF | ||||
| if [[ -n "${IPV6_ADDRESS_1}" ]] ; then | ||||
|    cat << EOF >> ${LXC_CONTAINER_DIR}/config 2>> $err_msg | ||||
|    if [[ -n "${IPV6_ADDRESS_1}" ]] ; then | ||||
|       cat << EOF >> ${LXC_CONTAINER_DIR}/config 2>> $err_msg | ||||
| lxc.network.ipv6 = ${IPV6_ADDRESS_1}/$IPV6_PREFIX_1 | ||||
| lxc.network.ipv6.gateway = $IPV6_GATEWAY_1 | ||||
| EOF | ||||
| else | ||||
|    cat << EOF >> ${LXC_CONTAINER_DIR}/config 2>> $err_msg | ||||
|    else | ||||
|       cat << EOF >> ${LXC_CONTAINER_DIR}/config 2>> $err_msg | ||||
| #lxc.network.ipv6 = ${IPV6_ADDRESS_1}/$IPV6_PREFIX_1 | ||||
| #lxc.network.ipv6.gateway = $IPV6_GATEWAY_1 | ||||
| EOF | ||||
|  | ||||
| fi | ||||
|    fi | ||||
|  | ||||
| if [[ $? -ne 0 ]]; then | ||||
| 	_failed=true | ||||
| fi | ||||
|    if [[ $? -ne 0 ]]; then | ||||
|       _failed=true | ||||
|    fi | ||||
|  | ||||
| if [[ -n "$IPV4_ADDRESS_2" ]]; then | ||||
|    cat << EOF >> ${LXC_CONTAINER_DIR}/config 2>> $err_msg | ||||
|    if [[ -n "$IPV4_ADDRESS_2" ]]; then | ||||
|       cat << EOF >> ${LXC_CONTAINER_DIR}/config 2>> $err_msg | ||||
| ###  Device 2 | ||||
| lxc.network.type = veth | ||||
| lxc.network.flags = up | ||||
| @@ -922,20 +966,103 @@ lxc.network.hwaddr = $MAC_ADDRESS_2 | ||||
| lxc.network.ipv4 = ${IPV4_ADDRESS_2}/$IPV4_PREFIX_2 | ||||
| ## IPv6 | ||||
| EOF | ||||
|    if [[ -n "$IPV4_ADDRESS_2" ]]; then | ||||
|       cat << EOF >> ${LXC_CONTAINER_DIR}/config 2>> $err_msg | ||||
|       if [[ -n "$IPV6_ADDRESS_2" ]]; then | ||||
|          cat << EOF >> ${LXC_CONTAINER_DIR}/config 2>> $err_msg | ||||
| lxc.network.ipv6 = ${IPV6_ADDRESS_2}/$IPV6_PREFIX_2 | ||||
| EOF | ||||
|       else | ||||
|          cat << EOF >> ${LXC_CONTAINER_DIR}/config 2>> $err_msg | ||||
| #lxc.network.ipv6 = ${IPV6_ADDRESS_2}/$IPV6_PREFIX_2 | ||||
|  | ||||
| EOF | ||||
|       fi | ||||
|  | ||||
|       if [[ $? -ne 0 ]]; then | ||||
|          _failed=true | ||||
|       fi | ||||
|    fi | ||||
| else | ||||
|  | ||||
|  | ||||
|  | ||||
|    cat << EOF > ${LXC_CONTAINER_DIR}/config 2> $err_msg | ||||
| lxc.rootfs.path = ${LXC_CONTAINER_DIR}/rootfs | ||||
|  | ||||
| # Common configuration | ||||
| lxc.include = /usr/share/lxc/config/${LXC_DIST}.common.conf | ||||
|  | ||||
|  | ||||
| # Container specific configuration | ||||
| lxc.mount.fstab = ${LXC_CONTAINER_DIR}/fstab | ||||
| lxc.uts.name = $LXC_NAME | ||||
| lxc.arch = amd64 | ||||
| lxc.autodev = 1 | ||||
|  | ||||
|  | ||||
| # Network configuration | ||||
|  | ||||
| ###  Device 1 | ||||
| lxc.net.0.type = veth | ||||
| lxc.net.0.flags = up | ||||
| lxc.net.0.link = br0 | ||||
| lxc.net.0.name = eth0 | ||||
| lxc.net.0.hwaddr = $MAC_ADDRESS_1 | ||||
| # IPv4 | ||||
| lxc.net.0.ipv4.address = ${IPV4_ADDRESS_1}/$IPV4_PREFIX_1 | ||||
| lxc.net.0.ipv4.gateway = ${IPV4_GATEWAY_1} | ||||
| # IPv6 | ||||
| EOF | ||||
|    if [[ -n "${IPV6_ADDRESS_1}" ]] ; then | ||||
|       cat << EOF >> ${LXC_CONTAINER_DIR}/config 2>> $err_msg | ||||
| lxc.net.0.ipv6.address = ${IPV6_ADDRESS_1}/$IPV6_PREFIX_1 | ||||
| lxc.net.0.ipv6.gateway = $IPV6_GATEWAY_1 | ||||
| EOF | ||||
|    else | ||||
|       cat << EOF >> ${LXC_CONTAINER_DIR}/config 2>> $err_msg | ||||
| lxc.network.ipv6 = ${IPV6_ADDRESS_2}/$IPV6_PREFIX_2 | ||||
|  | ||||
| #lxc.net.0.ipv6.address = ${IPV6_ADDRESS_1}/$IPV6_PREFIX_1 | ||||
| #lxc.net.0.ipv6.gateway = $IPV6_GATEWAY_1 | ||||
| EOF | ||||
|  | ||||
|    fi | ||||
|  | ||||
| 	if [[ $? -ne 0 ]]; then | ||||
| 		_failed=true | ||||
| 	fi | ||||
|    if [[ $? -ne 0 ]]; then | ||||
|       _failed=true | ||||
|    fi | ||||
|  | ||||
|    if [[ -n "$IPV4_ADDRESS_2" ]]; then | ||||
|       cat << EOF >> ${LXC_CONTAINER_DIR}/config 2>> $err_msg | ||||
| ###  Device 2 | ||||
| lxc.net.1.type = veth | ||||
| lxc.net.1.flags = up | ||||
| lxc.net.1.link = br0 | ||||
| lxc.net.1.name = eth1 | ||||
| lxc.net.1.hwaddr = $MAC_ADDRESS_2 | ||||
| ## IPv4 | ||||
| lxc.net.1.ipv4.address = ${IPV4_ADDRESS_2}/$IPV4_PREFIX_2 | ||||
| ## IPv6 | ||||
| EOF | ||||
|       if [[ -n "$IPV6_ADDRESS_2" ]]; then | ||||
|          cat << EOF >> ${LXC_CONTAINER_DIR}/config 2>> $err_msg | ||||
| lxc.net.1.ipv6.address = ${IPV6_ADDRESS_2}/$IPV6_PREFIX_2 | ||||
| EOF | ||||
|       else | ||||
|          cat << EOF >> ${LXC_CONTAINER_DIR}/config 2>> $err_msg | ||||
| #lxc.net.1.ipv6.address = ${IPV6_ADDRESS_2}/$IPV6_PREFIX_2 | ||||
|  | ||||
| EOF | ||||
|       fi | ||||
|  | ||||
|       if [[ $? -ne 0 ]]; then | ||||
|          _failed=true | ||||
|       fi | ||||
|    fi | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| fi | ||||
|  | ||||
| cat << EOF >> ${LXC_CONTAINER_DIR}/config 2>> $err_msg | ||||
| @@ -950,6 +1077,10 @@ cat << EOF >> ${LXC_CONTAINER_DIR}/config 2>> $err_msg | ||||
| lxc.start.auto = 1 | ||||
| lxc.start.delay = 5 | ||||
| lxc.start.order = 100 | ||||
|  | ||||
| # Limt memory to 1GB less than full Memory of the server | ||||
| # - | ||||
| lxc.cgroup.memory.limit_in_bytes = $(( $(free -b | grep -oP '\d+' | head -n 1)-1000000000 )) | ||||
| EOF | ||||
| if [[ $? -ne 0 ]]; then | ||||
| 	_failed=true | ||||
|   | ||||
		Reference in New Issue
	
	Block a user