forked from Spark/builder
		
	
		
			
	
	
		
			71 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			71 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|  | #!/usr/bin/env bash | ||
|  | 
 | ||
|  | mkconf() { | ||
|  | 	for i in "${includes[@]}"; do | ||
|  | 		echo "lxc.include = $lxf_conf_dir/$i.conf" | ||
|  | 	done | ||
|  | 
 | ||
|  | 	echo "lxc.rootfs.path = $lxf_cont_dir/$cont_name/rootfs" | ||
|  | 	echo "lxc.uts.name = $cont_name" | ||
|  | } | ||
|  | 
 | ||
|  | mount_cont() { | ||
|  | 	ov-mount -n "$cont_name" "$rootfs" "$cont_dir/rootfs" | ||
|  | } | ||
|  | 
 | ||
|  | lxf_conf_dir='/etc/lxf/conf' | ||
|  | lxf_cont_dir='/var/lib/lxf/cont' | ||
|  | lxf_rootfs_dir='/var/lib/lxf/fs' | ||
|  | 
 | ||
|  | [[ -f '/etc/lxf.conf' ]] && source '/etc/lxf.conf' | ||
|  | 
 | ||
|  | while (( $# )); do | ||
|  | 	case $1 in | ||
|  | 		(-i) includes+=( "$2" ); shift;; | ||
|  | 		(-r) rootfs="$2"; shift;; | ||
|  | 
 | ||
|  | 		(--cont-dir) lxf_cont_dir=$2; shift;; | ||
|  | 		(--conf-dir) lxf_conf_dir=$2; shift;; | ||
|  | 
 | ||
|  | 		(--) shift; break;; | ||
|  | 		(-*) echo "Unknown key: $1" >&2: exit 1;; | ||
|  | 		(*) break;; | ||
|  | 	esac | ||
|  | 
 | ||
|  | 	shift | ||
|  | done | ||
|  | 
 | ||
|  | 
 | ||
|  | action=$1; shift; [[ $action ]] || exit 1 | ||
|  | cont_name=$1; shift; [[ $cont_name ]] || exit 1 | ||
|  | 
 | ||
|  | cont_dir="$lxf_cont_dir/$cont_name" | ||
|  | 
 | ||
|  | case $action in | ||
|  | 	(create|new) | ||
|  | 		[[ "$rootfs" ]] || exit 1 | ||
|  | 		rootfs="$lxf_rootfs_dir/$rootfs" | ||
|  | 
 | ||
|  | 		[[ -d "$cont_dir" ]] && { | ||
|  | 			printf 'Container already exists: %s\n' "$cont_dir" >&2 | ||
|  | 			exit 1 | ||
|  | 		} | ||
|  | 
 | ||
|  | 		mkdir -p "$cont_dir" || exit $? | ||
|  | 
 | ||
|  | 		mkconf > "$cont_dir/config" | ||
|  | 		mount_cont | ||
|  | 	;; | ||
|  | 
 | ||
|  | 	(mount) | ||
|  | 		mountpoint -q "$cont_dir/rootfs" && { | ||
|  | 			printf 'Container already mounted: %s\n' "$cont_dir/rootfs" >&2 | ||
|  | 			exit 1 | ||
|  | 		} | ||
|  | 
 | ||
|  | 		mount_cont | ||
|  | 	;; | ||
|  | 
 | ||
|  | 	(umount) umount "$cont_dir/rootfs";; | ||
|  | esac |