summaryrefslogtreecommitdiff
path: root/src/Propellor/Property/SiteSpecific
AgeCommit message (Collapse)Author
2016-03-28type safe targets for propertiesJoey Hess
* Property types have been improved to indicate what systems they target. This prevents using eg, Property FreeBSD on a Debian system. Transition guide for this sweeping API change: - Change "host name & foo & bar" to "host name $ props & foo & bar" - Similarly, `propertyList` and `combineProperties` need `props` to be used to combine together properties; they no longer accept lists of properties. (If you have such a list, use `toProps`.) - And similarly, Chroot, Docker, and Systemd container need `props` to be used to combine together the properies used inside them. - The `os` property is removed. Instead use `osDebian`, `osBuntish`, or `osFreeBSD`. These tell the type checker the target OS of a host. - Change "Property NoInfo" to "Property UnixLike" - Change "Property HasInfo" to "Property (HasInfo + UnixLike)" - Change "RevertableProperty NoInfo" to "RevertableProperty UnixLike UnixLike" - Change "RevertableProperty HasInfo" to "RevertableProperty (HasInfo + UnixLike) UnixLike" - GHC needs {-# LANGUAGE TypeOperators #-} to use these fancy types. This is enabled by default for all modules in propellor.cabal. But if you are using propellor as a library, you may need to enable it manually. - If you know a property only works on a particular OS, like Debian or FreeBSD, use that instead of "UnixLike". For example: "Property Debian" - It's also possible make a property support a set of OS's, for example: "Property (Debian + FreeBSD)" - Removed `infoProperty` and `simpleProperty` constructors, instead use `property` to construct a Property. - Due to the polymorphic type returned by `property`, additional type signatures tend to be needed when using it. For example, this will fail to type check, because the type checker cannot guess what type you intend the intermediate property "go" to have: foo :: Property UnixLike foo = go `requires` bar where go = property "foo" (return NoChange) To fix, specify the type of go: go :: Property UnixLike - `ensureProperty` now needs to be passed a witness to the type of the property it's used in. change this: foo = property desc $ ... ensureProperty bar to this: foo = property' desc $ \w -> ... ensureProperty w bar - General purpose properties like cmdProperty have type "Property UnixLike". When using that to run a command only available on Debian, you can tighten the type to only the OS that your more specific property works on. For example: upgraded :: Property Debian upgraded = tightenTargets (cmdProperty "apt-get" ["upgrade"]) - Several utility functions have been renamed: getInfo to fromInfo propertyInfo to getInfo propertyDesc to getDesc propertyChildren to getChildren * The new `pickOS` property combinator can be used to combine different properties, supporting different OS's, into one Property that chooses which to use based on the Host's OS. * Re-enabled -O0 in propellor.cabal to reign in ghc's memory use handling these complex new types. * Added dependency on concurrent-output; removed embedded copy.
2016-03-05add libmagicJoey Hess
2016-03-05propellor spinJoey Hess
2016-02-07temporarily revert using letsencryptJoey Hess
It's currently not letting me make a cert for kitenet.net as I made too many during testing.
2016-02-07propellor spinJoey Hess
2016-02-06Obnam: To cause old generations to be forgotten, keepParam can be passed to ↵Joey Hess
a backup property; this causes obnam forget to be run.
2016-01-22rewordJoey Hess
2016-01-22more textJoey Hess
2016-01-02clean cache on autobuildersJoey Hess
2015-12-31actually parse service linesJoey Hess
So whitespace etc changes don't matter
2015-12-31propellor spinJoey Hess
2015-12-31Postfix: Add service property to enable/disable services in master.cf.Joey Hess
2015-12-06allow using `check` on a UncheckedProperty, which yields a PropertyJoey Hess
2015-12-05UncheckedProperty for cmdProperty et alJoey Hess
* Properties that run an arbitrary command, such as cmdProperty and scriptProperty are converted to use UncheckedProperty, since they cannot tell on their own if the command truely made a change or not. (API Change) Transition guide: - When GHC complains about an UncheckedProperty, add: `assume` MadeChange - Since these properties used to always return MadeChange, that change is always safe to make. - Or, if you know that the command should modifiy a file, use: `changesFile` filename * A few properties have had their Result improved, for example Apt.buldDep and Apt.autoRemove now check if a change was made or not.
2015-11-26Added Propellor.Property.Fail2Ban.Joey Hess
2015-11-25Added Postfix.saslPasswdSet.Joey Hess
2015-11-24fixesJoey Hess
2015-11-24found this handy conversion of my blog post to propellor property in ↵Joey Hess
spwhitton's repo
2015-11-01take dkim out of test modeJoey Hess
2015-10-27Explicit Info/NoInfo for RevertableProperty (API change)Joey Hess
RevertableProperty used to be assumed to contain info, but this is now made explicit, with RevertableProperty HasInfo or RevertableProperty NoInfo. Transition guide: - If you define a RevertableProperty, expect some type check failures like: "Expecting one more argument to ‘RevertableProperty’". - Change it to "RevertableProperty NoInfo" - The compiler will then tell you if it needs "HasInfo" instead. - If you have code that uses the RevertableProperty constructor that fails to type check, use the more powerful <!> operator
2015-10-24improve RevertableProperty combiningJoey Hess
* Various property combinators that combined a RevertableProperty with a non-revertable property used to yield a RevertableProperty. This was a bug, because the combined property could not be fully reverted in many cases. Fixed by making the combined property instead be a Property HasInfo. * combineWith now takes an addional parameter to control how revert actions are combined (API change).
2015-10-23Changed how the operating system is provided to Chroot (API change).Joey Hess
* Where before debootstrapped and bootstrapped took a System parameter, the os property should now be added to the Chroot. * Follow-on change to Systemd.container, which now takes a System parameter. Two motivations for this change: 1. When using ChrootTarball, there may be no particular System that makes sense for the contents of the tarball, so don't force the user to specify one. 2. When creating a chroot for a disk image with the same properties as an existing Host, using hostProperties host to get them, this allows inheriting the os property from the host, and doesn't require it to be redundantly passed to Chroot.debootstrapped.
2015-10-22seems the rsync systemd service ships disabled by defaultJoey Hess
So many hoops to run a daemon..
2015-10-16improve ssh user key propertiesJoey Hess
* Ssh.keyImported is replaced with Ssh.userKeys. (API change) The new property only gets the private key from the privdata; the public key is provided as a parameter, and so is available as Info that other properties can use. * Ssh.keyImported' is renamed to Ssh.userKeyAt, and also changed to only import the private key from the privdata. (API change) * While Ssh.keyImported and Ssh.keyImported' avoided updating existing keys, the new Ssh.userKeys and Ssh.userKeyAt properties will always update out of date key files. * Ssh.pubKey renamed to Ssh.hostPubKey. (API change) This makes eg, setting up ssh for spin controllers work better.
2015-10-16revert change to JoeySitesJoey Hess
The change to JoeySites is wrong, because IIRC leafnode creates a spool directory, and isSymlinkedTo will not replace an existing directory with a symlink.
2015-10-16convert symlink properties to File.isSymlinkedToFélix Sipma
2015-10-10propellor spinJoey Hess
2015-09-29propellor spinJoey Hess
2015-09-23propellor spinJoey Hess
2015-09-23add "ancient" git-annex autobuilder using debian stable i386Joey Hess
2015-09-14clean up privdata excess/lacking newline issueJoey Hess
* PrivData converted to newtype (API change). * Stopped stripping trailing newlines when setting PrivData; this was previously done to avoid mistakes when pasting eg passwords with an unwanted newline. Instead, PrivData consumers should use either privDataLines or privDataVal, to extract respectively lines or a value (without internal newlines) from PrivData.
2015-09-13add virus collection cleanupJoey Hess
2015-08-12propellor spinJoey Hess
2015-08-03propellor spinJoey Hess
2015-08-02re-add mistakenly removed retention line to the graphite schema config fileDaniel Brooks
2015-07-21ssh client needed for kiteshellboxJoey Hess
2015-07-11propellor spinJoey Hess
2015-07-03typoJoey Hess
2015-07-03updateJoey Hess
2015-07-02updateJoey Hess
2015-07-02propellor spinJoey Hess
2015-06-01descsJoey Hess
2015-06-01updateJoey Hess
2015-05-29workaround bugJoey Hess
2015-05-29propellor spinJoey Hess
2015-05-28reorderJoey Hess
2015-05-27propellor spinJoey Hess
2015-05-27propellor spinJoey Hess
2015-05-27Export CommandParam, boolSystem, safeSystem and shellEscape from ↵Joey Hess
Propellor.Property.Cmd, so they are available for use in constricting your own Properties when using propellor as a library. Several imports of Utility.SafeCommand now redundant.
2015-05-26propellor spinJoey Hess