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

Safe HaskellNone





debootstrapped :: DebootstrapConfig -> FilePath -> Props metatypes -> Chroot Source

Defines a Chroot at the given location, built with debootstrap.

Properties can be added to configure the Chroot. At a minimum, add a property such as osDebian to specify the operating system to bootstrap.

 debootstrapped Debootstrap.BuildD "/srv/chroot/ghc-dev" $ props
	& osDebian Unstable "amd64"
	& Apt.installed ["ghc", "haskell-platform"]
	& ...

bootstrapped :: ChrootBootstrapper b => b -> FilePath -> Props metatypes -> Chroot Source

Defines a Chroot at the given location, bootstrapped with the specified ChrootBootstrapper.

provisioned :: Chroot -> RevertableProperty (HasInfo + Linux) Linux Source

Ensures that the chroot exists and is provisioned according to its properties.

Reverting this property removes the chroot. Anything mounted inside it is first unmounted. Note that it does not ensure that any processes that might be running inside the chroot are stopped.

data Chroot where Source

Specification of a chroot. Normally you'll use debootstrapped or bootstrapped to construct a Chroot value.


Chroot :: ChrootBootstrapper b => FilePath -> b -> Host -> Chroot 

class ChrootBootstrapper b where Source

Class of things that can do initial bootstrapping of an operating System in a chroot.


buildchroot :: b -> Maybe System -> FilePath -> Either String (Property Linux) Source

Do initial bootstrapping of an operating system in a chroot. If the operating System is not supported, return Left error message.

data Debootstrapped Source

Use this to bootstrap a chroot with debootstrap.

data ChrootTarball Source

Use this to bootstrap a chroot by extracting a tarball.

The tarball is expected to contain a root directory (no top-level directory, also known as a "tarbomb"). It may be optionally compressed with any format tar knows how to detect automatically.


ChrootTarball FilePath 

noServices :: RevertableProperty UnixLike UnixLike Source

Adding this property to a chroot prevents daemons and other services from being started, which is often something you want to prevent when building a chroot.

On Debian, this is accomplished by installing a /usr/sbin/policy-rc.d script that does not let any daemons be started by packages that use invoke-rc.d. Reverting the property removes the script.

This property has no effect on non-Debian systems.

inChroot :: Propellor Bool Source

Check if propellor is currently running within a chroot.

This allows properties to check and avoid performing actions that should not be done in a chroot.

Internal use

propellChroot :: Chroot -> ([String] -> IO (CreateProcess, IO ())) -> Bool -> Property UnixLike Source

Propellor is run inside the chroot to provision it.

chain :: [Host] -> CmdLine -> IO () Source