Merge branch 'joeyconfig'

This commit is contained in:
Joey Hess 2014-07-09 22:12:23 -04:00
commit 0c5e16184f
9 changed files with 559 additions and 477 deletions

View File

@ -21,8 +21,10 @@ import qualified Propellor.Property.Git as Git
import qualified Propellor.Property.Apache as Apache
import qualified Propellor.Property.Postfix as Postfix
import qualified Propellor.Property.Service as Service
import qualified Propellor.Property.Grub as Grub
import qualified Propellor.Property.HostingProvider.DigitalOcean as DigitalOcean
import qualified Propellor.Property.HostingProvider.CloudAtCost as CloudAtCost
import qualified Propellor.Property.HostingProvider.Linode as Linode
import qualified Propellor.Property.SiteSpecific.GitHome as GitHome
import qualified Propellor.Property.SiteSpecific.GitAnnexBuilder as GitAnnexBuilder
import qualified Propellor.Property.SiteSpecific.JoeySites as JoeySites
@ -34,7 +36,6 @@ main = defaultMain hosts -- / \___-=O`/|O`/__| (____.'
Deployed -} -- `/-==__ _/__|/__=-| ( \_
hosts :: [Host] -- * \ | | '--------'
hosts = -- (o) `
-- My laptop
[ host "darkstar.kitenet.net"
& ipv6 "2001:4830:1600:187::2" -- sixxs tunnel
@ -42,8 +43,8 @@ hosts = -- (o) `
& Docker.configured
& Docker.docked hosts "android-git-annex"
-- Unreliable server.
, standardSystem "clam.kitenet.net" Unstable "amd64"
[ "Unreliable server. Anything here may be lost at any time!" ]
& ipv4 "162.248.9.29"
& CloudAtCost.decruft
@ -57,6 +58,7 @@ hosts = -- (o) `
-- Orca is the main git-annex build box.
, standardSystem "orca.kitenet.net" Unstable "amd64"
[ "Main git-annex build box." ]
& ipv4 "138.38.108.179"
& Hostname.sane
@ -71,16 +73,27 @@ hosts = -- (o) `
& Docker.garbageCollected `period` Daily
& Apt.buildDep ["git-annex"] `period` Daily
-- Important stuff that needs not too much memory or CPU.
, let ctx = Context "diatom.kitenet.net"
in standardSystem "diatom.kitenet.net" Stable "amd64"
, standardSystem "kite.kitenet.net" Unstable "amd64"
[ "Welcome to the new kitenet.net server!"
, "This is still under construction and not yet live.."
]
& ipv4 "66.228.36.95"
& ipv6 "2600:3c03::f03c:91ff:fe73:b0d2"
& Apt.installed ["linux-image-amd64"]
& Linode.chainPVGrub 5
& Hostname.sane
& Apt.unattendedUpgrades
& Apt.installed ["systemd"]
& Ssh.hostKeys (Context "kitenet.net")
, standardSystem "diatom.kitenet.net" Stable "amd64"
[ "Important stuff that needs not too much memory or CPU." ]
& ipv4 "107.170.31.195"
& DigitalOcean.distroKernel
& Hostname.sane
& Ssh.hostKey SshDsa ctx
& Ssh.hostKey SshRsa ctx
& Ssh.hostKey SshEcdsa ctx
& Ssh.hostKeys (Context "diatom.kitenet.net")
& Apt.unattendedUpgrades
& Apt.serviceInstalledRunning "ntp"
& Postfix.satellite
@ -133,36 +146,18 @@ hosts = -- (o) `
& Dns.secondaryFor ["animx"] hosts "animx.eu.org"
-- storage and backup server
, let ctx = Context "elephant.kitenet.net"
in standardSystem "elephant.kitenet.net" Unstable "amd64"
[ "Storage, big data, and backups, omnomnom!" ]
& ipv4 "193.234.225.114"
& Grub.chainPVGrub "hd0,0" "xen/xvda1" 30
& Hostname.sane
& Postfix.satellite
& Apt.unattendedUpgrades
& Ssh.hostKey SshDsa ctx
& Ssh.hostKey SshRsa ctx
& Ssh.hostKey SshEcdsa ctx
& Ssh.hostKeys ctx
& Ssh.keyImported SshRsa "joey" ctx
-- PV-grub chaining
-- http://notes.pault.ag/linode-pv-grub-chainning/
-- (Adapted to use xvda1/hd0,0 instead of xvda/hd0)
& "/boot/grub/menu.lst" `File.hasContent`
[ "default 1"
, "timeout 30"
, ""
, "title grub-xen shim"
, "root (hd0,0)"
, "kernel /boot/xen-shim"
, "boot"
]
& "/boot/load.cf" `File.hasContent`
[ "configfile (xen/xvda1)/boot/grub/grub.cfg" ]
& Apt.installed ["grub-xen"]
& flagFile (scriptProperty ["update-grub; grub-mkimage --prefix '(xen/xvda1)/boot/grub' -c /boot/load.cf -O x86_64-xen /usr/lib/grub/x86_64-xen/*.mod > /boot/xen-shim"]) "/boot/xen-shim"
`describe` "/boot-xen-shim"
& Apt.serviceInstalledRunning "swapspace"
& alias "eubackup.kitenet.net"
& Apt.installed ["obnam", "sshfs", "rsync"]
@ -204,6 +199,11 @@ hosts = -- (o) `
-- block 22.
& "/etc/ssh/sshd_config" `File.containsLine` "Port 80"
`onChange` Service.restarted "ssh"
-- temp
& Docker.docked hosts "amd64-git-annex-builder"
& Docker.docked hosts "i386-git-annex-builder"
& Docker.docked hosts "android-git-annex-builder"
--' __|II| ,.
@ -257,10 +257,13 @@ hosts = -- (o) `
-- temp for an acquantance
] ++ monsters
type Motd = [String]
-- This is my standard system setup.
standardSystem :: HostName -> DebianSuite -> Architecture -> Host
standardSystem hn suite arch = host hn
standardSystem :: HostName -> DebianSuite -> Architecture -> Motd -> Host
standardSystem hn suite arch motd = host hn
& os (System (Debian suite) arch)
& File.hasContent "/etc/motd" ("":motd++[""])
& Apt.stdSourcesList `onChange` Apt.upgrade
& Apt.cacheCleaned
& Apt.installed ["etckeeper"]
@ -352,7 +355,6 @@ monsters = -- but do want to track their public keys etc.
& ipv4 "80.68.85.49"
& ipv6 "2001:41c8:125:49::10"
& alias "kitenet.net"
& alias "kite.kitenet.net"
& alias "ns1.kitenet.net"
& alias "ftp.kitenet.net"
& alias "mail.kitenet.net"

10
debian/changelog vendored
View File

@ -1,3 +1,13 @@
propellor (0.8.1) unstable; urgency=medium
* Run apt-get update in initial bootstrap.
* --list-fields now includes a table of fields that are not currently set,
but would be used if they got set.
* Remove .gitignore from cabal file list, to avoid build failure on Debian.
Closes: #754334
-- Joey Hess <joeyh@debian.org> Wed, 09 Jul 2014 22:11:31 -0400
propellor (0.8.0) unstable; urgency=medium
* Completely reworked privdata storage. There is now a single file,

View File

@ -1,434 +1,439 @@
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1
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
=KIFU
hQIMA7ODiaEXBlRZAQ//aeJpq25yXbayk/fuqQZITiC+BVuslYxKMo0lBC5D8d5D
EkTAEvqHLUip3Ikl3nTVDMabdisxzAjwl6nDBzUwTMxPMAh89gOOwxmsfFbdioGn
dbKweCAuZ0qXZGo8viM8ZjA9kag3sOQzqnmLdVa77Fj8WnfNEsEAFXZFU6aXLlG2
n60+bhdo5858uK1dEItdhT0I2gi2SOEIJ3ojRs5jvV94X6+imSfpgrp9hwKBrffK
Ao9nL9e15KHG39wx/ZgBMxP74HgdQsfmzdRh1eW8hqj0F4SnBzPoG9x/cTrufavC
ZViSTngiROE22iEeAFHnPgyS1fo4pD1Vm0CxpqThhVn5yaEKBliRsOtOP3wIlAXH
7YKtSbBlHx1d2jRQdT4y3S6f8BdP5feYXjOj1BO8AvK+nJEcU2YhVEuhigXgNMDa
kbOTB11DId6WkxORvcVmXM4mcSESTVerLdqH2otpa7dxv+EWIj3mpCxLIB5w558T
0gagUVobw1ee8y6FxktCj93KE75AjawvcPqub7Yoc7J4PdzbrGPweepxjtGcgi8L
WNSkMzNk5d9wnm72TopaTQam5g5RndgRL1o4yqgchHr3fdzmA5CfACxitXTUwQsV
sAEjo9nelmYin81seJalwLFUr3Uo638dvu4RjZZLmm0HQ24RIFXPBsClY9HAhAPS
7QGPa3cOY7PkqS6gGA/ypN6/XkPsvq0QasFZbnQ26F0DQnvLXQroPFxeOgz9CG1A
WHXdet0KkYB5e+MRcnDTDjOwfPlaxCzSsduwNR4tMqVuZ78gDbMALUH+utYL8pUY
FojAnt5nigbwcEN0vaUY8WKTrOCUv4nQiu6jT/6YFDWRDHPVqytSA6rfWew0iO7j
K2VbqSvOq3EkD6Yi4N2CNH1cZKo13eQ17gQ1sIntOip1YYbUDYLml0vpfXMVRGb2
1ed7SR2xmrMk+s5bUtoNtX/IQLB/fcsuCzRmBQY+PJKkRlj8lW3t8xTNheGoTu6g
EmK/LIf97PrIO/PzEDAjrHGD46V6L6qukH97k8HDkHNl7aox1ANYj5i/Y/DR/Jdp
qP3rtlmiHgpLX8i375JxJqGkIQ+ZzH1v86HrxVKFsPS8A7lILVkFkvI//H/TrcoV
KaF/LdOqQsd0OuKd0Gs3gxLytjaKHxK/AMHz51/VAgOZ11SfMvQpZRdt1D6ygAzl
PDdb6Nugu/Jt6GIe2hDmWHhxbWvW85sGxJft8tpZPvRNPolFnf5VjYluQSQq1JAl
QAX5RE3yY6ngW6KRmSbfWRFRNSXC9B1lxQ0CDgIPaz96KrzAH9M83Vv5RPQSICn7
8F+t4YOrZrg4gD5qMT8sHIrBkvognvoT60ILz8qTR1Ou2w4xPlQUVPIfC1YCOY30
gNo4XsrsjJxMtjOsx4fr6eLCaqzSVm9/gcxMJJQqE+ukPVHlX67WrDwEufBsSxZr
Dx9ZkCoiiVE+i4UiBztmd6r68yWFMNT2d8VHw66Y1IbLNZS8ZjZqo/OQtQwbnCnv
01Rn4xpBnjasMClGOBt+gNbpc6uziTORKjTLOIxazoVqoeWekM2ELrFCvpGS6YOz
rZr2psYRP6TO3AG4+MsqkK72+YcMMqtAnq6IM9nv3wEddAz7MQn9VLc+xGYbiXdX
yfEQxx7Gc0J6TJnIzASpRiwbpPlGvE4DtuFpigFzjjnyms/usj2d8HrZLhiN9xnS
q9O4ODIvEECGm2H6/DRjCbLPbKpEMqFu4OLW+2lUW9IK6YPBRJLjhepLHzEHZDrD
FPGvj3X3psMsT/nc6v3Rj+r5GqQeTySEBPkfgon5gs2kaBFbmAlzdOEimZJXKnC3
zE6c6WdpiNs9tCNvxzkEu4TGk0KOE7NvVEgEKETMjTMYmccoueZFRIM0cdzg8s6Q
Sx1KeSHjJ7Z1L+aIFLZ6UyL7pFejjroh+1MzMf+ml7hLt/mrOcg2f+zm+cgJUQzy
hoMxXKNGc8w9aIsjSWcPhsuLJZLSIG/AQdd7fY7xJDIJ1fd2osX67ixXEiydz8BN
DiDlMVkNKzQp+r74RmNmJpziMBMtzIfHuk4YKmqS9EKiAMn+3APsFr/adyP+RBE6
qBnvnDclbqviLkiXg2b6eQ0NZDN4NTEq8I6BSFKXFxoSJzeG/GkF8SvHUQaAHkCq
EmUxfMYw8cbQlYeRl/gtCiWz1WH2LBRulZvHVfiUzqjFY0GhnJzpLo/Pwjj2EzYz
+kONv2jdLmSa7Ub80XzngODjkun0xwIWCjMHa2F7GioZwyYSmxP2UiCCGAnOzDsZ
J/x7Y7/QQbDAaBQwpLPu4Ozx/7rEAxoBKTqjUWJ/VaQ+jrOhWuWCHWc3WIOo7YXz
HUK2kkw/7z7+l/I8w/RkX9uAxRIdD4c2SOAiDjK0EHTk0+e2bSGr4AMLfbtOQMOz
hiLLeMLXfT6uH/Dcp69URnfwH2h2CsRRK7w91/0gx4W8maxKbJXOXX8G+q6mGHZa
G6CPprGunt1Ycnb+CD0pmuPl8+4/jlkrz5vp0h4SBHEf47OgqwEuhqIvBeFJBQR3
nccoOyNPkmFi131Drl9W+KSBZB6saXgOBqSDs/68zU843N9OyFLcGZANmwvTuA0S
LXom64j94cYrt4kq8uI2RYbNqxAGie7q593cbdnlj9nY4/tNolrphTiC/eFi7Ksr
113g2B2kvoH5lAupBr/LVUTMiit0wEWLcxTCN7rfYelcuBakRvkJwMu2UhG40EGQ
tMrWeBpJr4MeupSqFOvvVZwzIU/zA3X39cQm94SPv0N2gemeWj53IxzvP44GBENc
t7pFgNnnvPBCn7EeURviumAaBTWppTl77mz+eOlHdY2mnhV6M/3Gbw3PCflVQ+sb
r9Xvjhk6PZ3b0fQuQI1Lh8wWlwNDwJ9KkiIW9nfBYVFguKuDAwq/1P994Al4ae9U
C9XlhdNofWO9FhYdv6EK4lHFtsu8kx/Q1ilBTqqSCpm70ua5MtSYd1+Qk1eugelO
gvD3Q2GCIxhzd/gEIJcMpapeGJrLhr5YF5w3kInI78vNbZzESPZzR5pt0xzO0odK
xtYlXOGyc6bdq9pMZXLOGfsiom7IY+TZd1vRMKSbjuM2cFODSmwJus0/R0fSqL2r
2qhrL5bxR7v2mV1DM7mBFdFKSOVenrnX2QOgmZu41CoDyBXi+Y0Nosemjk9PTqs6
ZQFu6malOyvWpOcnXNc51gcHDtQAgJ3efky5h/mXDem+8lWKT2zGT9sFN3p+6/Sy
oMJ2/Uu+XyaxkHOE8PW5qYFLopwkt8vmPBTmfT7368wVCTmIbmyxW164GbL3N0oE
aqM2/QnVLYXzhv7WXaPNuUDxWNeXhyoN9zZcDaeBYyctbLm8dFTEEbeZvFF5g4+U
ItTEZd0+b9DycF4C5Yw3wieuKFtzX3DikJ07i4TU0HwkFIBXZDDGMtsHB2DUvpeK
Ijk0tIVDyBfambdm6Is7OKtpmuHhPhtHZVPA/GDK7n1t1csmDV+HnXF6w6oRfsbK
aAptfc4mkeGlijFxOCS8DWLxKMXF3PhWHPQZI3x91hhujUDe4X8kAvOA+k+/iwbL
ZNXTXaoxbVLUaKLm8Y9PKNW63WzVsC8zgP262N/o+eJ+Fq+HJnTzsWAUDHvrV2XR
hcKUVxM9EivLNwURHeu1GrWJ3M/775Qyo+AB1eJ9IjPPLxM0h7LJV8KYyku+GMWn
P1UnlMlbqojj+qPezn2MGZggP0Nh8dD9HbFbFNzZI0MF8OWNAsvHD1F0IwJ89E11
Kkx4uiQW0TEY7oghIUpRqKqsMIdAhfFwHTzkqDmXcu1JxMayAteAclTmWiuLapje
Z86RLF+d6HPr9qIluOJPONYsA8aFp9S9xqJ/PWcn3BRXxNJWv2PREo/TnGVo765r
hHfiIj7DL8kE3TR+CWg9Y3zjhpScXaqmzMbU6EhS01EIdFLNibEh5sKyqdzhMzxu
8dWAASbfzWDwugIoTIPPdBixIAfMQYFjUoi6SBaZ1peRVvBop3tN78WD5Ql5Qw4n
LY00EKpXuMPdS/2XrFXmRMxWLqRyIKYaGgNP0dGLMuvlUgHcl4GWGjIkEYw7jQen
/bs6GYTmrciXLPEWarZtv0qYMHENWvWMYWeTgstSbvSx8/uqn6tjQhywOkMoAOlf
WxVMqZwx94nDC/+6RPiTXfiD9vJ9SduLvAk989GWndkJJr6ZGunNtQKap+EBMMpW
HoLW9v+Yp7emm5uJPgvho6a/aTFeXQ7UsEq1uBGRxrRwaOyxlRxyiLF87upbiN4D
Ngs+RD792PsCiex45taJPeFchDmFQLjlj8+mY8sHOh2OlsfpIl5qq0CtU2Jr4RN6
saXnQi8pKPW1V1sOvYcp0/vTx2B7eiIJP0JHxm4SgACU8S7UE/Avqkb09h9EGIlq
EPaq+wWOk8MnLW4YYNPDUNdTnb8iyduHVe2o6HwI67rNsstKpeaKudiFM6vFLkWh
3uiRoi1ZFYH+Y3vd34aSHV3K65h/N+Sv+X+6DP03+vZ6zg84mveHaOyI3VLTpadO
QicabiXcJpsU6trG+C/5Q4Z78O0Y+ZsLAFYP3Ro6KTpnV2XZKebHNQMfMJ3bClmV
2YIxDP6Iwss/PEUaG5R6Cg0YWcqzU0BuEeZelSpvOsfqh97T+yf73v108nz7CbbE
PIXCnf9uYBF2lDhO312NjfjkkpV88QX3OHqOMuIX4ULK4xIXMTm+ZoOI0RjS/VhC
5tbaE7rTH6L7vGG8ZxVSNA/u4QeqHTACJ18DhiPWWVnbeSWe19t2DWSU3+vFJiec
TsegBPogtW7KRcWul3eqwPvVRd0WtE0EHeh/vWKVE90VmPw7SfTkSAW7tl7//yt7
83oEpj6Ze3mxQ6nXFDX8zwugClkIP6E8cC63x04ObKUaSIrAYBfgSlT2UxPg9MJk
lbNvDAjtar26ZmP/6ifYqhHQydiZoypN1ccMPjbtKTrmjY9/ZfKpB75KLRj25ZfG
2PAkcLHPRHDuhl0T4S+w+Wye3ollrO3OA7pI3TvEk22fS1GNUjmphUhGq9/EFVdF
D6T4e+feVI3sqepmOge1GgCaBrUEpt3w51p20GDLv9C/DfmIrOlZILAq+xXH1aNB
7QZTMzJ3RmPWvPrZTusic3ah1jO9vP2+WkB9DxysLp+DW9UVmW8LkVJsLoL0VuuU
CwBNoSKmIiWhTr2b+XUr/GnIzsssjQkalGDXtobDYz/LvQmMjHc2QNH0dL6GRvKe
33in7A7VbswE76Pbuof/OtICHuPI3fg+SlQK2vKLTFJOyLKKKvUqK1ZtLGX86IDq
f71oJT4MApic6Ep+Cd8aGsz5hFdy5KfRZX0rJ4+lwsCew3USh1GyOK7/a2EoPw7E
iTVmAQ2KVWjF6dADDRbmLsoTT4eWLb8TOlSnF6LCAe4eCwcmgRLKJSJYhkpp7JVB
e3g9qRkLzv6ypRJD7GTwubVyJJL7vW/c1v8PokTHYGfn/cM4r2iZTrxDiMvk1+0n
1HKA0jhco5gjTSrah8gBFD496VCklhLr8kqcxK3TGZgim0KstF2drrnKtT5xfL6+
8EHY7e+Z1AdqYj8bINOKDs2x1rWNMZEkhxn8GUDodh2rE7Gfide9PARrZclwupo8
0I1MmzxXCuoXSGMAoDGRRCykjEbeFmIvprBO9WiP9SC0ruhg2nEElxlLuri4Uen8
nV3Age5IVcXLHl1Tsruc459glWmXY52k3WaJk4Up+pk7KpsTVEO47O11tYwtFBR3
B4HRAOTWVEA89iXYTVlYFJzzrB2KEFJ1qEZHdLxHhOzLKjaXKFNwJikW3oAvVpPp
vOX3dgNPfnUA0vZoczEQW/A4oSPM21vTqcOs0tceHQ1pjE5ZL0iO4TMHTwbeY6cl
iq5SR3rC4O9N/uTYX3DWPU1JY7ovqMqjokDNkMOFHoN5AUsCMxRXj5IeQOP7jxyX
CTIbr59HfaC9+Y7w9VpNDW74SNxjccbTA9tUgfBX8DtCGdF5sDWpBo3JOD1pmZIu
EB1aoZbRnwKvv/6I7mFfeBV0CojwbbEaYhgQYX+l13KIuyonIFybEWUUVK45LdtV
pLoOyh3VgzknPWNqE8NTyfw40DIlkIA8i6wvRpAw8kmnx9Pdg2XuMEJYYb+CP2Sj
nR7asXXPsyWdm+qxgJqSCxU7RupFD72sereADF1rIgwU+UFiLCEIoi06bzAS0QDe
cijeTI4v6ZLr6lTjeXqoNcJlYaQZvH5Sh3RWLcR+XeYXZsstRbpVDITMb9/fAKMv
ohu5DeGEJnx0Da6wdOW8Cz8xtxe+yuwxkqyd2lVB77bkzYjfWW26LAKhVVKiEyR3
QqJPF53TeXjh4RDxrQF5iYJkBJ98jPAUxGaTzupDTxIxVMRgKrNbK/rYmFCyeE5o
DAawqg1/NPISUMjgHNijCMg+dVPHDgP9bRdDrUPCimQ8mfmum+1gS+kmyhxCj4op
0TEB/XnC6QlTrK/kCCxv8q2gSBdR9bA95LkWBtHkI8GTDhnEWl4R2uL8DR3y13wt
dPe8yQgQIY41UZEAQzBu3Y1hBxhLlRRcPtz4/C4BH/8JqVasZe/XA3J9As2dmSZD
7lGFerfkHVMAoworZa8qf941JxWue7HP7kweos5KsEbtyHhF86Rq2l6DiUT5BWFR
Pwge6+rK39jSnqSGHRSASrE7/M9ZTD2f7tPHqUnrLQcxFfjWE3DOo8muwZOYOFWG
ZpzRli3k9pvtQpfyrexJ254OuKgvViRWmOQgrbJEsQ7VisbwGLalLUCr7Oi3Y/gV
EV2H9NcJkhXr7S1ObXSPc75j5q0wgeV57bSgsMIbNqSaVeIqL2ncWH4Ga+VFir22
BvHXUcMXT+FyKq+tUHK/Ot/qFmS0D5Y/QvXg1xDSg7zEePA8NlC6sibYxFklh6qE
PgVnJ0PTm9dv3hDcO1NpRPGHi9fbFJ1oy4q7XiYOmux2hDM3+dkJGkGS4+Ir0vPj
+WrQ1UTaKf5GCSL5pUP/zc0BsXlxvyrQ8Eczs/Nk5BZx7UmT8NlK0RsFqpGV3CG6
VyEjVJ4D5avDV0P4zB4xIisLKvGbM1GcQp8WKbMjzuOhueI3UzpcpgJPzgjgdayE
bz0Qk2FgkwB0oxHmN4fEzcIFLk4t3OzVGcP4uSjEJsmH33jAS/1FhNd/8FJr0dtN
CWkPhZmc0PG4GtLcBvgag4nvwY+9D3Hgl0o8FpV/nesWAl0ySVxhJMM9Y/37TQyl
fLDgmpQjYLshUfmWWGYwCqHa/Ov5PBITuPOZWK5kE0bIKLTl64l7cd9A8lMYrMe/
23bCPxZMe5ZIInB1EP5jfuiAVFbSAu/rPlSQVlK7iXtrYTC0pSNsuVxzpU5unsG0
+tqKE1NDBTJOVvmiw11bmC11HIdl+75gJ+hWnlHs78o5gJFuMpJsv7koDustEkJx
I/+DB0i9s8De2QGuy1dpZo7IpitvckaAQIFQ45lidaAaZv3CT5wxEhB5Sl0kbrR5
tguQ/y50S/RRdklx2AtocJfnJVmR0Pc9CxxYPreHx8fC3uVV6d026GFnUXRPlWKW
ftiyL/lwGb0iEt3Y5K0CUucDjSi0iCNEjx1J9QBXc8hg/WjFih6egnvrvZWx8J5B
/sc4VukW4kHjs6ulJ+cg/by64uTc6jmsAR9vzVC7mIJPfWp0f7VABrPyTEmcFBJd
5eoyPUyGIu8C5rnOBOmcjYM/NNEtx4EqukVLha5YZwbVGYa+rC+xN07NNLQbFvWG
RZVSyt3pVioLfjQ8faHHRIu7qolrICvLP7LaV5jyPyrKcwpb46IIYHOk+/iJ6MOF
NsUjPJvfraYoeRVqpm1itIXCcM1g7uyTmc6Fg264+LVAYIlvLwCWlOyM1QeoqBVG
PL+k1xY50jwg5hkejFRDaE8I9+0Pa/bNF/XknDcZRv+sHjVpTU/DMEIN1jK9TM2G
SsltNHQTzYgKr3kYL0ud5lTRgSMU4tA0UuVOqn6OuObXeswsonfU2fqvXXrqE+W+
Wofr3xJMphG3c4cnMmyDjUVOsl1AyL21ZB0R8kCqBDJLG7yyVTHjf/avpeTUfZwx
HBIpiZKkhdVkFo/du9wO0CfvHB89l8VnK0+js2OXZzDwPB8KCWTO8VllHAosqULI
Cp/p7F++Eyq9PKg6vOw43ZDbpKBoacHUgLNFd5OJMScQdKSGDCZtT7NRXzxGsoFa
KkxMCc8VMN3hwjP00EP9cHVfiqQ4d65lDE11yK3IQsBOKaF3q59doHxWOBH3NMPB
g3wJ+dEFDcMwwhhkbIjNPkROHeUY0C/6L7m3DKpV/44seVk6EhsGGNpsu/L+nDvc
pZwRmpWnioB2QTDbs21vTfr8iI1rh0bO2Kc5lfFXEvZYVxMizrjdPNCSty3aX+oy
e5oeDUOXafHSZhtbgrHEWXSzZv/7/endB7/ZYkSx7/5jBFsVZcMdWHnP4dkIBtLz
gTimwG5XHWiIMs1Jsunu+BUQfzTzTGv94o5E688XtsZRPYasb2JRdrDaGFdW8P3Q
w1bxyUMpqh3GcsD/d88I2HQFZ1Pt/4IBF0ooh8WZFurZtX59tF8eaYLeBBEkIKX+
N9KHxNZHcXV8sCez8HUFKzTm18m2V/PeHxV6zQ7wq20MEHbq3EjrdVme9/iJbHjL
KBmqztjnkb+ux1QTV1871W7B+Xx06bnvBPPI5R3GvWbN7nY227C7FtMbQg6Lrgxu
FX5ARg/QhSgvTzJW4sOkZHYx8qDFbzovjWJxtsEGwsUnlfvAnL3FoK/3lpH5AXNW
mFjprgSYMZFRGuPEbUHd7kROwZU73Lazzu9vOpVvGaBYxz1U9JhK1NYyvo9VBP1x
euTv4yMGek7aWyICeFOZZqHa4OVymwN/HzHEzxaRBQ67garIbTzIGi2eDLkh2qFN
TzDIEAV0k5SyiBNCmFFYi2/qXhNRFOkz8BrlUGoB5/s/nn/aWT8Ll84TdxzJLVfx
atL/28krtafQIb8a6VniGzy5ij/wL+nKLzkNaGxvwOLVD+CurdnvJVOkeGatmhfN
AxDm5j7Hxrd9rZfblkyBbo+tarLYaCwc0AqKAEfKiJse8tOEPokJfJXeICwmCZJ/
ttoaEEKkRpJSGSQxwezAz8QpkmCxW3wfBapJKOtNJLR6iIKxqa72lzIM9utV5tUi
n4sQh9hWMgb0pc8mx+MyEVjScN3f47IQqh9BSI7xadl9ZnKXPPc+SFqjqZAHbum6
gWYLv54sIKu8g7sAPbXfxVpWK8FR7d/ODWkwK4L7v3nMFre6r1Y/QnX//ZAvX12L
LFj5FI9iS6RCeU2pPetyD/crxWOgzsJG4UGuC+6nQVBN35uGgHOtMQa3NedWVB4B
zTd88JJIylpAl5al4cIQ8HXZvMgOparfYAUR7E22jkg8+ikLTwmO7dnmUI2farQL
THksb4pB9P5XVAWkq6xhmXFOlrK/jm1jnmfxrLf6Hs8Ef8GTDXBcNLrMnrCZLMvf
hrL4Ou6zPz91dPmSy9fPExUVKut22JIefS4DGeUgEVWVGUvxb5hp/ZvQ028/VQA6
D+ylOL11ZaCW6elpJkcTe5KtJkzM0+Q41QycYLdLOkxW6um/60wcMSiOoDOC0X59
31fQsvAPLFiCGemnN7euge3cwsZjgBK4CL8wmQ7s/GwzB1WkJ7iPdA1qIUqRXuYa
0sB66fGx/12bbW7l+Waj/9GSe7Cx7PL7Re1EZOhy+n39PWmKB9KeFmlmKwd9U5g7
cK1V62wuPn9M+0bbXpc5jzHI9C85PyTJ7iRb4hEFZG+pd4ITEG57EFeEd2/+HoJr
vW2OBFEnBSxfU89THqvIZPVhpsS/eo/7liq8P6MVlkEC36vtiUgC6mS36LaRGSMK
LB3EP6/TAXz39Q0qLll2dT9Tytn1OndC9MdOst/svD7QcobH4UdzdjITiPhXEmYK
1M3augOGh9NOO/rd5i1QATHOMr8meazQdN592tTdmP0u359PoM/AYXnZjzSz36oZ
+uz4GeYwW33JAelM/Eva+stf8D2t9jrdACA3PG/bammASMQgK5tihrxnRC9s4MoO
KyOCW2V/sZWIR6x/3lId8r7g2SwfUf6QRKIkcz6CsqR6TFGhOfsAOz9vIHVr+Q3Q
8V/ZmoVoyKgGlbsXq3tc8cThYnDl/WdcUT2DFIZxyOJsxIt00mo3+qnHN4lQb3Az
DLaPxefTAENXQK4lce5VdkwIPCOF5TXghpS/BwP+fY0ECPvhvLZ0UkHmdMr6frqx
1IzKF2Dhs/un0sZYHTFtQaH9/orcDe/8EfyzpAFXN1tBf1G8is2tX0rW0W28LA2O
EUNPc+T6dtPVFSWuj0nBkEUxBwtU6/1o9RmkRqx5JFnJFergALwShQIyLhs8KAaI
BQndkiGpZfsM454/boaBe3mgUXBHk62CeHb6DtptV7tim889kpAocv+kLqYSAUr4
igUX/07Dkqa/TdTFiEzsiGAeBY5UeLN5KLuxkSj71cS7F9rQhbDHMc67YuIA2Jft
NjQBZB6RwEEOfhgpenHlLBQNMaBpAb9XGZbefwBJc3c3kZmTR8idk6YRYgZOHYcc
h6ocLXs6AXzu4D55uzpa8gT0nwop4SrcTQCINo0N1TsEH4Q8AZh/uBqJirCB/tNk
eXbUsKUloK/McpWvQJdDtqRNFhYVwALANk9RQa3SQXf+AcbMbRKD2bZ17Lzn914T
sbEiVnUFLDPA1DcJc+yfr9jrY8AOqriXpguob48XfODmhsb6+fzpRpAaY9kOuu04
WWddWWcYIgLmD0gQPRk32NmTHhQQ3ngrULFS3Uklhbg9qi2C2lBgJwlH42W7lVen
zBqabgdivz/ojc24qDMV91P+MEk7VeSs3qFhz0jDcQNNtPbq1VnLp/dHDVqC3x+L
faUVrZ/jwpeQEJx96VtHU9+4mx5OMEtb6uosFwCBa0EsdtimF3twpTW3WedTiDHZ
S0ZfcnPIqqZ6gHMAwU7If8JdvlMq79G4rxYpFKd0tSbyKQm8zJO3fIn2oRS62Wop
5eUyigVB5XltTK1jTzJcOvDc4skh7GxDQUtDcpBbKxpze+hjjt3loNKIRnn9Kd0k
/BgenFgID9ujB0Ym4h5cjeZoSHanE3PBLFBO88IH6PBjEErKkCjomD4h0IMN90/0
2g8yYwKFUfKbxeTlVYxGqdBXpjt1zbogeyAafzIs7rJlXdjARYoi7wo4GzPgHvlQ
EKA6aAWo0uNfmqhQOyT+yV41BDC+B5/HlxDNY9KCqHfR+wQbqqxwNbxm6oIH7Sax
DSNV0pYsroo2KIOn+SaxukY82wvj1Jp8D8hkyS7MNnpVlHgV58GbIurGUe/bsBxa
cNEM+DynNxZ6BYCZthiioSjCd/dq74WUvrh35kpnYUmprZH1a4ihbbUPauDCuo6k
jRWw3GSbycRF13J64iIr8CwmhOE8XkSklRIsTIv7QmPg/wIMlHX2DMSDV4QqVxeF
kI/1/a7Ef/Wxc2L9U+bW4jxcdyvN2pDs3B5WsACN0ari1JFoKAtSe9nJJ+LLBcrC
H5Q+jagOEc9y1wHs4Rj8Ck22muIhusOOHF6b2hDJBgnwukewUxiicKd8Z99PIGIn
yBcAJ7b64biQLFLRqZLD4t/myp578Cg/0Ic0BeQw1I3d7VPhkI8L4ge3Hz8rbegQ
bIvzB3YFUptYpubP3yB0/zWo4OrWT7FwvtTvajLcHa2HZONpRP5SpXDG2FqGVqAJ
R4W9Kk4pu7wOtFkh1viA1dkgltYZhz71CAUrpSfFf0DlPyf6BggMxcTHs2TT0Te8
dkQaJxKkXrvEppCJQrxhamaeRliyje4IFL85ROZK28gH/Z6YIC18/JqphNCjVm1V
s+zEZIr08hyB9gVhkOWApUA4Wz7jvAeIWQiVZg4MxyYr8o7yqt6619iBiNL602kf
aFRw2DDWy1vHKTdLR+ldm3o8dHgF41k3BSVt915kaBLf7awpyiic93d/uOxyO4Qh
XLfMq3yFlbdg5vAAHhM6V93CKJIvem3njcCHH7gb46s6EyHqAhVNTL5HmmtmWx+/
/EHRusq8Aljx4yXO0mMw+E/MGaprPPZ/Vrbajb+Sa/OKUu0zBGEX8nQTEyRCz5pB
OmlUBXSAlXDxeL10urj/ZrmRzaTfedYL4/tH0Z87JuyphuDk/7yxm5vM5cV0NP6K
WDIHkX2GNBqjGLm9FXXVwDhbJ6/rnWZjdNHqT1UyvM1u5DrKbLqwbYtGOxvJwmC+
UsHLOewDhHIusbHjdFMh4YZ7jURR1VCGc5mr9OtbEBSwI8s2zroKiEhxwjlvzbI3
LIh0Bq64GQ4PlMOwc8++mqlY1jnq/UR/Nf1zEx+b/fBL6PJb6M1cpG3T7sq+habl
61IQdstNigRQdiXxgxmqQ5H3T/r0HBCIabThSS2jZorjK6qyZOY/onTnxLo41NUM
V4DHMht/pqk6qszK0v2bdb0Llew23JgE0BqKgoqAAbUDrjdN/c8Z1EEp9eHIZPOH
sl7GIz23OPggXUPwcay2mRYp5PJfCt3yOmAWEjBGv3Tm/gcs0vNtCmNvFr8yuTI6
5zAlDx+JBdKMPewTNQ4BdtRGM1aBm6dEclgRJ+Mw2WcuhqJo35YBdthf3GtAfvqT
9pp5+RN3KcUXQfsvHOoDf31BElP6sJzzQdDaQt2yEfZ2O+dFZ8iob+8lGCp+Xl5s
ROOVZy669Mn5Y7ZMsGEmqppU9+dGjrnXYwQHzTZvGuc/9QPe53L+cplfEkA1b2Eq
4mYadKChYjFkLViUfwBC53tzbbT31khTMM7nHAKyubEjOnHukzMVHW5Ta1a++OQT
3SRWjKGMW9O+nDbzH3CQMfuCakJpqzh/TBvWyowKxpCcLml+Hw14XkPHFdYJlrG/
AU19YTmlhdysXEradLbVxgNhqK3+QM+B6FEAgHwDEFW7SyOH7tqwtDuO0ql3lLjL
DF/LDEKyzIud+Jv0Ib+XP4v3nyj3pCg4gtATOdo/XPPppVbRLjdTAFDTsjv0f72M
oNnvRAvlyDxYSXalRQ0wKK6OeL5rOtPDFj2n2McmGWx+DExC+hkdsSa9JzfrNibT
KG6V4DEjC2sjJEDXxuKsLxaWtUwXa2sb7ttDwOQ5BBR1IN8+vznLl4ygM9DMdZX8
mEPFPDwCYWC5yPwiVnYU+OdKTlcOkjqTO2EX45pB4vgYdjJcOTteIHEEAIM1o8QX
w0IwGoBTWBRzYUw8Gcde/KVBH0A9CMV9qe9h3+9blRhSpYW/1vkoO5EMIEmn4C9T
k3fcM+e+3TIF/1eTFbYPTctGa+RrrGz30PReXQ0ukyL0zGWzplPQxeqKUpFA/P29
5HhgFYXgPft5HlI3ZYZ2vlTLho+mCwx4p7M6WT6c88vMXx48N5OAlafzGP/ClYfb
Gv631Zf/8fkQzx80xqwB8o1E+YLyuSsS+8E55s48XZ/77aKA+IrWK9vUmtFacshU
cVZlgQtL3vHO1EwkSJSoQwEXJ0rscIW1YqKAAQuS5QhZl0CffKJb6V77oc/tyhxP
qdEa8wKvF4TKBtQHlyCiZQPt1WR50k1QmjU9wrynq+MFHZ0FedQ4wsnQHbUWNvjt
Cr+7lLaFXZpk+5trckiMVKBbpxHYcwW7mc2RI28es75GGQKuaEMJ7riIw3Nxllkx
5mvIUlUy3d6mEAsjB3SolI9jjlg1RgKkqnyX3E606XNaTrTWBr4dAnrXw+GqqAFt
2G6/G5V9ge5ovbbhCzZDJcz97mj0OiVzWR+R3WE6RERUqvMKso8AnNqLAi7YmWQK
8aRgXKkJiSTTOJDIFfi1XXilJhH9Ek7rfyvy4h+6xF3U26W0sIc12eV2HRgDqAJA
1MAxPIc8HytjLoCtiZEfBA38JkbymY/Vfm1ZP/LyZpEGtLX6Og6bcrLKTvm5C+gL
OYXKIf6eYfV6BDhjlyUqkHf/sJCpWUyfAuSVFhu8CrO3S4dx3dPuEsifSptmPjKC
HTo4Rj9SfZoLCwiX/L8VFOvanU9aFSLmZjkuymS/6WMV93UlfbxvItKTcyhmuiBq
nk5ee3P0elLSFe56cvC9D1AcM4zIwXcfmTxyIzfigXrp53IyY154R5nOe1NDjnVb
D5sm6FrfKvHIhUU0E03ez5XyFZccwc49Kj640R9JKXa2RMXav3f8xlIctC6JzCJJ
v8QECi7m5plkKszvl/7HEMfS2r02ph7NJjcb3Or/jTG402N8+23x/IpOh+HJK5ee
B39f35IIDd1chF0sHulelIIxOQi98GYffJD1r7ygONMVmhEAV2P3fV2i9pfOqrjV
QCXpq8ULShb3lgAKm5JfjSOTkwRjTIE144gvvIO7UuVjFZUYHniXCPT4X9ojnQ+p
abNxf0mqqbISPgUL9AUxfmkbnsBskIAp2l2eDqrSYxvyJ8F7UprbtdaMTXRw5PJR
j+SSZbCoIS4HB3PUZLHly4X2xvr5ZJXBp3eQqQ4uOlrN7VqH9MV3l9FCz1XTo80v
5esl1B7In0poQqI2kYPyYrC1fV9tZsb6j47CDELEOR+n3U+4ExBwlWkj54FGFDiC
SPMMyi4PwMyFlvO/Rdyk06bxS6siAbWQOS8ajQI07UZRCm4kEAr+TZqdH5ueOf/N
YCeDQhJONsEzhgT7hgsXz4HAlGrFeoKoJKsaTL6oDLaeWt4ZrUbK8bpuY8JAbh2e
VEgP3QNxnnnqukRTpCl/L6slWrM3kgu+0/6PW1OlZjFLbvHoqtE7PfRRoFE6bqd6
CyEgC8OqWK1+XWQQnVAv8DnBonE65Eu2oqShOgtx8LEbZ4K/FebfSMCa+saA8sIS
i9IfWF4v8Ll4wy2+IPCploaCPcMfhYtu9iaIn+uO5ZDC6SJRhUiD0JTb2v6cK8zP
KO0AwQS8PB67H9wAgL48B3ssP5HRj9lGmA1gFeyTAxlVF9Dey7eqirhM8z89/LX9
3bW5HW+MKbM8CwF83B4+tQaOjjGMfid8ckwcBvRor+pAiS3gAOfBDFgi0ykwC0bA
f8vsgPfmDPyIiOI7TtQpEpqRvaYA7veK9IxZNETs59vbt/mLcqHP0WotB5t7y9eT
/h6NFK7fXK8YwCVO0Yf59JA4gyhi0d0N89kbRg+0nmO2eCbMHVAGKZw/cm0Zosow
G8VdZP0si6usJPQ5xFoF/8Ku6hMw+VPR76F5NBNRDzaJOpFCnhYlNtJfwLwhMy/B
53nWQ3R0wx2gh7uqNaIXHI24ZQ35gluWeb+6KMrAjZ/vpVl7mEjZgL5cViEIKWXK
JK7dLRW1Kxujf+tj0+7ohpLhMn1DhzVT7nys2CttTla9rW48ix2mYjYHI26UXoTq
+CXjPe8WqfEUDoc7v99AqUMbHHW5s7AfgdHYlTj3dcZJkfariEsfdTVxrQ6QZAvo
PNvPjpewXm/PgpSYj4DeGMxx2VobogUc3rUE074p7Q4IsErFMkvBfiNBDkEBiLT1
6WDKQnypZLCOGgCrUXbVlgxQkmJHcz9thQYlrDbBoagZf4GDrhU4Fv4lmHJKrEXc
1bolRCwEm46igHrft6C+YoP5F1Bxa+D5L3O5iy77ypumnoouznPpqFfmHyfTDD0B
GDdBs2OMcTlg5tfLP6SpGVgmTMokD20RJ+9THE8WQX404nLE7UZXZGyUKhbxlCGv
ZIZDHltDMtOu5giRQfbiR8cp3nhYAhNVCxbZWLEujpT2S9vPhcs/J8XWkc3v7X/0
cbnli1bRniYe+BU7FAVGUz21RpkHlqBABO/jhJ3NDuINkr8c55UF+FT0AmCxL5Wr
iG1uWAhMNXX4lkKM7pQjONU2OkrEjs5JC6kyrbZeRgzlKg29vk1gR5TdQFt4Yb19
XLVKk4m1owXRcn3S3KjFKwX3FmXNXcgE+KhBH69PDGU/b1bqoc+Md+9SxED+IdSp
MZEVfO421wl6hrIOO7KKGNze5Iqq2rOVfNwmyqWFiryuPozoLXkB7juXjV46+Rp8
7phq3w/XX5E+YBDUErWkwFNgEsyzrL4IibML2zsSlr/H+Cx8oGvpcYKnpvydM6qU
sfENcf9ppNjA2W9RU+XN/HYNG+PajVRonXkcvs/y7DVrZiGHa3ZGXkSmVZuZ4POk
9M0njwzSQTRS8B8kzq4iExn5nzjcG7AJN2NtWY7EcpIjJr528PJqNw0Dy5X2DJH5
qag2HTiSzVVreC+e1Zs2NeK4XJokFNe3GSxacZOpcAmzHzFGRgyx3nbI+i20/gIG
XWtkMqeT3PV1LhmvjTPcYlCWEbwzJk5khY5GWu4PratEyoYkRi0fBDFDPIewCR+U
NRfucK6xnUzSSzNmHJxWSaRD41V6LmozctsljVWQzPY978qxoVFRkirj0JG+EfrH
2iuT/RAbEwZP2a8cDME90xxtCLARqlLAfUujvaqK+hyxs6oYQzEkCsvp6evRDMfr
KlmDfWJonIacUpFKF4j/F+KaebX6TJEHY4e0OmGSTaKuEcwQoeek+PtIgghAXte0
xpOUSnX65Zj0FDSyEKTcG7sb2/a67vmobRdrPS8PeGfHKgCVwUP7RN5K/mz61I0t
ltNv+RsnXHwboI75DdkUfbet8O3TYlvEz0qUiyBBKnmADComXwXjV9TuMjDgcjVk
dXRy9GXFwu3rxK76YKMniRp4ktr0oZ6LUd9PazD3JCaAAMCmt+w35A/G2rREGsZ7
B6XKZW/MQi7tehS0qRDOIU/xhMt5nQkJB/ifipnrdY8yfe0M8+cALjVq+L0lRIZn
esAF2fQJ576KL9TApL6MeivhvagbTfYWiGMC6w0urLqMZQr63SEHmpAzAScr/fLS
R1zcvqnFKV0+GnbeGbgcNEzfIPrhfKFWJjmIHK4Y1NsxHUe1VWQVA4veFwwmUZg6
RQB/WqyEUht6ea2XC7gTDOzDrHPbX04PW8F0apZFSydNmQU1bkxAwcCbKys/bqRu
rtusoQBUVRIcsAqN51J0GufqBqS9AD6Wa8vRhqhvlXasHsWcdgjG6s3/r0p7QeI3
guBuz8t3G2esomWxOYazaGCstxcj9f/LQpyRY4VA9dbGHZ7G7C1Og/Qh3yCoEqyx
6EFwt5wtytH+5gt4L79EVePeqyczMTiW4PXS9lMpmOmzzdYwwOq0IMNKYak2KLrJ
EUqzkKT+H7o8G1sjX6+/pwok50ULsjYOPiFg03xzo8Z9NL9eIgrA5lQT5PjY6RZ1
hwoME4Nn7J2lESntey1B/UtocUCFlEzrtSV5QhtCovDs+U6fqmO2+BTGaRMKlqOj
PqeQG9BTPWBOLym5+qASbsNtmK1e0MFdLpqW7X6by4D09PJJ9blQtRLxpfJXCm2A
7Zl7t5KHiOoUXhaX4X4rm3JcaA2v3oRW5oqQBV7q22N+mWEQwXMMr3BQl8UUUXTA
ZhNBS9r7z+Epw79jPyW2lUttINtYaDrc1RmflT26BPUNxaAUoxYv//QOKkpMvkNB
hueQIGKoHdRTjcbVCwv18o9KtARk67M+3j0jyS7h5D/W3T/SQfIHBer2SmkJvkK5
EeicPQy1g/nP6mLV+RGuYXBijZOADfcTHLkXhGmDNNgtYXgW02gV7XV6x6IxyGuD
80xHBH3oPwU3hyWwDVegKhZCF9NUv9sOwCpawG1RD+K/MczfsZTRc6cRjaXlYmll
OplhRGJ/cumFbTULaIhcsH6iG2zUEfsrTEtbXUmp/p4dQ1O++VpVUw3itUjLmaPZ
bI7tVb3PKwH0G16Y1anZmaRCjkOWtuBezFXDxn+ooHhlJE9H/hJZSu7b5pVcv+Me
PV2uaFPlkhfh9+kzhp8jBK64KQUOfWdQSdPHAA9uN/ZM9ZgSZoY4kTr5OuI76WoP
6Da5lcmglg9B9YIHwFa2wjguF9QFcF2e/8ooeGYRtuLCDYP9Ym6WMc9NqEjW4JQR
3F17BYHd0Dnj0WoepqhnToC2qVNqCT2gTDbTCk07qHR1IkDKmE7T9K582rNwjAzy
Sj+c7Rw2MBB9cZcGiu6U/ja7kGLDyhhS1YmYZ3luvWDR58Mc97DPGYofgDpIY3l6
v02MQTgxf7VOlzczNEcYh3Y9RqfUS6KK7OyP/GH+YHoCfS/Rbp1jW4TI+Nam6Kjv
tl7m/TQH9tadWanLxTKLYq8zSPJNdpkDXWyl6LwCPKm2R5FBrweoExJo3M2eH6ln
WL08ymCW4mKd8ARGKEwfk5rKcFx4at5Myoqtdkuv9I1NBeDsgao4Lufi2whedOUe
rnWK/hJTvDRlTYz6cyGEpF8ksR5RFcQbJyoZJYFuuRNQFuESMa6WUAsIK1L7VGGs
l45UIu4FR+51J3KavXwZ1AcGw1eUSDzF+b5iEVhEvHrizPxd76qrFAzjM5SJ4eiM
Tf2EEHzwYfA1XVUoa4b0sqkEDa14ok2sdAR6HLzlhow6m84IVtI/euUVc2iuOJNR
dKUNAVoe8cM/uxyxOFvJIPL/epTppbEeKzPX7eJZPSvlnquhiQ/qzdHBfL9QLa2F
FvUnQr3zibDi3Kjn1uPh1Guc683wKU+C4wP0++KUFvI19z3XgUu7NIHnQUtgfMFE
olpjxudGQLDVr2x67VrL8mrvqxyzTpokwHy/2nkzB9rPlRacozCE/VALFFedsJT6
UREgIXbAOh4e4WXVRXcCjXSPm+ydsrD9k0txjjFVUvSd2JzEYQvWvjuG0QDibny6
nSVBmwXANslve/DQnHQTVzsrP6DL7h2m078aayLBWbJun+zQfOVYXGUthyPSZIDY
enegzKURe7u0gJlL3NCNLRj/aWxPZCr+D1phl18T2ES9mUJ8Ms8dAKpPusYxS8En
Hm2bYWZGrbQ3mGuVlBuvdJs2jS71a8X0tIDr1khDXGcTqAY2teLLFlXHlWbu5YJe
3/fDAgCV3q4s7Y4voUE8hTn9MuSJMzeKeTy8bcEMLtssdZTlp5kEdR/bHVSEQZGG
po7TiGfa4yCySfpc+/bglgd3q98dwe2Ouoq4EtmZkfnAU1dTbthnO1AUs77ymCy6
V6ANPZALhq2qObQugcpinkDDZBdCnFj+nQLUwCyA7SSr8RqEUGxJpCJT6lpTL/rO
0MMXPVFtq9r9Y38+cCl+kRbecMNkJ21EjlLHb1s7wA6RiMJr3MzrasWkmParfHE+
7hiAFdVtW7/sdRPo4BwAkIyK5vTZbi0jeRwF89IFdB/VlhOT3cJ0stXRVaNgfqP/
vq9Ag9sSq+j7J2GFgdfZ8UZLteBEK9tHH8jwQIKfGqfpZXa2uknRaw3sX9S1EDhL
dYh9Le0CzPie/BRBtBJlulw2OnMJzT5bD4O7CRlrop4AOVqVA/vjlqZbCdvsF5o2
oEymUUsPl8K4kdOmdH9E1/CgGjHgFb12cMMFTum83ElOJi28nR6nXuaizkd0NTxz
o47d0iZa6rv+oyJ0qZ4nO8SI8YpFUlkaWkX/WIB8Od3j9Dd8BM98vuR/xGnKElvr
OsxR9CxarGFdmF/Zua0vHJU3yoAwPpt6QpUQPPOscvC/L7ztG+mYvGQ3gA21u7n2
2RXhr20M/htxgr9tP79iDUZ8dyVP7tgIATmeb1lzMOIWkxJ+S/hjCX13TKNREf3p
tNEFsjsep2HwOOKwZIYBq5fD6jrxyHY2d4LVYTYaDWwRL1gCEt2ILXXVZ4p2MRfY
qGFQAZglry7gfotoTDMfFNJ39LmoOoLM78k/vU1wUuNRMUvuikn8oJbVoPhtrnK9
oAi43XBudv0GldxHu+hlImEbP4Hcz4AadJxNlo5lMEqAMP5tORMRTcp7WXV2XojE
sSk5J2JXM//kKkYqmtpoJ2EmDc4xCIPGAPGfan68ID8rV3Cd38IOKkaLzgLn5pxb
QibTuTkd7w+cqFIsG/ex1WZQW9I+UhROTYd9qfz/HGkQH+I9PleP1oHSZpacViPx
zON1uCvZksp2QoMMaR1iqW6A9ZL+psntexMePQ0gqReNHpdAAc6VTxVapsmH4Qeg
bbmenCXhh1FAc4gVGvjtv7fG0w92WxQTnKZAUsXUeRtFPcj6vkzqBqFwIGRREmmy
ZfkhpmNYarWSAGkmE/07NIjsHYuHLw4LkAKrVbUIHEoBvVnItIoBW2X1MhZDm9Ro
2c6p6DUvJ+XceZxS4y7jOImmDFHRadIZTLQ8D+yhg9jhdRf9Lodus8z7Xu6fjErm
i6n9fqbWpoirjXQIDXk/j37jaKGeZW0YtWoqjzYSaIKjybsPQWz5GHMioNRJnxHD
Bn3GIKkO2QdoGlwq80OI1O3bzq8/nqap3h6adiBjEWloxkYVjr5ieKpSLDomYMF3
nS+XpyPCJe8h3uEbOfk0gay3hrEPE4HZk0RdKJDg/RMWKwheMCsB81O2IwpTdg0R
RC9QLtQUaUGS5hjJQfYPeP9b6Spio5j1g+y2OtQU8jZgoafq2cuYzicUUUmbJ13D
3P4opfobxBuFi0H0FubDnfOf93Y35Uh+dS4tNNbTOsn/Swnpk3/ZeCVErz9BISM5
1insLN/3TLfK8LTVM/lOB8BfLQNkdXeZTM5E/rV+LXGrVkQf8M2pAf1QUWXmQ1h9
tQy302ikaBC43A8SUhWDVRuLiW9tItIGCZKEqs6xDtPz7T1Jr2TwUeCtqmNxQaFW
F61bBz5uEBeVXOdb184/0yn499rOKUri1Gq+E4TVAy241KtDKEQ0bGTdQjI6mzLf
H6fxkt1pExYc8L/JzvyB4nwbaaE2gTM8cl9U5/vwmxPyDsFpYi91dInZjb5lwQ+0
pxZsU0z9uLnkiO2bHK/WdyJpvYPR4zt2XCjwCl2EFYt64Ib/hhSJ6hH/fIm5W1/R
L5wpPIu/Dp4c0BsQW44wP7BPJkAWzJrDVHC0mMw1XbchQuBOnLtM3V+VHVAAM/M2
95Wt97EZyEQGrx3+w1+DHbmPpZJADxhPBJiNjFhW8h4ekzXuVScC9oJprZoPPVYt
3C7OKRpPQbhkzVP/m8f3Bm+jhcD2gbNe40lsi5X4Qq6bzRhLJprU2XsVc2O5Fq8J
Uyj1BN4nKq3ZGXvu9A70uavjRY8ru8/jxAfckLgqnfrc2GBcTbx+1sPmxz1BwH7h
fNV2esyXI4sthJ1FsOpf8nqKYnsNfclScNzx48qqbbj205202jj/HFBuY8/gw1FH
b/hZUKT2QRcxo+JfeGkMQag9GxSJztENLkBCiMdg84Byyrvfqm/+eEGthOk0LJwz
yEKY5zHlqi9zItCrbNglq6yeNn7NuAlN9Jh+iLqGRwrcjDDZX1wUroeQ3IlK0u0W
VraBfM3bpXaoENqHxGR4Kr7l+dUMdvNLcMnnHPYsBrcIdsjOKdA3B6lnYvg5wK2s
gGTiXtJtePb01AEuWK3az8EghCCvEN9bhd7KMBA3sQXdGPUqrcKHagP/z9b/dbEQ
+KzcNykjUqlA/m5Xc0YsND3K7D01wwgU124e5LBfR12xs6n3Y5MJ0SXU9eAxWPwg
5JN0I6uKDu3hJeJsIbghEFrFNPfdNYPXZx78yrYO7dX1yylSfVK36gPeD5YYAOds
DxdujWuPTRHlaKTTUAGinYF2RHN6/ewQyQF1SWNHG7nXPlrGPAXT8r+UdGGwghmM
KElGesVmyIf0mb5WiyZ4dV0r1zc7SqL24qVKLfmOzjgxylH5JVdrhNzoBYTlaUZe
Zuz21vja3HZvGHOqpa55k7106ajVPfjcQdsRYqs8T4rlmu+YIeqL57GD7fj9O3r5
buSCjGzWM+icFp5QamfFE1/o2W7LHZmK/3tT2kTh/+6wksRn6FVnmQWTOQb4wwIY
zIKuNnNPDjmxapUL07QmatlVs2XxQ9d7JfkpfzkKLNCC1tVGguowQvWxG5ChTfxf
5i0/mQQie5gVggPylqx5PQ3qtExZF/0VyL1QO3H4+dk3ksvpiWz7x6NZJjplancS
CIEYmV+0G4uYQe1bVMHOdBOkAcMbvcGSE+FKmFX0XljzGNosSfW24mozjp7j5OwE
SxVXwTELn4ocBjHwp4xUCZ/a7UGj4P7FReyOFMkHSyqrpeTfIteMCwL251v/KsgO
KP9otmx7ri7kN2YdkS+6z12wvXEiqvakCobbcZ9WDpTgmK1UWHe5GycmrhsGoA/0
B+v08hOwMnn8amCKWkiC4H9ElU/LAQpSjNmzkeICtX7V+PIz7CpA1e8MrFdvgdzf
Sla44zXWpRYCXznlneDnJ3/7DwWkSFXma9/PE2ORMaFkDWus4AZa4wp+8LzXyS94
rFz4dDSoh4NZ3oC4245yggcMNOVgf4nmSquM5qc+EOgV34nT/M2cJuQqMoHKKTnb
8caEl8YFWCj4VuCYgUxE6MQN5F1egqa4mkr0KSIS9oLqwTeC1dVkj6WDNyHVaiL+
5a0Yf/RMf8ARjb7g8tM3O+2R1V59GuPGvZUOKLdma9wNn62e6wgg9UQCMZPzOck/
NlQIi5Hs+kxeLE3n8ILVmwDZC0uZhhyLyFbSNZnYZ7lY8x6OQmAR0lbwM/+fGkh0
tJZ+brC/z6etHyG75UXJqgl1tXcmm7tCIufbVYcWJ70ZG3dZ4u8ngiUuCqjGhX5z
r7JOU/gGkoDeTuLqL08eqKfd8FbaWEcvmkY/XPUdUOdDbHwI72axL3Iz8BqPhmM3
dgN3YHfIK0gk/NP30LKL6JGs63HD7CvBtu9tC17rKlwTKUo5+VQZwNQtnI2Sl9t8
/lnJppcHAftsye8b+RIHvQUu3Ev/y3J71eYMDbFBepLeoH/ufgNGbUt2h2dlfmZI
sNEvQ66rONz8gsBdRn38mYvpRGopFfLgjDaGokn5sJ+McEWROHWu1sjy4KRQv1j+
skZOaMTCMd0cAyCwwatmpuQOsOAiM2XG9IiQ3LuJ5u1ixwFuWVmPnDfLQgYixJ9p
QcmAi333zKxmQHrLCLH+2leqI7TWn767pJTJuKsgGFRLsTWIOLFwaebxo0oq5JyL
QNkU5zQ3nI316i31qXx8WwKQohTRvM7LQ6poOVukibtzC3qEeIUGRYiKZbtAmFvH
Ff9pABj0V3FgeZfICQRpe1Bz5TDO4OXz7u8QnzZrKf1lvRp0ALtij9YwPXs/B9Or
De4xl9OEx4u7oaShCmUp0lcjHmNDpfPGE/L3GhsQ9f6PY6tQzmY1EhIIzomDT4pA
zCxjf7q9mETZoopbpU/d9nGbgMGJlXWMBI1SpcHkdorGR5EmPVwm3prJcLvEw2ew
C6Y6atpLvQHxra80zQvCFZJ6oTZeB3glYWiukjBFDJlbUXN5xxHDkng4UvOpSZvN
MsFOXpoEKedcMvSP++Nl0fchPdQo7zcrY4VoVoGcFVV0zHabFnK7157VSUYH3WIZ
HLTBrIQtClmfZqXhz+cTzDKUdLkZEGxrdCBGYF3Euo/4X6s1GRcqm1Lf4h/ho14Y
5m8q9fR9K71yPzzUpkOvzgpNirip4lxmFKJqely6rviWfkMeshvpre/2b4tOS/BF
huI7kvA7RdeyT+2zoogvfwbdFpMltu3XY4qLlZ5stzDVjY8EMOdOwUZ0uwZtbXn9
v0+7GLSSlAsa5ikcttSgMj+Ico9sXSD+1kTfu0Ub4pB+Dqxr0lJrqBhhABuMxYqk
oNEdAk56DqGVy15mVs+M85Oat8Xxz7VtgWZomynMtTUwskZYcMQA2YC41GF92Rt7
L4+dww0C80S6S3DzIq1F0AXBIVUqHYL5ZxWUiyQV1fqgTi4gZs7Z6Axjww+Eauf/
UgwX7B+iJZMWfg0T9QBhsJAGKgB9vV/iZhkiaLS+2I7J1wybyq++2URa9Dq66gYp
JPtuNSKpSJf329qo6LUjUGBodpEes7sA99S8NCek1oTQ8NHKeGHX3UrkvECU4Vly
mjmVg8eSJzYFtbR7+hPurJHr9me4lj+szB0XwO6wJ7SVgeEn//cpGFTeJ7s+w6Yu
TOolk9MbSVdGviWZ36zDI1eaatg5jDHt0EsjvaS9S8TK74CPpcugzOLCfNKjwVJw
kKmAnATg8khtRYVMPI6X2/uL3LLS8Q2vJY0uv1SS2pCrha4MTRisZ0d7QdNNCzMj
C/DDAM5qzJ/xXUEz9/XFjkLMGfnvivEGuOrF3SaYLoTIXhf8iBuP0EBTkI6ljjDS
jfyeBIA8YQ2Iy8fFD5/PjrssemJBOims0bfNAJQocfCr6S/MARi5R0Rlg4ylqHXL
F2K0wiM/K4gpzl0AX65VRTZktMEaoyJ5hdvwyDMnyzv9cXePBjnb5YLuJPSdw10/
8fdEWedqkZlgNSka7Yv3uY1hZzySCxYxB6FZ/PZRsSUvf07DLKGgm2Vw5bI9SOOR
+0gZ3YollK50HKOH61uQmmLl9ONwhSdvMnAgAFCT4hm7roYZcYVyH9rFaL7vb5Ih
i6ZTJidr1LqyY4+MbBvc0fJjuJ2YYhqUzg/IYp8KdmBbXDz79uqpjOkJQxWngQke
LBiMO63D/KRP9krtkdnyUH8O9luPp412csoxFADE3pKWcSEtiigmIOHm+YzU5H92
UM/8A9gCFm4c/4+AEay/Gif9GYtaBHFWgTCHKfJ01Hzny5WhapaNDkpe9FExRxV1
541fwKud2kKcVQNIgx0VQ+uinhnv+Nf9wv6WfiHYUtA0UJSj85yW7MO/GCViFydb
A1mHZ9owUOGrNdxX0smxJXkcM4aXZUfzeT5jjYa2SNFB+mX+biqgWP0BfUhAxEX0
a1E/ojJzT7PTfXKxoUiVVZOlCgZU0saHJK6HIw2i45LruUGQOQgVKEAst36a7GVH
HX3UkPG2CIXO8X0pJ1QfCd0FndMyNcHPVa5z6yPs890FMjxTg6wZdpkMymnMeTW3
/EJ+KRGMbfHn3h8eXcXEPyGVj6JfkAhbqsZGtgCByPWq/6NIhuLDTPDu+mzON/2u
Zbga4vPLm7/g+UKPXe9ZI8eIO79cRqfqJwVBZSst6Aoj11F5Ub67FlfHdba6xHIi
S21QS881+aRSu7oDPPa1kB/A+atdzm8NBOUFHvhNQ4jSCsMWcNaERICjrJas5Jjk
899bsJz/iX1sJnX/k1NYQzB6zKZIUhcjPob02LkROA9cD48R/gOB3KZBIYGs60Bt
NzO9H5oSNYhJH/7Bq5Tv+Gnvb42MWcHKqgYeb/1zVnW7IppDMCli7WKxbwfQxbkL
vI/E/0z5utGhuKAi8hEFIigbaXvtdjJlrHMru7S1WYWUHjU4TtkVnjByfkddf9wh
sjeNgWDUgdD7UOS+mOI+k5xXeAADDaCGZd85byFvMWfv7roWdcuhScheB6MzgY7d
q+yWbeWg7fyRtsQcIGc4tw0DE+OYE52Z2IJWTEq0UYX0bQqZNXgYswdD0HckqilE
0iRoZKJvmub0tEma2Ugqu51gx2RbNM7RLzlRXCupVS9JlYuKY3fpFT8QobGuA2Pw
dJDh6iM59TkQGf2fc9SpUs46SutJaSVRf+nNAfh9nDHcLN4hkWaVzz/23jVwBjzW
JAyPEPJGd0Y6TEZus4dP/ED43H9kzcXAVzocfxeoMGPmxWX+JAGcsqj1eUSx0Fj7
SLlJEreQuVmzpOVo7xBB/7ZC5XYRKOxgDa6aAMg7d6jAT27L5TwTfmNpM9fKfMza
KhqWzncuvQ7ggTnjxQ184498HQP6wnwVkE92dKlNnA3XSpehhkEaqOoj5zAfWSSC
oghpsk2aSEVoJn7NZ8Ii5BDcgW2GnIMs3XZVWNmSByqxMLSCR3MvJzEgjcgKXSfV
wHpjfjfKnJoG6DUVhElk0ywXQEWN7JNJMx+8Xq5DIPFdYRKhjczqifPa0OhcJxQh
PPayhJk8AAmPXqHNW4qKOjfBzSjOKV+K3AfwUQgvfc9ZAiyaGIKJZQmZQtuMQtRb
0EiW2MsAlFyoDJzliZYO4+yqwieUfYPMInuW60rNW8cXKDBLZiC5gbLMSdA+kZZd
ATaJTH3sTN0+i0ZrU5MInP02ERfrXJzHvkn/QFxG1NYtqpP664n0rYyO5Dhq55cN
JCD7JOXs466Ids1mCMH5FyChw7u2aWGK06diUELk9sZyboLO/kw2R0q75AZ7OMhU
IDoMfawrp81WHKQ7r66FAmHMOca1Y2tzrLdf29INzCXqXztoSHQ6vmEM1iNEcyu2
Wczp8DuC5v2gM88QcN6CiwriIxcFyYbgr8WTaVG33iK+JVYwORwMvUKppi32Ityx
zaybZtkYhfJJOi98sK8DFEFA5z3hB50MpVDHBs0cYMc66XHRs2HXOIYpRhvFCN0f
G7VAMSit3sJ8VfOheTZaGCwKaT3k8l8LTd6VyrBz2ZlxnmGXR/9gJfUFT+U0i9m8
Etogz+ftf8xMW5o1oCHDOpzS8s369hdBmpqd92kcITjHZy0FxK709SnAVY42tNhZ
BUXVUvpqkcgP8GRWHP1o+eNGFNDGxtedSkoLzeFTITUFOh1STZuJmL/2VQ8IFSkM
KodxW495lNZ3gjOWmAMgelhrpQ9OHJcp9+iHat7Whp0RNrN2T6wjuEC9rnl+zHF8
EhfYxn9iKpYeGADY2tV5EVE1EPDSD8byv0zNG0lq6adU+w5tae+5g1QKkXzyCs8e
ri5ac2T93Fho0WdAObZJV2JIeS8NfUA5bkogXYRQjEkCSSBKTx6LFUpwfTUdNQYT
z+IHu76MDe1aZD8EQiMfwC6hVtzH66yQtte4rG39nYoqJF8ws/NxWDNBzhv6g/Vi
KuNxO47KjOoYEJ64A9ACdjtt8F46wy4HhLzBCKKF/S2f9GYleOCHMmtAwGwL90sW
dA0zP9ZZT7SkYU03Nk0bcwu3W7LpldLbyYFoo2PjeBHGWEu7sUsf9w2WxaDxTXvx
vUZ0hBaFlZ6BVOyWivTaSEl/BOAAteZBPJ3hakY2r2dZaFkbp2JF2jPhD3e05eMR
cK4JCbn6QzBaHb/Zave7g+F3rfrDr8hCVlA6WSi1Mmb4mTMF9t1r+l9/PgF7iXgC
b7cfHje8r5bR/OrQIbM6BkfR5rRQVSzQHoxmUNBOSjXybRnLr9ZCuY8krU1eZ33l
3nRLER3E1ao2NuQWORHwcwzGWyr1GNR3h8uJ6dXqlj4biBVcwHr6qLdkcoolb+1N
2NIcqmvD9C/m/YcdCNf99RNBdGuT7o3JPGV8lcWvGBA3SG7fH0RaUm098K8B7sDZ
m8aOiNsJx2UoX1lTVOG2CeSYrHKomB0rMtPa7Dczi0eBgLBswqIRNfJulQnLZyGB
+nFq+Dy5puMs26Zgzx0UzgI+JDoyFefAve/V8cGZnT2iBarzZGL5unqPxshq2r+a
e+HswcgpFlCuHEgRPDpCuodcWRoZ+V9V5qdid/H5yzFqzAkgUbsxZvsyBjoN3Dq6
1+7fArlKVEYCIDHyIV2D8EHBrZErbnTPPcLVgv4eAM514aOpzMJpJbHeTkuWuDRt
y/sHtjHklXcBrgFODjN0Rd6LZmLza3fWYq8dERFCeJpBD06xR6AvZWEQegMBwDkW
y0ewgozAdtcKQjJ9FeNPbzh50rTTC4HEhpHcq6nVj80JzuxjoiaMKP/V2vmt/LCI
9S2gySRpNMCrhrpbOcpiW8i5ZZdFOFtEGgd54hPedyG7LTTbVaKNsTSs0UGdUlKJ
Src4YU5Et6yHaS3JCpIPV6fia89UKF6b+LQCdNGDVrNJLlyvMqrxSUYnG5lv8W3X
7nQZAZMhwgOq7m+uGH87o2H814X/9z9JpEbXwIgcw7nuTQ65H44F8pLKwvQg1fMW
y7wownaEA+iu5FH+mXDtMddPeHC/jFwe6Ky58EVWE0me9I9Lmi1ImB3p4116Bujm
3ptybxOCYN+8x5BPjsO+i2Mmke1FsM4CK/+L0430h5BET2LDqyTUVbWgcxSEC1Uc
7pa2HSH3ZFmSC8g5gt5ZA3TSQv8iY/7xD5cMsbk=
=6HOm
-----END PGP MESSAGE-----

View File

@ -1,5 +1,5 @@
Name: propellor
Version: 0.8.0
Version: 0.8.1
Cabal-Version: >= 1.6
License: BSD3
Maintainer: Joey Hess <joey@kitenet.net>
@ -25,7 +25,6 @@ Extra-Source-Files:
debian/copyright
debian/rules
debian/lintian-overrides
.gitignore
Synopsis: property-based host configuration management in haskell
Description:
Propellor enures that the system it's run in satisfies a list of
@ -81,6 +80,7 @@ Library
Propellor.Property.File
Propellor.Property.Git
Propellor.Property.Gpg
Propellor.Property.Grub
Propellor.Property.Network
Propellor.Property.Obnam
Propellor.Property.OpenId
@ -92,8 +92,9 @@ Library
Propellor.Property.Sudo
Propellor.Property.Tor
Propellor.Property.User
Propellor.Property.HostingProvider.DigitalOcean
Propellor.Property.HostingProvider.CloudAtCost
Propellor.Property.HostingProvider.DigitalOcean
Propellor.Property.HostingProvider.Linode
Propellor.Property.SiteSpecific.GitHome
Propellor.Property.SiteSpecific.JoeySites
Propellor.Property.SiteSpecific.GitAnnexBuilder

View File

@ -92,7 +92,7 @@ defaultMain hostlist = do
go False (Boot hn) = onlyProcess $ withhost hn boot
withhost :: HostName -> (Host -> IO ()) -> IO ()
withhost hn a = maybe (unknownhost hn) a (findHost hostlist hn)
withhost hn a = maybe (unknownhost hn hostlist) a (findHost hostlist hn)
onlyProcess :: IO a -> IO a
onlyProcess a = bracket lock unlock (const a)
@ -106,11 +106,12 @@ onlyProcess a = bracket lock unlock (const a)
alreadyrunning = error "Propellor is already running on this host!"
lockfile = localdir </> ".lock"
unknownhost :: HostName -> IO a
unknownhost h = errorMessage $ unlines
unknownhost :: HostName -> [Host] -> IO a
unknownhost h hosts = errorMessage $ unlines
[ "Propellor does not know about host: " ++ h
, "(Perhaps you should specify the real hostname on the command line?)"
, "(Or, edit propellor's config.hs to configure this host)"
, "Known hosts: " ++ unwords (map hostName hosts)
]
buildFirst :: CmdLine -> IO () -> IO ()
@ -209,7 +210,8 @@ spin hn hst = do
bootstrapcmd = shellWrap $ intercalate " ; "
[ "if [ ! -d " ++ localdir ++ " ]"
, "then " ++ intercalate " && "
[ "apt-get --no-install-recommends --no-upgrade -y install git make"
[ "apt-get update"
, "apt-get --no-install-recommends --no-upgrade -y install git make"
, "echo " ++ toMarked statusMarker (show NeedGitClone)
]
, "else " ++ intercalate " && "

View File

@ -109,20 +109,24 @@ editPrivData field context = do
listPrivDataFields :: [Host] -> IO ()
listPrivDataFields hosts = do
m <- decryptPrivData
putStrLn "\n"
let usedby = M.unionsWith (++) $ map mkhostmap hosts
let rows = map (mkrow usedby) (M.keys m)
let table = tableWithHeader header rows
putStr $ unlines $ formatTable table
showtable "Currently set data:" $
map mkrow (M.keys m)
showtable "Data that would be used if set:" $
map mkrow (M.keys $ M.difference wantedmap m)
where
header = ["Field", "Context", "Used by"]
mkrow usedby k@(field, (Context context)) =
mkrow k@(field, (Context context)) =
[ shellEscape $ show field
, shellEscape context
, intercalate ", " $ sort $ fromMaybe [] $ M.lookup k usedby
]
mkhostmap host = M.fromList $ map (\k -> (k, [hostName host])) $
S.toList $ _privDataFields $ hostInfo host
usedby = M.unionsWith (++) $ map mkhostmap hosts
wantedmap = M.fromList $ zip (M.keys usedby) (repeat "")
showtable desc rows = do
putStrLn $ "\n" ++ desc
putStr $ unlines $ formatTable $ tableWithHeader header rows
setPrivDataTo :: PrivDataField -> Context -> PrivData -> IO ()
setPrivDataTo field context value = do

View File

@ -0,0 +1,39 @@
module Propellor.Property.Grub where
import Propellor
import qualified Propellor.Property.File as File
import qualified Propellor.Property.Apt as Apt
-- | Eg, hd0,0 or xen/xvda1
type GrubDevice = String
type TimeoutSecs = Int
-- | Use PV-grub chaining to boot
--
-- Useful when the VPS's pv-grub is too old to boot a modern kernel image.
--
-- http://notes.pault.ag/linode-pv-grub-chainning/
--
-- The rootdev should be in the form "hd0", while the bootdev is in the form
-- "xen/xvda".
chainPVGrub :: GrubDevice -> GrubDevice -> TimeoutSecs -> Property
chainPVGrub rootdev bootdev timeout = combineProperties desc
[ File.dirExists "/boot/grub"
, "/boot/grub/menu.lst" `File.hasContent`
[ "default 1"
, "timeout " ++ show timeout
, ""
, "title grub-xen shim"
, "root (" ++ rootdev ++ ")"
, "kernel /boot/xen-shim"
, "boot"
]
, "/boot/load.cf" `File.hasContent`
[ "configfile (" ++ bootdev ++ ")/boot/grub/grub.cfg" ]
, Apt.installed ["grub-xen"]
, flagFile (scriptProperty ["update-grub; grub-mkimage --prefix '(" ++ bootdev ++ ")/boot/grub' -c /boot/load.cf -O x86_64-xen /usr/lib/grub/x86_64-xen/*.mod > /boot/xen-shim"]) "/boot/xen-shim"
`describe` "/boot-xen-shim"
]
where
desc = "chain PV-grub"

View File

@ -0,0 +1,10 @@
module Propellor.Property.HostingProvider.Linode where
import Propellor
import qualified Propellor.Property.Grub as Grub
-- | Linode's pv-grub-x86_64 does not currently support booting recent
-- Debian kernels compressed with xz. This sets up pv-grub chaing to enable
-- it.
chainPVGrub :: Grub.TimeoutSecs -> Property
chainPVGrub = Grub.chainPVGrub "hd0" "xen/xvda"

View File

@ -5,6 +5,7 @@ module Propellor.Property.Ssh (
hasAuthorizedKeys,
restartSshd,
randomHostKeys,
hostKeys,
hostKey,
keyImported,
knownHost,
@ -75,7 +76,15 @@ randomHostKeys = flagFile prop "/etc/ssh/.unique_host_keys"
ensureProperty $ scriptProperty
[ "DPKG_MAINTSCRIPT_NAME=postinst DPKG_MAINTSCRIPT_PACKAGE=openssh-server /var/lib/dpkg/info/openssh-server.postinst configure" ]
-- | Sets ssh host keys.
-- | Sets all types of ssh host keys from the privdata.
hostKeys :: Context -> Property
hostKeys ctx = propertyList "known ssh host keys"
[ hostKey SshDsa ctx
, hostKey SshRsa ctx
, hostKey SshEcdsa ctx
]
-- | Sets a single ssh host key from the privdata.
hostKey :: SshKeyType -> Context -> Property
hostKey keytype context = combineProperties desc
[ installkey (SshPubKey keytype "") (install writeFile ".pub")