propellor-5.3.4: property-based host configuration management in haskell

Safe HaskellNone
LanguageHaskell98

Propellor.Property.Parted

Contents

Synopsis

Types

data TableType Source #

Types of partition tables supported by parted.

Constructors

MSDOS 
GPT 
AIX 
AMIGA 
BSD 
DVH 
LOOP 
MAC 
PC98 
SUN 

partTableSize :: PartTable -> ByteSize Source #

Gets the total size of the disk specified by the partition table.

data Partition Source #

A partition on the disk.

Constructors

Partition 

Fields

mkPartition :: Maybe Fs -> PartSize -> Partition Source #

Makes a Partition with defaults for non-important values.

data Fs Source #

Filesystems etc that can be used for a partition.

Constructors

EXT2 
EXT3 
EXT4 
BTRFS 
REISERFS 
XFS 
FAT 
VFAT 
NTFS 
LinuxSwap 

Instances

Eq Fs Source # 

Methods

(==) :: Fs -> Fs -> Bool #

(/=) :: Fs -> Fs -> Bool #

Show Fs Source # 

Methods

showsPrec :: Int -> Fs -> ShowS #

show :: Fs -> String #

showList :: [Fs] -> ShowS #

PartedVal Fs Source # 

Methods

pval :: Fs -> String Source #

toPartSize :: ByteSize -> PartSize Source #

Rounds up to the nearest MegaByte.

newtype Alignment Source #

Partitions need to be aligned for optimal efficiency. The alignment is a number of bytes.

Constructors

Alignment ByteSize 

safeAlignment :: Alignment Source #

4MiB alignment is optimal for inexpensive flash drives and is a good safe default for all drives.

type MkfsOpts = [String] Source #

Options passed to a mkfs.* command when making a filesystem.

Eg, ["-m0"]

data PartType Source #

Type of a partition.

Constructors

Primary 
Logical 
Extended 

Properties

partitioned :: Eep -> FilePath -> PartTable -> Property DebianLike Source #

Partitions a disk using parted, and formats the partitions.

The FilePath can be a block device (eg, /dev/sda), or a disk image file.

This deletes any existing partitions in the disk! Use with EXTREME caution!

parted :: Eep -> FilePath -> [String] -> Property (DebianLike + ArchLinux) Source #

Runs parted on a disk with the specified parameters.

Parted is run in script mode, so it will never prompt for input.

installed :: Property (DebianLike + ArchLinux) Source #

Gets parted installed.

Partition table sizing

calcPartTable :: DiskSize -> TableType -> Alignment -> [PartSpec DiskPart] -> PartTable Source #

Calculate a partition table, for a given size of disk.

For example:

	calcPartTable (DiskSize (1024 * 1024 * 1024 * 100)) MSDOS safeAlignment
 		[ partition EXT2 `mountedAt` "/boot"
 			`setSize` MegaBytes 256
 			`setFlag` BootFlag
		, partition EXT4 `mountedAt` "/"
			`useDiskSpace` RemainingSpace
		]

newtype DiskSize Source #

Size of a disk, in bytes.

Constructors

DiskSize ByteSize 

useDiskSpace :: PartSpec DiskPart -> DiskSpaceUse -> PartSpec DiskPart Source #

Make a partition use some percentage of the size of the disk (less all fixed size partitions), or the remaining space in the disk.

defSz :: PartSize Source #

Default partition size when not otherwize specified is 128 MegaBytes.

fudgeSz :: PartSize -> PartSize Source #

When a partition is sized to fit the files that live in it, this fudge factor is added to the size of the files. This is necessary since filesystems have some space overhead.

Add 2% for filesystem overhead. Rationalle for picking 2%: A filesystem with 1% overhead might just sneak by as acceptable. Double that just in case. Add an additional 3 mb to deal with non-scaling overhead of filesystems (eg, superblocks). Add an additional 200 mb for temp files, journals, etc.