mirror of
				https://github.com/flynx/proxmox-utils.git
				synced 2025-11-03 21:50:10 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			135 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			135 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/bash
 | 
						|
#----------------------------------------------------------------------
 | 
						|
 | 
						|
cd $(dirname $0)
 | 
						|
PATH=$PATH:$(dirname "$(pwd)")
 | 
						|
 | 
						|
 | 
						|
#----------------------------------------------------------------------
 | 
						|
 | 
						|
source ../.pct-helpers
 | 
						|
 | 
						|
 | 
						|
#----------------------------------------------------------------------
 | 
						|
 | 
						|
need ifreload
 | 
						|
 | 
						|
 | 
						|
#----------------------------------------------------------------------
 | 
						|
 | 
						|
readConfig
 | 
						|
 | 
						|
 | 
						|
DFL_WAN_PORT=${DFL_WAN_PORT:-enp5s0}
 | 
						|
DFL_ADMIN_PORT=${DFL_ADMIN_PORT:-enp2s0}
 | 
						|
 | 
						|
DFL_HOST_ADMIN_IP=${PROXMOX_ADMIN_IP:-10.0.0.254/24}
 | 
						|
 | 
						|
 | 
						|
SOFTWARE=(
 | 
						|
	ifupdown2
 | 
						|
	make
 | 
						|
	w3m links
 | 
						|
	tree
 | 
						|
	qrencode
 | 
						|
	htop iftop iotop
 | 
						|
	tmux
 | 
						|
)
 | 
						|
 | 
						|
 | 
						|
# XXX
 | 
						|
#readVars
 | 
						|
 | 
						|
 | 
						|
#----------------------------------------------------------------------
 | 
						|
 | 
						|
# Tools
 | 
						|
if xreadYes "# Update system?" UPDATE ; then
 | 
						|
	@ apt update
 | 
						|
	@ apt upgrade
 | 
						|
fi
 | 
						|
if xreadYes "# Install additional apps?" APPS ; then
 | 
						|
	@ apt install ${SOFTWARE[@]}
 | 
						|
fi
 | 
						|
 | 
						|
# Bridges...
 | 
						|
# XXX need to:
 | 
						|
#		- bootstrap this
 | 
						|
#		- setup the gate, ssh, and wireguard
 | 
						|
#		- inalize
 | 
						|
# XXX /etc/hosts
 | 
						|
# XXX save config???
 | 
						|
# XXX should we do things in ./staging ???
 | 
						|
if xreadYes "# Create bridges?" BRIDGES ; then
 | 
						|
	xread "WAN port: " WAN_PORT 
 | 
						|
	xread "ADMIN port: " ADMIN_PORT 
 | 
						|
	xread "Host ADMIN IP: " HOST_ADMIN_IP
 | 
						|
	xread "Gate ADMIN IP: " GATE_ADMIN_IP
 | 
						|
	readBridgeVars
 | 
						|
 | 
						|
	# check if new bridges already exist in interfaces...
 | 
						|
	if [ -e /etc/network/interfaces ] \
 | 
						|
			&& grep -q \
 | 
						|
				"vmbr\(${WAN_BRIDGE}\|${LAN_BRIDGE}\|${ADMIN_BRIDGE}\)" \
 | 
						|
				/etc/network/interfaces ; then
 | 
						|
		conflict=
 | 
						|
		for br in WAN_BRIDGE LAN_BRIDGE ADMIN_BRIDGE ; do
 | 
						|
			if grep -q "vmbr${!br}" /etc/network/interfaces ; then
 | 
						|
				conflict="${conflict}, vmbr${!br} (${br})"
 | 
						|
			fi
 | 
						|
		done
 | 
						|
		echo "ERROR: will not overwrite existing bridges: ${conflict:2}" >&2
 | 
						|
		exit 1
 | 
						|
	fi
 | 
						|
 | 
						|
	@ cp /etc/network/interfaces{,.new}
 | 
						|
 | 
						|
	BRIDGES="$(\
 | 
						|
		cat bridges.tpl \
 | 
						|
			| expandPCTTemplate WAN_PORT ADMIN_PORT)"
 | 
						|
 | 
						|
	if [ -z "$DRY_RUN" ] ; then
 | 
						|
		# XXX add $BRIDGES to /etc/network/interfaces either before the 
 | 
						|
		#		source command or at the end...
 | 
						|
		# XXX
 | 
						|
		echo
 | 
						|
	fi
 | 
						|
 | 
						|
	if reviewApplyChanges /etc/network/interfaces ; then
 | 
						|
		@ ifreload -a
 | 
						|
	fi
 | 
						|
fi
 | 
						|
 | 
						|
 | 
						|
echo "# Building config..."
 | 
						|
# XXX do we need any extra vars here???
 | 
						|
buildAssets
 | 
						|
 | 
						|
 | 
						|
# XXX /etc/hosts???
 | 
						|
 | 
						|
 | 
						|
# DNS
 | 
						|
if xreadYes "# Update DNS?" DNS ; then
 | 
						|
	file=/etc/resolv.conf
 | 
						|
	@ cp "staging/${file}" "${file}".new
 | 
						|
	reviewApplyChanges "${file}"
 | 
						|
fi
 | 
						|
 | 
						|
 | 
						|
# Firewall
 | 
						|
if xreadYes "# Update firewall rules?" FIREWALL ; then
 | 
						|
	file=/etc/pve/firewall/cluster.fw
 | 
						|
	@ cp "staging/${file}" "${file}".new
 | 
						|
	reviewApplyChanges "${file}"
 | 
						|
fi
 | 
						|
 | 
						|
 | 
						|
showNotes
 | 
						|
echo "# Done."
 | 
						|
 | 
						|
 | 
						|
 | 
						|
#----------------------------------------------------------------------
 | 
						|
# vim:set ts=4 sw=4 :
 |