forked from pinecrypt/butterknife-provisioning-image
		
	
		
			Some checks reported errors
		
		
	
	continuous-integration/drone Build encountered an error
				
			
		
			
				
	
	
		
			76 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| 
 | |
| set -e
 | |
| 
 | |
| action=$(dialog --menu "Advanced options, consider your warranty VOID!" 0 0 0 \
 | |
|     shell           "Drop to shell" \
 | |
|     instance        "Instance maintenance and recovery" \
 | |
|     subvol          "Delete instances/templates" \
 | |
|     2>&1 >$(tty))
 | |
| clear
 | |
| 
 | |
| case $action in
 | |
|     shell)
 | |
|         sh
 | |
|     ;;
 | |
|     instance)
 | |
|         export BUTTERKNIFE_PARTITION=$(butterknife-select-btrfs-filesystem 2>&1 >$(tty))
 | |
| 
 | |
|         # Probe instances
 | |
|         pool_mountpoint=$(mktemp -d)
 | |
|         subvols=$(mktemp)
 | |
|         mount $BUTTERKNIFE_PARTITION $pool_mountpoint -o subvol=/
 | |
|         for subvol in $(ls $pool_mountpoint | grep "^@root:" | sort -r); do
 | |
|             echo "$subvol \"\""
 | |
|         done > $subvols
 | |
|         if [ -d $pool_mountpoint/deployments ]; then
 | |
|             for timestamp in $(ls $pool_mountpoint/deployments | sort -r); do
 | |
|                 echo "deployments/$timestamp \"\""
 | |
|             done >> $subvols
 | |
|         fi
 | |
|         umount $pool_mountpoint
 | |
|         rmdir $pool_mountpoint
 | |
| 
 | |
|         # Select instance
 | |
|         export BUTTERKNIFE_DEPLOY_SUBVOL=$(dialog \
 | |
|             --menu "Select instance" 0 0 0 \
 | |
|             --file $subvols 2>&1 >$(tty))
 | |
| 
 | |
|         # TODO: Export BUTTERKNIFE_DISK for grub-install MBR
 | |
|         instance_mountpoint=$(mktemp -d)
 | |
|         mount $BUTTERKNIFE_PARTITION -o subvol=$BUTTERKNIFE_DEPLOY_SUBVOL $instance_mountpoint
 | |
|         mount --bind /dev $instance_mountpoint/dev
 | |
|         mount --bind /sys $instance_mountpoint/sys
 | |
|         mount --bind /proc $instance_mountpoint/proc
 | |
|         if [ -d $instance_mountpoint/var/lib/butterknife/persistent ]; then
 | |
|             mount --bind /proc $instance_mountpoint/var/lib/butterknife/persistent
 | |
|         fi
 | |
|         clear
 | |
|         echo "Mounted $BUTTERKNIFE_PARTITION$BUTTERKNIFE_DEPLOY_SUBVOL at $instance_mountpoint"
 | |
|         echo "Chrooting into $instance_mountpoint"
 | |
|         hostname $(cat $instance_mountpoint/etc/hostname)
 | |
|         cat /etc/resolv.conf > $instance_mountpoint/etc/resolv.conf
 | |
|         # Export sensible PATH
 | |
|         export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
 | |
|         chroot $instance_mountpoint butterknife-maintenance
 | |
|         umount -a
 | |
|         rmdir $instance_mountpoint
 | |
|     ;;
 | |
|     subvol)
 | |
|         BUTTERKNIFE_PARTITION=$(butterknife-select-btrfs-filesystem 2>&1 >$(tty))
 | |
|         mountpoint=$(mktemp -d)
 | |
|         mount $BUTTERKNIFE_PARTITION -o subvol=/ $mountpoint
 | |
|         subvols=$(mktemp)
 | |
|         for subvol in $(btrfs subvol list $mountpoint | cut -d ' ' -f 9 | sort -r); do
 | |
|             echo "$subvol \"\""
 | |
|         done > $subvols
 | |
|         selected_subvol=$(dialog --menu "Select subvolume to delete on $BUTTERKNIFE_PARTITION" 0 0 0 \
 | |
|             --file $subvols 2>&1 >$(tty))
 | |
|         rm -f $subvols
 | |
|         btrfs subvol delete -c $mountpoint/$selected_subvol
 | |
|         umount $mountpoint
 | |
|         rmdir $mountpoint
 | |
|     ;;
 | |
| esac
 | |
| 
 |