def test_format_and_mount(): """ Format, mount and unmount a block device """ from fabtools.disk import ismounted, mkfs, mount assert not ismounted('/dev/loop0') try: # Make a loopback block device sudo('dd if=/dev/zero of=bigfile bs=1024 count=30720') sudo('losetup /dev/loop0 bigfile') # Format the block device mkfs('/dev/loop0', 'ext3') # Mount the block device require_directory('/mnt/loop', use_sudo=True) mount('/dev/loop0', '/mnt/loop') assert ismounted('/dev/loop0') # Unmount the block device sudo('umount /dev/loop0') assert not ismounted('/dev/loop0') finally: sudo('umount /dev/loop0', quiet=True) sudo('losetup -d /dev/loop0', quiet=True) sudo('rm -f bigfile', quiet=True)
def require_partition(): """ Check if all partitions type exist and format """ spart = {'Linux': 0x83, 'Swap': 0x82} p = disk.partitions(device=env.disk) r = p[env.part['/boot']['device']] == spart['Linux'] r = r and p[env.part['swap']['device']] == spart['Swap'] r = r and p[env.part['lvm']['device']] == spart['Linux'] if not r: abort("can't continue, not found require partitions") # Format partition r = prompt(red('Please Confirm you wan (re)-format with Y')) if r != "Y": abort("You do not want to continue :)") # disk.mkfs(env.part['/']['device'], env.part['/']['ftype']) # Prepare system partition disk.mkfs(env.part['/boot']['device'], env.part['/boot']['ftype']) disk.mkswap(env.part['swap']['device']) # Initialize lvm parition run_as_root('pvcreate -yff -Z y %s' % env.part['lvm']['device']) run_as_root('vgcreate -yff -Z y vg %s' % env.part['lvm']['device']) # Create partition run_as_root('lvcreate -n %s -L %s' % (env.part['/']['device'], env.part['/']['size'])) run_as_root('lvcreate -n %s -L %s' % (env.part['/home']['device'], env.part['/home']['size'])) # Format root on LVM disk.mkfs(env.part['/']['device'], env.part['/']['ftype']) # Format home on LVM print(red('Encrypt home partition, manual intervention needed')) run_as_root('cryptsetup luksFormat %s' % env.part['/home']['device']) print(red('Open home partition, manual intervention needed')) run_as_root('cryptsetup luksOpen %s home' % env.part['/home']['device']) disk.mkfs('/dev/mapper/home', env.part['/home']['ftype']) run_as_root('tune2fs -m 0 /dev/mapper/home')
def format_vol(device="/dev/datavg01/datavol01", fstype="ext4"): mkfs(device, fstype)