summaryrefslogtreecommitdiff
path: root/global
diff options
context:
space:
mode:
Diffstat (limited to 'global')
-rw-r--r--global/overlay/etc/cosmos/keys/aslund-46DC706D.pub42
-rw-r--r--global/overlay/etc/cosmos/keys/dennis-3EE4E6C7.pub228
-rw-r--r--global/overlay/etc/cosmos/keys/ft-4030CCAD.pub56
-rw-r--r--global/overlay/etc/cosmos/keys/ft-505152DD.pub124
-rw-r--r--global/overlay/etc/cosmos/keys/hugge-2581C893.pub2198
-rw-r--r--global/overlay/etc/cosmos/keys/leifj-0AD478D6.pub77
-rw-r--r--global/overlay/etc/cosmos/keys/leifj-1.pub58
-rw-r--r--global/overlay/etc/cosmos/keys/leifj-662D4043.pub57
-rw-r--r--global/overlay/etc/cosmos/keys/lordahl-3CD4468C.pub42
-rw-r--r--global/overlay/etc/cosmos/keys/lundberg-9303C5DB.pub75
-rw-r--r--global/overlay/etc/cosmos/keys/mikott-243FE517.pub61
-rw-r--r--global/overlay/etc/cosmos/keys/salu-82A313B2.pub61
-rw-r--r--global/overlay/etc/cron.d/cosmos2
-rwxr-xr-xglobal/overlay/etc/cron.daily/scriptherder_cleanup10
-rw-r--r--global/overlay/etc/puppet/cosmos-db.yaml154
-rw-r--r--global/overlay/etc/puppet/cosmos-modules.conf54
-rw-r--r--global/overlay/etc/puppet/cosmos-rules.yaml52
-rwxr-xr-xglobal/overlay/etc/puppet/cosmos_config_version11
-rw-r--r--global/overlay/etc/puppet/facter/cosmos.rb22
-rw-r--r--global/overlay/etc/puppet/manifests/cosmos-site.pp835
-rw-r--r--global/overlay/etc/puppet/modules/sunet/manifests/encrypted_swap.pp12
-rw-r--r--global/overlay/etc/puppet/modules/sunet/manifests/ethernet_bonding.pp19
-rw-r--r--global/overlay/etc/puppet/modules/sunet/manifests/server.pp87
-rw-r--r--global/overlay/etc/puppet/puppet.conf5
-rw-r--r--global/overlay/etc/scriptherder/check/cosmos.ini3
-rwxr-xr-xglobal/overlay/usr/local/bin/docker-cleanup46
-rwxr-xr-xglobal/overlay/usr/local/bin/scriptherder884
-rwxr-xr-xglobal/post-tasks.d/015cosmos-trust7
-rwxr-xr-xglobal/pre-tasks.d/020common-tools4
29 files changed, 5209 insertions, 77 deletions
diff --git a/global/overlay/etc/cosmos/keys/aslund-46DC706D.pub b/global/overlay/etc/cosmos/keys/aslund-46DC706D.pub
new file mode 100644
index 0000000..efd3510
--- /dev/null
+++ b/global/overlay/etc/cosmos/keys/aslund-46DC706D.pub
@@ -0,0 +1,42 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1
+
+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
+=pP5h
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/global/overlay/etc/cosmos/keys/dennis-3EE4E6C7.pub b/global/overlay/etc/cosmos/keys/dennis-3EE4E6C7.pub
new file mode 100644
index 0000000..4b84701
--- /dev/null
+++ b/global/overlay/etc/cosmos/keys/dennis-3EE4E6C7.pub
@@ -0,0 +1,228 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1
+
+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
+s6H7WwZcjZwv3METGcE=
+=aWa1
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/global/overlay/etc/cosmos/keys/ft-4030CCAD.pub b/global/overlay/etc/cosmos/keys/ft-4030CCAD.pub
new file mode 100644
index 0000000..af87d19
--- /dev/null
+++ b/global/overlay/etc/cosmos/keys/ft-4030CCAD.pub
@@ -0,0 +1,56 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1
+
+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
+=nzQe
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/global/overlay/etc/cosmos/keys/ft-505152DD.pub b/global/overlay/etc/cosmos/keys/ft-505152DD.pub
new file mode 100644
index 0000000..bf3c670
--- /dev/null
+++ b/global/overlay/etc/cosmos/keys/ft-505152DD.pub
@@ -0,0 +1,124 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1
+
+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
+=FWBw
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/global/overlay/etc/cosmos/keys/hugge-2581C893.pub b/global/overlay/etc/cosmos/keys/hugge-2581C893.pub
new file mode 100644
index 0000000..e3e40b2
--- /dev/null
+++ b/global/overlay/etc/cosmos/keys/hugge-2581C893.pub
@@ -0,0 +1,2198 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+KAAAAA1brBoRp5qcr6u9Wx1FdlbslzoFSKdfLn6K2Tw+0iqidEVCMea8FmZUMkku
+J5JarxTp1bFVo6lm+CbI5i7eaub8ENQZHoPrBYJHR12n96lRve+ih9raqee8Ku6f
+4GC3ayXmzydndrRX29++3LVUz4l/JyIecAAAD2LDi+S5BIkdix67XV7l2RKOjkmV
+V/hRTamG8LusWRvY6THo7JTvX+mulQ2Lb4xt5pP7pInSrg5xKxTQ3DOLpLklUxUd
+7HE1YKRF/a688m3xai+LVQk1bqKjt1DDQ2+lhpKSnYkcMMMaMZG1OiNa1OiInkdk
+AxXVbDaTUDT28YfXVMtLDcoUYk0XV0b2ua9jtvFEc1u6eKbp03KsdQMTvODZfcMW
+v9P2NfQyrG/b7MjV6te1fFrm7ORfJfDqhj4AAAAAOWKOSaVkUTHSPevK1rU3Vyr4
+Ibm0z4ZdVM0dDUTWZcetsmyrVXXeJ3L5ti27RV27t2oi+fiS/wBF+GnT/TqWC6TQ
+vyG/RbObXVzE5InecUX2WLum6Kqucng43cAADEdZr8zGNKMpvznox1Ja53xKvjKr
+FbGnzerU+ZUqDaPDTpbU6q6lUtpka9tlo9qm7Tt6csKL0Yi+Dnr7qeXV2y8qloNH
+Tw0lJDSUsLIaeFjY4o2N5Wsa1NkaiJ3IiInQ5iFX0k+Rc9zxLE437dlDNcZ279/O
+5I41+XJL+ZDwAAsf4D7b7Bw62upVvKtwraqpXp37SLF/hEb5AAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAIl8fGrn1TZ26YWOq2rrhGkt3ex3WKnXq2HfwV/e
+qfhRE7nkGwAD6a5WuRzVVFRd0VPA9y0Zjl1oVFtOVXy3q3u9luEsW39lyGd2DiN1
+osqtSnzquqWJ3trYoqnm+KyNV35KbCx/jQ1Jo+Vl3suO3SNPtOSGSCR3za9W/wB0
+2VjfG3jE/K3I8Ku1AvcrqGojqk+Oz+z6fn8zZuN8T2i975WfpZ9WzO/q6+llh2+L
++VWJ/aNmY5leMZIztMfyO0XZu2/+hVkc23xRqrse0AAAfLmte1WuRFaqbKi9dzya
+7GMbr91rsetNVv8A9tRxv8NvFvl0PCrdJtL63danTrE3uVU3cloga780bueRUaB6
+OTNRr9PbKiJ19yJzF/uqh1J+HTRWdER+AUCbd3JNMz/wvTc4v/o16I//AJBUv/65
+Uf8A8Q5YOHTRWBFRmAUC79/PNM//AMT12PUodENIqLbsdOscdtt/TUTJe799F/8A
+5mQ2vBcItT0da8Ox6hVO5aa2Qx7f2WoZAxrWNRrURrUTZETwPoAAAjXx1aTty7Bv
+03tFMjr5YIldOjG+9UUe+72+qsVVenpz+aFfYAAOekp31VRHTxOia+R3K1ZZWxtT
+4ucqNanqqohsyzcP2rd7pI6yzYtFcqSVdo6ikutHLC74PbKrV8PHoevBws65ySI1
++GMiRfvPutHt/KVVMhtnBxq5V7e0TY3b/wDf1z3ef/Zxu8v5mY2Hggvciot+zy30
+qJ3toqJ86r6bvczb47GzMU4ONLbXyyXqqvd/kT7TJqlIIl+CRIjk/tqbowvT3B8M
+iRmL4rabW9E5Vmhp29q5P2pF3e75qplAAAAIm/SIagRUGKW7Tqin/wBLucja2va1
+fsU8bl7Nqp+1InMn+69SDJ27Tb627XSltdtppKqtq5Ww08MabukkcuzWonmqqiFo
+PDlpbRaUadU1lakct3qdqi61LU/pJlT7KL38jE91vzXorlNmArJ4ysk/STiFyN8b
++eC2vZbYuv2exbyvT/mdp+Zp0AAtV4bbX9UaC4VR8vKq2iCocm3csre1X+b1NhgA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwjWzUK2aY6e1+VXJWSSRN7Oip
+ldstTUO35I09Oiqq+DUcvgVZ5Tfbnk2RXDIL1VOqbhXzunnld4ud4IngidyJ3IiI
+idx5QAAAAByRSPikbJG9zHtXdrmrsqL6GdYvrJqnjSsS0Z5fIo2fZimqVqIm/Bkn
+M3+RtTF+MjVK28kd4o7FfI0+06WmWGVfgsbkan9lTamK8bWL1KtZk+G3W2r3K+hn
+ZVN+Ko7s1RPhv8zbWKcRejeR8rKbNqKhmd3x3Jr6Tl38OaREYvycps22XG33SkbV
+2yvpa6nd9mWnmbIxfg5qqh2wAAAAAAAAD4kYyWN0cjGvY9NnNcm6KnkvoVh8U+mL
+9MdVKy30sCtslw3rLW7ryticvvRb+bHbt8+XlVe81MAAD3MSyzJsRuKXDGL9cLRU
+9OZ9LO5iPRPByJ0cno5FQkPp7xmZtaUipcxs1BkcDejqiFfZalfVVaixr8EY3fzJ
+Faf8T2kmWJHDJfXY/Wv23gu7Oxbv4/rUVY9vi5F9O83HQVlJX0kdXQ1UFVTSJvHN
+DIj2OTzRydFOwAAAAYDrbqnjmlWJSXq9zNkq5Ec2goGO2lq5UT7KeTU6czl6Inmq
+oi1iZ/ld5zfL7jlN+qEmr6+VZHq1NmsROjWNTrs1rURqJ5Inf3ngE1uArRtaWBmq
+mRUv66Zro7HDI3qxips+oX1cm7W+nMvi1SYQPPyS601ix65XusXamt9JLVTLvtsy
+Niud/JFKg7xX1N2u9ZdKx3PU1k76iZ3m97lc5fzVTpgA5aeGSonjgharpJXoxjU8
+VXohcNYrfHarJQWuHbs6Omjp2beTGo1P8DugAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAHDUzQ01NLU1ErIoYmK+R7l2a1qJuqqvgiFX/EVq5fNVMyqJqmsetg
+oqmZLRSIxGJHEqoiOd03V7kaiqq77b7Jshq0AAAAAAAA71ou11s1WlXaLnW26pTu
+lpZ3RP8A7TVRTaGK8SesuPcjYsxqLjC3viuUTKnm+L3or/ychtvFeNu/wckeUYVb
+a5O50tvqX06p68r+dFX5p8jbWK8Xukl35WXOW8WCRe9ayjWRm/o6FXrt6qiG2sV1
+HwHKuRuPZjZLjI/uhirGdr841XnT5oZWAAAAAAADVHE/pVFqtptNbaZkbb7QKtTa
+pnbJ+s26xKvg16dF8EVGr90rIuNHV2+vqLfXU8tNVU0ropoZWq18b2qqOaqL3Kio
+qbHVAAAB7uJ5dlOJVXtWM5Dc7RKqorlpKl0aP9HIi7OT0XdDdmG8X2qtmRkV5W05
+FAmyOWqpuyl2TyfFypv6q1xuXE+NbC6xrI8lxa9WmVdkV9K9lVGnqqqrHInwaptb
+G+IfRq/Nb7NndtpXu6KyvR9Jyr6rKjW/NFVDYNlyCw3uNJLNe7bcmbfapKpkqfm1
+VPTAMPy/U7T3E4nvyHMbNQOZ3wuqmvmX4Rt3evyQjtqvxm2ekhmoNOLRLcan7Lbl
+cGLHA39pkW/O/wDi5Nl8F8Ye5tlmQ5pkE9+ye7VFzuE3R0sq9Gp3o1rU2RjU3XZr
+URE37jwjdXClo1UaqZqlRcoZGYta3tfcJU3b27u9tO1fN33lT7Ld+5VbvZRSU8NJ
+SxUtNDHBBCxscUcbeVrGtRERqInciIm2xzA0nxs5L+jvD1e445OSouz4rbD69o7m
+kT5xskK0wADNdCrT9eay4da1ZzMmvNMsqf7NsjXP/utUtjAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAABHvjq1CTEdJHY/Qz8l0yVzqRuy+8ymREWZ3zRWs/4i
++RXWAAAAAAAAAAAZlimqOouK8jbBmt8oomfZgbVvfCn/AA3KrF/I29iXGNqlauSO
+909lyCJPtumpuwld8HRK1qf2FNvYlxrYZWcseTYtebQ93e+lkZVRp57qvI5E+DVN
+v4lrxpHk6Mbbc6tUcr+iRVr1pHqvkiSo3dfhubGp5oqiFk0ErJY3pu17HI5rk80V
+O85QAAAAARw4peG2m1GmkyvEnwUGU8v+kRyLyw16Imycyp9iRE2RHdy9EXbvSC2a
+4ZlWF3JbflVgr7TUIqo32iJUa/1Y/wCy9PVqqhj4AAAAB9IqtVFRdl9D2aDLMpt7
+UbQ5LeaVGru1Ia6ViIvps473/SPqF/8Al5lP/wC15/8A98866ZPkl1RUumQ3auRe
+/wBprJJN/wC05TxwDOdF9Nb/AKo5rT47ZI1bH0fW1jmqsdJDv1e7zXwRv3l2TzVL
+O9OMMseAYfQ4vjtN2NFSN2VztlfK9erpHr4ucvVV+CJsiIiZIAQs+kmybnr8Uw6K
+T+jjluVQzz5l7OJflyy/mQ6AAN7cCln+tOIq01Ks5mWykqaxybbp/RrE1fk6Vq/k
+WRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArC4sNQv8ApE1julfSz9pa
+bcv1fbtl3a6KNV5pE/fernIvfsrU8DUgAMu0jwe4ajag2vELbIkEldIqSVCsV7YI
+mtVz5FTdN9mouybpuuybpubFzvhY1cxqrelDZY8iok6tqbbM1yqnksbtn7+iIqeq
+mqMixTKMcerMgxy72lUXb/TaKSHr4dXIh4YAAAAAAAAAPbxrLMnxiftsdyK62l++
+6rRVb4t/jyqm6fE29iPFhrBYuRlZdaC/QN7mXKjartv34+Ryr6qqm4sR43LRLyxZ
+ZhNbSr96a21LZkX1SOTk2/tKbixDiP0cyXkZBmVLbp3d8NzY6lVvxe9EZ+TlNo26
+4UFzpGVltraatpn/AGZqeVsjHfBzVVFO0AAAAdS6W633ahkoLpQ0tdSSptJBUxNk
+jenq1yKi/M0bqHwnaV5P2lRaqOpxitfuqPtz94Vd6xP3aiejOQjpn/B/qXYVknxy
+e3ZRSt+ykMiU9Rt5rHIvL/Ze5fQ0Pk2NZDjFd7DkdjuNoqfCOspnRK5PNOZE3T1Q
+8cAAAAAAGwNFtKMq1VyRtssFMsdHG5vttxlavYUrV8XL4uVO5idV9ERVSyPR/TbG
+tL8Six/Hafv2fV1cm3bVUvcr3r/g1OiJ0Tx3zUAFYHFxk36U8QGT1TJOenoqhLdA
+m+6IkCIx23or0e75mpgACXH0a9n7bK8vv6t/1Whgo2uX/ayOeu3/ACU/kTgAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANO8XuoX/R/o1cZaSfsrtd0W3UHKvv
+Nc9F55E8uVnMqL4O5fMrJAAJvfR14B7JY7vqNXwbTVzloLcqp/UsVFleno56Nb/w
+3eZLo+Xsa9ise1HNVNlRU3RTC8k0l0yyLnW8YLYKiR/2pm0TI5V/4jER38zWOS8I
+OkN05lt0F6sbl7vY65Xt3+EyP6fNDWWS8EFS3mkxvPYpN/sw3ChVm3xkY5d/7BrL
+JeEzWW0cy0lptt7Y3rzUFezu/dl5HL8kNZZJprqDjnMt8wq/0Mbe+WWgk7P5PROV
+fkpiQAAAAAAAAB6Vivl6sNWlXY7xcLXUJ/W0dS+F/wDaYqKbcxDik1jx7kZJkEN7
+gZ3RXSmbLv8AF7eWRfm43JiHG7Su5IsvwiaL8dRa6lH7/CKTbb+2pubD+JXRzJOR
+keWw2qd3fDdI3U3L8Xu/V/3jatsuNvulIystldS11M/7M1NM2Rjvg5qqinbAAAB0
+7va7ZeKF9DdrdSXCkk+3BVQtljd8WuRUU0rnPCppFkvPNSWqqx2qd17S1zqxm/8A
+u3o5iJ6NRpovNeCrLKPnlxLKbZd403VIayN1LL8EVOdqr6qrTS2YaI6r4pzuvGDX
+dIWdXT0sXtUSJ5q+JXIifHY169jmPVj2q1zV2Vq9FQ+AAAAdq2UFddK+KgttHUVt
+XM7ligp4nSSPd5Na1FVV+BKHRHhByC8zQXfUiV1ktvR6W2F6Oq5U8nqm7YkX5u70
+2avUmriGM2HEbBTWHG7ZT223UybRwQt2Tde9XKvVzl71cqqq+KnsAA8PPL9Bi2FX
+vJKjl7O2UE1UqKv2uRiuRPiqoifMqJrKiasq5qupkdJNM90kj3d7nOXdVX5nCAAT
+8+jpsy0ekN3vEjNn3G7vaxfxRxRsai/2nSEnAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAACuPjh1C/TTWCaz0c/aWrG0dQwoi7tdPunbv/ALSIz/hopoMAHqYt
+Za/I8kttgtcSyVtxqY6aBvgr3uRqb+Sdeq+CFtGB43QYfhloxe2N2pLZSsp2Ltsr
+1anV6+rl3cvqqnuAAAGOZJg2GZLzLkGJ2O6Pd3vqqGOR/wAUcrd0X1RTWmScK+i9
+5RzoscqLTK7vkoK2Rn5NermJ/ZNZZJwQ2SXmfjedXGk26tjuFGyo39FcxWbfHlU1
+pknBtqnbuaS1VlgvTE+y2KpdFIvxSRqNT+0ayyXRDVvHletz0/vnKz7T6WD2pjfV
+XQq5NvXcwGspamjqHU9XTy08zV96OVisc34ovccAAAAAAAAB6Vivl6sNYlZYrvX2
+upTumo6l8L0/iaqKbew3in1ix3kjmv1PfadndFdKZsm/xkbyyL83G6MN43LZJyRZ
+hhVXTKie9UWypbKir/u5OVUT+NTdOHcRGj+UIxlJmdFQzu23huaOpHIq+HNIiMVf
+3XKbQo6mnq6dlTSTxVEL03ZJE9HNcnmip0U5wAAAY7k+D4blCL+keK2W7OVNuero
+o5Hp8HKm6fJTVmT8KGjV65nU1lr7JK7vkt1c9Ovo2TnYnyRDW9+4ILPJutiz6vpf
+JlbQMn39OZjmbfHYwa68FWocKuW25NjNWxO7tnzQuX5JG5P5mM13CRrPTK5IbXaq
+zbu7G4xpv8Ofl/mdCThW1xbK1iYhC9Hd723Sl2b8d5N/yRTtUnCbrVPLyy2K30yf
+jlucKp/dc5f5GWWLgq1BqJWreclxy3wr39g6WokT+FWMb/eNp4bwXYJbpGzZNkF2
+v7298UTW0kLviiK5/wCT0N9YLp/heDUvs2J41b7Ujm8r5IYt5ZET8cjt3u/iVTKA
+AAR8498n+otCJrVFJy1F9rYqPZF69m1e1evw/Vtav75XUAAC0ThNsv1Fw8YfSOby
+vnovbXL4r273TJ/den5G1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa84
+h8+j020lvOSNe1K7s/Zrc1dveqZN0Z08eXq9U8mKVXzSSTSvmle58j3K57nLurlX
+qqqvmcQAJU/R54B9b5vcc+roeakskfs9Gqp0dUyN95U9WRqu/wDvGr4E7wAAAAAD
+z7zZbPeqf2e82qhuMP8A2dXTslb+TkU1zknDtozfuZ1TgtvpJHdz6Bz6Xl9UbE5r
+fzTY1nknBXgNYjn2LJL9apHdzZljqY2/BOVrvzcprLJOCfNqXndj+V2O5sb1RtUy
+Sle74IiPbv8AFyGs8k4btZ7FzOmwmqrYm9z6CaOp5vg1jlf+bUNbX3Hr9YZuwvlk
+udrl325KylfC78noh5YAAAAAAAPbxjK8mxep9pxzILpaJVXdXUdU+Lm+KNVN/gpu
+fDOLjVqxckV0qbbkVO3ZNq6mRknL5I+Ll6+rkcbtwvjUw2v7OHKsautllXZHS0r2
+1UKeq/YeieiNcpu3C9YdMsw5G2DNLRUTP+zTyzdhOvwjk5Xr8kM8AAAAAAAAAAIG
+/SL5R9YakWTFYpFdFaKBZ5U37pp3IqovwZHGv8SkWQADsW+knrq+noaZnNNUSsij
+b5ucqIifmpcFYLdBZrFQWim6QUNNHTRp+yxqNT+SHeAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAABAX6QPUL6/1DpMHoJ+agx9nPUo1ej6uREVUXz5GcqeiuehG
+EAHJFG+WVsUbHPe9URrWpurl7tk9S1Ph6wRmnOklkxt0bW1zYfaLg5OvNUye9Juq
+d/L0Yi+TENggAAAAAAAA46iGKohfDPEyWN6bOY9qOavxRTBMj0Z0qyHnddcBsL3v
++1JDSNgkX4vj5XfzNaZHweaS3LmdbHX2yO+62mrUkYi+qSte5U/iQ1pkfBBXN5n4
+7ntPN+GKvoXR7fF7HO3/ALKGtck4TdZrTzOpbRbb0xve6gr2dfVGy8jl+Sbmtck0
+z1DxxHOveE3+hjZ3yyUEnZf20TlX5KYiqKnop+AAAAAAAzfCdWNR8M7NuN5jdqKG
+P7NO6btYE/4UnMz+RvPCONPMaDkhy3G7Ze4k6LNSvdSTL5qv2mKvojWm88J4sdI8
+h7OKvuFdjtS7pyXGmXkVfSSPmaieruU3Rj1+seQ0SV1hvFvutKv9dR1LJmfm1VQ9
+MAAAAAAAAqc1zyf9M9XsnyRsnaQ1dwkSndv3ws9yL+4xphQABsvhfsX6Ra/YdblZ
+zsZcWVb0VOnLAizLv6Kke3rvsWmgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAxXVjMKLAdO71ltbyuZb6Zz441XbtZl92Nn8T1anz3Knbzcay8Xesu1xnfUVtb
+O+oqJXd75HuVznL8VVTpgA3pwT4D+mutFHX1cHaWvH2pcKhVT3XSNXaFnxV+ztl7
+0jcWSAAAAAAAAAAAAGP5HhWH5HzfpBi1kuqu73VdDHK783IqoprXJOF3Re88724t
+Ja5nf1lBWSx7fBiuVif2TWmScEmNT8y47m92oPwtrqWOpT4bs7P/AD+ZrbI+DDUq
+h5pLPeMeu8adze2kgkX5Oby/3jW+R8P2sdi5vbMBu1Q1v3qFG1aKnn+pc5TXd3tN
+1tFT7PdrZW2+b/s6qB0TvyciKdEAAAAAHfst3utjrm19mudbbatn2Z6Sd0UifBzV
+RTdeCcV+rWNpHDX3GjySlb05LlBvJt6SM5XKvq5XG/MF4zsGuaRwZZY7nj86/alh
+/wBLp09VVqI9PgjFN/4TnOH5pSe04rkdtu7ETmc2nnRZGIv42faZ8HIhkYAAAAAB
+gHENlH6HaK5TfmSdnPFQPhp3IvVJpdoo1+TntX5FUwAAJPfR02H2/Vu732RnNHa7
+U5rF/DLM9rU/uNk/Mn0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACE/wBI
+nqF7RdLVptb5946REuFzRq98jkVIY1+DVc9U7l52L4EPwACyTgmwH9CtF6Svq4eS
+6ZC5LjUbp7zYnJtCz4IzZ2y9yyON6AAAAAAAAAAAAAAA4K2kpa2ndT1lNDUwu+1H
+MxHtX4ovQwLI9EdJcg5luWn9i5n/AGn01P7M9fVXRcq7/M1vkfB1pPceZ1slv1lf
+91tPWJKxPikrXOVP4kNbZFwQV7OZ+PZ7TTb/AGYq+gdHt8Xsc7f+yhrfIeErWW18
+y0lrtd5a3xobgxN080SXkX+RrrINJdTrAjnXbA8hgjZ9qVtBJJGn8bEVv8zDZopI
+ZXRTRvje1dnNc3ZU+KHGAAAAdihq6qhq46uiqZqWpidzRzQvVj2L4Kjk6obq094p
+dWcU7OCru8WSUTOnY3ZiyP28dpU2kVfVznJ6EmdMOLrTvJnRUeTRVGKV71ROaoXt
+aVVXylaiK34va1E8yQtvrKS4UcVbQVUFXSzN5opoJEex7fNrk6Knqh2AAAAARP8A
+pHso9jwfHcRhk2kuVa+smRF/q4W8qIqeSukRfiwguAACef0clg9h0xv2RSM5ZLpc
+0hYu32o4GJsv9qSRPkSlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPIzC/
+2/FsWueR3WTs6K20r6mZUXqrWtVdk371XuRPFVQqZznJLjl+X3XJ7q7mrLlVPqJN
+l3RvMvRifstTZqeiIeIADYPD3gkmo2rVkxp0bnUTpvaLg5N9m00fvSdU7uboxF83
+oWpxRsiibFGxrGMREa1qbI1O7ZPQ5AAAAAAAAAAAAAAAAAAeZe7BYr5F2V6sltuc
+e23LV0rJk/JyKa9yHh40ZviuWqwK3U717nULn0uy/CJzU/lsa7yDgw01reZ9pvGR
+WqRfst7aOaNvyczm/vGv75wP3WPmdY8/oqn8LKy3uh29OZj37/Hb5GD3fg+1fonO
+9lZYbmid3s1fy7/81rDGa3hm1vo1d2mCzSIm/WGuppN0T92RV+XeeHctD9XqBF7f
+TrIno3v9no3T/wDl8xid1xbJrRv9a47d6BG9/tNFJHt/aah4wAPpqK5UREVVXwJi
+8CWHau2nIFutV7dZsJex6z0dexzUrJFb7roo3dWqiq1VkRERUTl3d4TRAAAABW7x
+y5T+kev1ypIpe0prJTxW6Lbu5kRXyfNHyOav7qGiQAAWn8MWPLi+g2I2tzOSV1vb
+VzIqbKj51WZyL6p2m3yNkgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAESPp
+EdQkocetmnFBPtPclSuuKNXqkDHbRMX956K7/hp5kHgACd/0eeA/VGEXHPq6Dlq7
+1J7PROcnVtLG7Zyp+/Jv/wAtq+JKkAAAAAAAAAAAAAAAAAAAAAA8m643jt25vrSw
+2qv5vte00kcm/f38yL5qYvcNGNJq6Tnn06xlHecVuji3+PIibnj1PDrorUbc+AW5
+Ou/6uWZn/henT0OODhv0ThcjmYDRqqdyPqZ3p+SyKZdjGm+AYzNHPYMMsNuqI/sz
+w0EaSp69ptzfzMsAAAAB0MhulLY7DcL3XO5KS30slVO7yZG1XOX8kUqGyK6VV8v9
+xvdc7mq7hVSVU7vN8j1c5fzVTzwAD3sAsUmUZxY8bi35rncIKTdPuo96NVfkiqvy
+LdoIo4IY4IWIyONqNY1vc1qdERDkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAB1rnW0tsttTca6dsFJSQumnlevusY1Fc5yr5IiKpVBrHmtVqFqVestqeZra2oV
+aeJ3fFA33YmeW6NRN9u9d18TDwAe5geN1+X5lacXtjd6u51TKdi7boxHL7z19Gt3
+cvoiltGK2WgxrG7bj9ri7Kht1NHTQN8eRiI1N/NenVfFT1AAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAaI45sr/RvQS4UUMvJVXyojt0ey9eRVV8i/BWMc1f3yt4AAG++BHH
+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
+JJNvJZXpytX0Rrk9SSOnmh2l+C9nLY8Uo31kfVK2sT2mff8AEjn78i/uI1PQ2QAA
+DDtXNPMe1Mw2pxrIYPcfu+mqWIna0sqJ7sjFXxTfqncqKqL0UrN1h02yTS/Lpcfy
+Gn6Lu+kq2IvY1UXcj2L/AIt72r0X1woEruCDXJ1huMGmuVVm1orJOW01MrulLM5f
+6FVXuY9V6eTl8ndJ1AAAAAAAAAr24xdCavBchqMyxqifLitwlWSZsTd0t0zndWOR
+O6Nyr7q9yfZXb3eaOAAAAAAAAAAAAAPQsN4umP3enu9kuFTb7hTP54ainkVj2L6K
+n/yqLsTT4feLeguy02PaoLDbq5do47yxqNp5V7v1zU/o1/aT3O/fkRCWMMkc8LJo
+ZGyRPajmPYu6OReqKi+KepyAAAAAh9xh8RvsXtmnmn9f/pXvQ3a6Qu/ofB0ETk+9
+3o5yfZ7k678sKAAADJNNsPu+e5rbcVscXPWV0qM51T3YmJ1fI79lrUVV+GydVRC1
+HTbD7RgWFW3FbHFyUdDEjedU96Z69XyO/ac5VVfjsnREQyMAAAAAAAAAAAAAAAAA
+EM/pJ8bXfEsvij/7W21D9vhJEn/nEMwATp+jhyT2vBMjxWSTeS3V7KuNF8I5mcuy
+eiOiVf4vUleAAAAAAAAAAAADw82yzH8LxyoyDJrnDbrfTp70ki9XL4Nane5y+DU3
+VSvniQ4icg1RqJbNae2s2Jtf7tIjtpavZejp1Tp6oxN2p5uVEU0Sbb0k4fdSdR0i
+q7fafqu0SbL9ZXHeKJzfNjdueTx6tRW79FVCWul3CTpziyRVeRpNldxZsq+1J2dK
+1fSFq9U9Hq5F8kN/26io7dRRUVvpIKSlhbyxQwRoxjG+SNRERE+B2QAAADCdZdNs
+f1Rw2fHb7Dyv2V9HWNbvJSS7bI9v+be5ydPJUrG1Owe/aeZlW4tkNP2VXTLuyRu/
+ZzxLvyysXxa5E+S7ouyoqGLH6iqnopYbwXa0f9IOK/onkNVzZNZ4U2ke73q2mTZE
+k38Xt6Nd57td13XaRQAAAAAAAB162lpq6kmoq2niqaWdixzQysR7JGr0Vrmr0VFT
+psvmRJ1n4OKWuqZ7tplcoqB71VzrTXPcsKL5RSoiuan7LkVN/vInQjLmGjWqWJyv
+besIvLI2L1np6daiH/mR8zf5mDVVLU0r0bU080Dl8JGK1f5nJDbrhMjFhoamRH7c
+vJC5eby28z06XDsuq/8AVcWvk+7uVOyt8rt18uje89On0t1MnbzQadZdK3fbmZZa
+hU38t+Q9KDRHV2ZVRmnOSIqd/PQvZ+XMibnbg0A1knRXM09vKInfzsaxf7zkOVvD
+zrQrkT/o/unzdH/+8HcPOs6OVv8A0f3RVTydGqfnzHFPoDrJCiK/T28qi93Ixr1/
+uuXY82s0c1XpFXtdOMqXZdlWK1zSJ+bWqeJW4TmdEirWYjf6bb/tbdMz/Fp4lTBP
+TSrDUwyQyJ3skarXJ8lOEAAAAAAG9+HLiMyLTCohs137e9Yo52zqRX7y0ib9XQOV
+e7x5F91fDlVVUsGwvKbBmeO02QY1cobjb6lPcljXq1fFrkXq1yeLV2VD2wAAAat4
+mqTU2u0xrKXTB8LbhJulXs9WVToNl5kp17kevmqou2/KvNsVg1tLU0VZNSVtPNT1
+UL1jlhmYrHsenRWuavVFTuVFOuAADlgcxszHSM52I5Fc3m25k36pv4Fk/C9ZtE57
+K7L9KrRBRVVTTtp65klTLLU03XmWJ6SPcrOqd7dkdyou6oibbsAAAAAAAAAAAAAA
+AAAANO8ZGMfpPw+5CyOLtKm2Mbc4en2VhXd6/wDKWRPmVkgAkDwF5Olh14p7ZNJy
+098o5qJUVdm9oiJKxfjvGrU/fLFwAAAAAAAAAAADXWuOruL6TY4lxvcq1NwnRUob
+bC5EmqXJ49fssRe9693huuyLXPrHqnlmqeRLdskrP1MaqlHQwqqU9K1fBjfFV6bu
+Xqu3oiJ86SaWZlqfeFt+LW1ZIo3IlTXTKrKamRfxv2Xr+y1FcvXZOik59FeGDAsB
+bBcbxA3J78zZ3tNZGiwQu/2UPVqddvedzOTbdFb3G90TZNk7j9AAAAABp3io0ept
+V8Gd7FHHFktsa6W2TrsnaeLoHL+F+3RfuuRF7t0WtCrp5qOqlpaqGSCeF7o5Y5Gq
+1zHIqorVRe5UVNtjgPewLKbvhWX23KLFULDX0EySsXrs9O5zHbd7XNVWqnkqlqum
+WYWvPsFtWWWd3+i3CFHrGq7uhenR8bvVrkVF89t06GSgAAAAAAAAAAAAAA61dQ0V
+fD2NdR09VEv3Jo0e38lQxG8aSaX3fda/T/GZHu73ttsTHr/E1qO/mYRkPCxotdo3
+dljVRapXf1tDXStVPg17nMT+yaxybghssnM/Gs6uFJt1bHcKRk+/or2Kzb48q/A1
+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
+TtsNA6t+v7IzZqUFwe5yxtTwil+0zyRPean4SZWkHEdpxqJ2NEy4/UV6fsn1fcXI
+xXuXwjk+zJ17k3R37JuUAAAAAAAAAAAAAAAAiv8ASNYz7dp1Ycpij5pbVcHU8qon
+dFO3vX0542J/EQPABKr6OjMEt2e3rDamXlivFIlTTNVe+aHfdqJ5rG5y/wDDJ3AA
+AAAAAAAAAFc/H1Rz03ELVzzIqMrLbTTQqvi1Gqz/AMTHEfwbCwDWjU7BaZlHjeX1
+1PRM6NpJkbPC1PJrJEcjU/d2NjQcYWr0cLmO/R6Zyt2R76ByKi+acr0Tf4p8joXL
+i01pq27QXu20C+dPbYlX/vEcYvcuIHWWvc50+oN3Zvv/AKurIE6+kbW7HBadd9YL
+ZVNqafUK+yPRd+Wpn9oZ82yI5P5Ez+EbXibVagrLHkUVPT5Nboklc6FOWOrg3Rva
+I3f3XNVWo5O73mqnfsm/wCs7jPyb9JeIS/8AZy9pT2rktkPX7PZN/WJ/zXSGmADa
+nDVq1XaT59FcFfJLYq5Ww3albv78e/SRqd3OzdVTzRXN6c25Z1a6+jultprnbqmO
+po6qJs0E0bt2yMcm7XIvkqLudoxfVypho9KstqqhU7KKyVj37+KJC/dCo8HatdFU
+3K5Utuo41lqquZkELE73Pe5GtT5qqIXDW6n9koKel5ubsYmx7+eyIn+R2AAAAAAA
+AAAAAAAAAAAADEtTNO8Q1Gsi2nLLPFWxoi9jMnuzU7l+9HInVq93TuXbqip0IC8Q
+vDplOl0012t6SXzFubdtdHH+spkXubO1Ps+XOnur0+yqo00cAAAbk4W9Zq7SfMms
+rJJZ8YuL2tuVMnvdn4JOxPxt8U+83p3o1UsrttbSXK309xoKmKppKmJssE0buZkj
+HIitc1U70VFRTsgAAAA6t0t9BdaGWgudDTV1JKnLJBUxNkjenkrXIqKnxNE6hcJe
+lmSukqbRBWYxWO3XmoJOaFXesT90RPRitNCZpwY6g2znlxq82jIIm/Zjc5aWd38L
+t2fm81JkmierGPK76zwC+oxn2pKenWpY34vi5monzMKuNruVtfyXG3VdG7fbaeF0
+a/k5E9TpAA3Ro/xI6jaeLDROr1yCyx7J7BcXudyN8o5fts6dydWp+Em1oprxgmqc
+LKW2Vi2698u77VWKjZV2Tqsa90je9fd6onVUQ2sAAAAAAAAAAAAAAAa/4i8cTK9D
+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
+UzAqHKrO5GpMnJVU6u3dSztROeN3w6Ki+KK1fEzIAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAFVHEXYUxnXHMLOyPs4o7nJNCzbbljl/WsRPRGvRDXwABP
+76OaqWXRa70zl3WC/wAvL6NdBAv+PMSaAAABi2qGD2LUXDK3F8hp+0pahN45E27S
+nlTfllYvg5u/zRVRd0VUKvdWMDvem+b12LX2PaandzQztRUZUxLvySs9FRPku6L1
+RTEgZzo3qdk2luVMvmPVO8b+VtZRSKvY1caLvyvRPFOuzk6tVfVUWzDSXUGwal4X
+SZPj828UvuVEDlTtKaVETmjf5Km/f4oqKnRTLwAAAAAAAAAAAAAAAAAAY7qJiVnz
+rDbli19h7Sir4VjcqJ70bu9kjf2muRHJ6p16dCrTVTBr1pznFfil9i2qKV28UzU9
+yohX7ErN+9rk/JUVF6opigABtrhl1gr9Jc2bUyulqMer1bHdKRvXdu/SVifjZuqp
+5pu3puipZlZrlQXm00t1tdXFV0NXE2anniduyRjk3RyL5Kh3AAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAvRDUGo/EfpRg9RJR1d+dd6+Ndn0toYlQ5q+Sv3SNF9Fcip5GMYn
+xe6TXu5toa1L3Yed2zaivpWLD39N3RPerfiqbJ5kgKSogq6WKqpZ4p6eZiSRSxPR
+zHtXqjmqnRUVOqKnmcwAAAAAAAAAAAAK8/pCLQlv12iuDGbNudognc5E6K9jnxL8
+0bGz80I5gAE7vo3HL/0bZNH4JeEd+cLP/gSqAAAANO8VGkFPqpgMiUUMbcltjXTW
+uboiydN3QOX8L9um/c5Gr3b71n1UE1LUy01RC+GeJ6xyRvbyuY5FVFRUXuVF6bHC
+DbXDBqzV6Vagw1U80jseuDmwXanTr7m+zZWp+Jiqq+qcyeJZxSTw1VLFVU0rJoJm
+JJFIx3M17XJujkVO9FRd9zmAAAAAAAAAAAAAAAAAABpnip0Zp9V8L7S3sjiye2Nd
+Jbpl93tU73QPX8Ltuir9l2y9yu3rWuNHV2+vqKCup5aaqp5HRTQytVr43tXZzXIv
+cqKncdYAAkxwba9/oNcYsIy2rX9GayX/AEWpkd0t8rl8V8InKvX8KrzeLifzHNe1
+HNVHNVN0VF3RT6AAAAAAAAAAAAAAAAAAAAAAAAAAAMe1AzHH8ExaqyTJa9lHQUyd
+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
+AIh8X/DjfcoyeXPNP6OOsq6trUudtR7Y3vkamyTRq5URd0REc3ou6bpurl203gfC
+rqzkdyjiulojxug5kSWqr5WK5rfHljYqucvx5UXzQmfofofhWlFJz2imdXXiRnLU
+XWqRFmci97WeEbN/ut6r03V2yG0QAAAAAAAAAAAAAQB+kUvTa7WK12eN+7LZaGc6
+fhkkke5U/sdmRlABtfhf1QoNKNSfr+52pa+hqqV1FUOjX9dBG57XK+NO5V3Ym6Lt
+um/VCyDBszxfOLMy7Ype6S6UionMsL/fjVU+y9i+8x3o5EUyEAAAAGN6j5nYsAw+
+uyfIapIKOlZu1iL780m3uxsTxc5eifmuyIqlWGpeXXLO85u2W3ZUSquM6ydmjt0i
+YnRkbfNGtRrU+BjQN8cCuOrfOIO21jo+eGz0s9fJv3bo3s2fNHytX5FkAAAAAAAA
+AAAAAAAAAAAAAANT6/6G4tq1aueqY225BBGraS6xR7vTyZIn9YzfwVUVOuypuu9d
+2qeneU6a5K+xZTb1p5eqwTs3dBUs32543/eTu6dFTfZURTEAAD7a5zHI5qqjkXdF
+TwJR8PnFjd8abTY9qN7RebQ3aOK5N96rpk/b3/pWp5r76deruiE3MWyGx5TZKe94
+7dKa526oTeOenfzNXzRfwuTuVq7Ki9FRD1gAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAACqLX/KW5prLlGRQy9rTVFe5lM9O50MaJHGqfFjGr8zBAAD1sYyK/Yxd
+WXXHbxW2quYmyT0syxuVPJVTvRfJeikidO+MrObMxlLl9poclgb07di+y1PxVWtV
+i7fuIq+Zv3CuLPSO/sYy43Cvx2pd0WO4UrlYq+kkfM3b1dym38Zy/FcniSXHMktF
+2btv/odZHKqfFGqqovop7oABw1VRBS076mqmighjTeSSVyNa1PNVXoiGj9VuKPTT
+C4pqa1VyZVdmoqNprdIiwovhzz9WIn7vMqeRBvWXVjLtVb6lxySralNCqpR0EG7a
+emRe/laq9XL4uXdV7u5ERMBAJ1/Rz4e634Pe80qYtpbvVJS0rlT+ph35nJ6Oe5yL
+/uyVoAAAAAAAAAAAAAAAAAAAAABjWomEYzqBjk1gyq2RV1G/qxV6SQv26PjenVrk
+80+C7oqoV/8AEPw55RpfLNeLd2t8xbm3bWsj/WUqL3Nnand5c6e6vT7KqiGjAAAZ
+tpRqdmGmV7+s8VujoWvVPaKOXd9PUonhIzxXycmzk3XZUJ7aD8RmF6msgtlTI2w5
+I7Zq2+pkTlnd5wydEf8Aurs7v6Kibm7AAAAAAAAAAAAAAAAAAAAAAAAYPnOrGnOE
+1vsOUZfbLfWIiOdTK9ZJmouyormMRzmou/TdE3OTENVNOctnbTY7mlmrqly7Np21
+KMmcvpG7Zy/JDNAAAAAAAAAAAAADT/FtqNFp3pBcJYKhI71dmOoLa1F95HPTZ8ie
+XIxVXfu5laniVjgAAAH2xzmORzHK1yLuiouyoZbYdUNRrE1GWjOcipIk7omXCVY/
+7Cu5f5GZ2zib1uoERrM2knZ5VFDTyKvzdHzfzPbg4utZY38z7haJk/C+3MRP7uyn
+1Pxd6ySuRWV9nh270Zbmrv8A2lU8C8cTOtlzY6OTNZaaNfu0tHBCqfBzWc38zXGS
+ZTkuTT9vkWQXW7yb7o6tq3zbfDmVdk+B4oAPZw7HrpleU23G7NAs9wuNQ2CFngiu
+73Kvg1E3cq+CIqlsOn+MUGG4TaMWtjdqW2UrIGu22V6onvPX1c5VcvqqnvAAAAAA
+AAAAAAAAAAAAAAAAAjXx16rpiGDJhFoqEbesgic2oVq+9T0a7tevor13Ynoj170Q
+r7AAAPtrnMcjmqqORd0VPAkroNxYZLiPs9kzpKjI7I3ZrarmRa2nb+85U7VE8nLv
++1siITdwPNsWzqxsvWKXmmudIuyOWJ3vxO7+WRi+8x3o5EMjAAAAAAAAAAAAAAAA
+AAAAAAMO1pyqTCdKckymDl9pt9BI+n5k3TtnbNj3TxTnc3cqiuVbWXK4VFwuFTLV
+VlTI6WeaVyufI9y7uc5V71VVVdzrIqou6boqG59I+JLUnT+SKlkuTshs7VRHUNzk
+dIrWp4Ry787PROrU/CTe0Q1zwnVamSG01TqC9MZzT2qrciTNTxcxe6Rvf1b1RNt0
+bubSAAAAAAAAAAAAKweKrUifUjVq41kNQr7NbXuobWxF93s2Ls6RPV7kV2/ftyp4
+GpQAAAAAAAADkijfLIyKJjnyPcjWtam6uVe5ERPEsC4NNCJNP7WuY5XStbk9fFyw
+QPTdaCBeqtXykd97yTZvT3t5JAAAAAAAAAAAAAAAAAAAAAAA8TOcntWG4jc8nvc/
+Y0FugWaVfF3g1jfNzlVGoniqoVU6n5ldNQM6umWXh3+kV03M2NFVWwxp0ZG30a1E
+T17+9TGAAAAD3sKy3JMLvcd6xe8VVrro+naQP2R6d/K9q+69q7fZciopM3Q7i+sd
+57Gz6kwRWWvXZrbnA1VpJV83t6rEq+fVveqq1CUtBWUlfRRVtBVQ1VLM1HxTQyI9
+j2r3K1yKqKnqdgAAAAAAAAAAAAAAAAAAAAA1NxgU0tXw3ZjFEnvNpopF/dZPG938
+mqVgAHctFyr7PdKa6Wusmo66lkSWCeF6tfG9F3RyKncqFjvCVrQ7VfEKimvCRRZL
+aORlajE5W1DHb8kzU8N1RUcidEVN+iORDd4AAAAAAAAAABqviR1Wx7TXAq9K2v5b
+3cKOaK10cSosz5HMVrZFT7rGuVFVy+Wybr0KuwAZPp1gmVahXuWzYjaX3Kuip3VD
+40kZGjWN2RVVz1RqdVRE3XqqnPlummf4nzuyLDr1b4md88lI9YflIiKxfkpiIAAA
+AABlenWn+X6g3dLXidjqbjKip2srW8sMCL4ySL7rU7+9d18NydvDlw1WDTWSnyG/
+yxXzKWt3ZLy/6PRO8eyaqbq79tdl8kb13kAAAAAAAAAAAAAAcNXUQUdJLVVU0cFP
+Cx0kskjuVjGtRVVzlXoiIiKqqpFnPeNLGLTeJqHFMVq8ggicrFrJqtKWOTZftRpy
+Pc5q+bkavocmKcauF11SyHI8Wu9la/ZFmglZVsYvjzdGO2+DVX0JAYBqBhue0K1u
+JZFRXWNqIsjInK2WPfu543Ij2b/tIhlAAAAAAAAIG8eerX6R5O3Tqx1XNarNLzXF
+7HdJ6tE25PVI0VU/eV34UUiyADJ9OcEynUG+vsuJWt9wrY6d9Q9qPaxrWNTvVzlR
+E3VUam69VVEPHvdquVkulRarxQ1NBXUz+SenqIlZJGqeCtVN0OgAADYWkusOeaY1
+qPxm8PSiV3NNbqneSll69d2Kvuqv4mq13qTV0a4qMCzZsNvyGRuK3p+zezq5UWll
+d+xN0RN/J/KvXZFcb+Y9r2I9jkc1ybo5OqKfYAAAAAAAAAAAAAAAAAAAB4WoFibk
++C37HHKifWdunpEVfurJG5qL8lVFKj7rQVlqudTbLjTSUtZSyuhnhkbs6N7V2c1U
+80VNjqAErPo4bLdZdRcgyFjHttdPalo5ZO5r5pJY3sanmqNjeq7d3T8XWdgAAAAA
+AAAAANDcS3ETZNMKaWxWRYLtlr29Kfm3io903R8yp4+KMTqveuyKirXxluR3vLMg
+qr/kVynuNyqnc0s0rt1XyRE7mtROiNTZEToiHjgH01FcqIiKqr4FlPCDpOmmem0d
+Rc6bkyO9I2puHMnvQt2/VwenKiqq/tOd3oiG7TDMt0q04yvndf8ACrJWSv8AtT+y
+tjmX/iM2f/M1PknB3pPcuZ1rkvtkf91tPWJKxPikrXOVP4k+JrTIeCC4sc5+P57S
+zIvVsddQOj29Fexzt/jyoYBfeEHWG383sdPY7vsm6eyXBGqvp+uazqYTdNA9Y7a5
+zajT29Scq9fZ421Cf92rtzFrngWc2zf6ywzI6Lbv9otk0fl+JqeaHhzUdXAznnpZ
+4mb7cz41RN/mdcHqW/Hr/cXIlvsdzq1XuSCle/f8kUzLHtDtXb7I1lBp7fm83c6r
+plpWL6803K3+Zs/FeDXU25OjffLjY7HCq++107qiZvwaxORf7aG9sA4QdM7B2dRk
+MtwyiqbsqpUP7Cn39I413+TnuQ39Y7Ra7HbYrZZbbSW6hhTaOnpYWxxt+DWoiHfA
+AAAAAAAAAAAABHjj3zJ2N6L/AFHSzrHWZFUpS7IuzvZ2e/KqL5Lsxip4o9Su4Hds
+90uVmuMVxtFwqrfWwrvFUU0zo5GL5o5qoqEqtEOMK5W91PZ9T6Z9ypOjG3elYiTx
+p3byxpskiJ4q3Z23g5SZmL5DZMoslPeseulNc7dUJvHPTv5mr6L5OTuVq7KncqIe
+qAAAAAAae4rdWI9LdOJZaKZqZFdUdTWtnixdvfmVPJiLunf7ytTuVSs2eSSeZ800
+jpJXuVz3uXdXKvVVVV7138TiAO7ZrbX3m7UlptdLLV11ZM2GngjTd0j3Ls1qJ5qp
+Zvw16SUGk2Ax2/aKe+1yNmu1W378m3SNq/gYiqiea8zunNsetq7pJhOqFs9mye1t
+WrYzlp7hBsypg/dft1TqvuuRW+m/Uglrpw4Ztpos1zpo3ZBjjFVfrCliXngb/to+
+qs/eTdvqirsaSAAANpaRa7aiaaPip7Nd1rbSxfetdfvLT7eTOvNH/Aqde9FJh6Tc
+V2nWYJDRZBI7E7q/orK16OpXr+zN0RP40b8zf0E0VRBHPBKyWKRqOY9jkc1yL4oq
+d6HKAAAAAAAAAAAAAAAAAAADRXERw343qnO++2+oSxZNyI11W2Pmiqtk2RJmpsu6
+IiIj06onRUciIiRJyzhb1ksNU6OHHYr1AndUW2qY9rv4Xq1/5tPAotAdZKydsMWn
+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
+Ei8qSVD9le7v5WNT3nu23Xlair0NGZBxk6V2+Z0Vto8hvCpvtLDSsjjd85Htcn9k
+xmfjex1OfsMEur9vs89bG3f47NXb+Z8Q8cFiViLLp/cWP8m3Bjk/NWId+k42sJcq
+e14fkUScu69k+GTZfLq5vTv6nu0XGTpLUf0tHk9J/vqGNf8AwSuMltXFFojXqjVy
+91JIq9G1NvqGf3kYrf5mWWrWTSi58q0momM7u6o2W4RxOX+F6ou/oZfa7tarrF2t
+ruVHXR7fapp2yJ+bVU7wAAAAAABgWqWrmA6bUr35RfYY6vl5o7fAva1Unim0adUR
+fxO5W+pDXWXi0zXLe3tmHsXFbQ/dvaxP5q2VvrJ3R+ezNlTu5lI5zSSTTPllkc+R
+7lc5zl3Vyr1VVVe9TiAANkaI6OZfqvePZrHS+z22F6JWXSdq9hAnTon437dzG9eq
+KuydSw3RTSHENKbJ7HYKTtq+VqJWXKdqLPUL37b/AHWeTE6J47r1XYYAAAAAAAAA
+AAAAAAAAAAAAAAAAAOpd6CnutprLZWM56asgfBM3zY9qtcn5KpUFkdrqbHkNxstY
+m1Tb6uWlmTbbZ8b1a7+aHnntYRfajF8xs+SUqK6a2VsNWxu/2ljejuVfRdtvmW62
+2sprjbqa4UciS01TCyaF6dzmOajmr80VDsgAGL6nYPYNRMQq8YyOk7aknTdkjdkk
+p5E+zJG5fsuT+aKqLuiqi1ka0aaX/SzM58fvkayRrvJRVjG7R1cO/R7fJU7lb3tX
+02VcGAB7eFYzesxyehxvHqJ9Zcq2RI4o29ETxVzl8Gom6qq9yIqlmnD/AKTWTSbD
+I7TQoypulQjZLnX8uzqiTbuTyY3dUa3w6r3qqmyQAYXrBqPjmmGHzZFkM/RPcpaV
+ip2tVLt0jYn81XuROpWbq7qLkWpuYT5JkM+73bspqZir2VLF4RsRfDxVe9V3Ve8w
+0AmlwZ8PPs/sepOd0P65dprNbpm/Y8W1EjV8e5WNXu+0vXbaYwAAAAAAAAAMTy7T
+fAct51yPELNcZX988tI3tvlIiI9Pkpp3LuDvSy7c8llmvOPyr9lsFT28SL6tlRzl
+/tIady7grzWh5pMZyaz3mNOqMqWPpJV9ET327/FyGocp0I1dxtXrcsDu7429Vkoo
+kq2InnvCrkRPjsa8q6aopKh1PVwS08zF2dHKxWub8UXqhwAAAAGxOG6x1GQ67Ybb
+6drnKy7Q1Umyb7RwuSV/w91ilqgAIMfSS1VM/OsUo2VcrqmK2SySU6r7kbHS7Men
+7TlY9F9GNInAAAHJBLLBK2WGV8b2r7rmOVFT4Khlll1O1GsvKlrzvJKVje6Nlyl5
+On7Cu5V+aGcWTig1rtbmouXJXRN/q6yhgk3+LuRH/wB4z2w8a2e03K284xj1wYne
+6Dtad7vivM9N/g0z2w8b2OS8qX3BbrR9feWiq46n8kekf5Ge2Li00YuXKlTeLlaX
+O8K23yLt84udP5me2LWPSu9o1LdqBjr3u6NjlrmQvVfRkitcv5GZ0NdQ18Xa0NZT
+1Uf44ZUe380OyAAY5lWdYZisb35HlVntfInVlTWMY9fgxV5lX0RFU0lnfGHpnZWS
+RY3T3LJqpPsLFGtNTqvq+ROZPkxSOGpPFVqnlzZaS3V0OMUD907O2IrZlb6zLu9F
+9WcvwNG1NRPVVL6mqmknmkcrnySOVznqveqqvVVOAAA+2Mc96MY1XOcuyNTqqkqe
+HfhOud/9nyLUtlRarU7Z8NpTdlTUJ/tF74mr5fbX9noqzcsFnteP2ens9kt9Nb6C
+lYjIaenjRjGJ6In5qviqqqnoAAAAAAAAAAAAAAAAAAAAAAAAAAAArR41cc/R3iGv
+ysj5ILq2K4w9O/tG7PX/AJjZDSoLLuCvLFynQCysml56qzOfa5vRItljT5ROjT5G
+6gAAYNrRppYNUsNmx6+R9nIn6yirGNRZaSbbo9u/engre5yeuypWZqngORab5dU4
+1klL2VRF70MzOsVTHuqNkjd4tXb4ou6LsqKhiYPTxuyXXJb9R2KxUE1fcqyRIoII
+k3c9y/4Iibqqr0REVVVEQsk4Z9ErVpJjXaTJFW5PXRp9YVyJ0YnRexi36oxF7173
+Km69zUbuEAGIar6g45ppiFRkeR1XJEzdtPTsVFlqpdt2xxp4qvn3Im6rsiKVnay6
+mZFqlmEuQX+XlY3dlFRMcqxUkW/2Gp4qvRVd3uX02RMHAJdcG/Dv9bOo9Rc7of8A
+q5NpbTbZm/6yve2eRq/1ad7Wr9rvX3duabwAAAAAAAAAAAB5l9x+w3+n9nvtltt1
+h227OtpWTN/J6Khq/KOGXRi/cz3Yiy2zO/rLdUSQbfBiLyf3TWOScEmKT8y49ml5
+t6r3JW08dUn93s+hrbI+C7UWi532W/Y/dY07mvkkp5XfJWq3+8R4y7H7liuSV+PX
+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
++3+bmlfuyioo3Ik1XIib8rU8E6orndzU81VEWtLVrUTJNTcunyLI6nme7dlNTMVe
+ypYt+kbE8E8171Xqu5hoBIDhP0DqtTbuzIshhmp8Qo5dnr1a6vkavWJi+DE+85P3
+U67q2w+30dLb6CCgoaaKmpaeNsUMMTEayNjU2RrUToiIiJ0OyAAAAAAAADE9R9Q8
+O08tSXHL75TW5j9+xiVVfNMqeDI27ud4dUTZN+qoRuzHjbtMLnxYjhdXWd6NqLjU
+pCieS9mxHKqfxIa7rONDVOWXentGKU7PBqUkzlX4qsv/AMD4o+M7VWHZJrXilSnR
+F56OZF9fszJ3mQWjjdyiJ/8A1tg9nq2b91LVSQLt8XI8z/G+NbBatWsv2MX21ud0
+V0Cx1Mbfiu7HbfBqm1cS1/0gyZzI7fnFtp5nd0VerqR2/l+tRqKvwVTZdNPDU07K
+inmjmhkRHMkjcjmuTzRU6KhygESeOTXGO126p0wxWs3uNUzkvNTG7/V4lT+gRU++
+5PteTV273LtB0AAn9wKaRpieHpn16peW93yFPZGvb71NRrsrfg6TZHL+zyd3Uk0A
+AVgcWmYfpprvkFbDJ2lFQSpbaTxTkh3a5UXxR0naOT941MASf+j/ANOUv+fVWdXG
+n57fYERlJzJ0fVvTovkvIzd3ormKhPkH4qbpsvcYFmWjel+Xc777hNommf8AaqIY
+fZ5l+MkXK5fmppbMuCvCq/nlxfJbvZZHdUiqGNq4k9ET3HJ83Kaby3g81UtPNJZp
+bNkESfZbT1PYyr8Wyo1qf2lNQZbppn+J87siw69W+JnfPJSPWH5SIisX5KYiAAAA
+Ac9JTT1dTHS0kEtRPK5GxxxNVz3uXuRETqq+hIzSDhHzfKexuOYyfora3bO7KRqP
+rJE9I+6P+Nd0/CpMPSvRzT7TaBi41YYUrkbs+41SJLVP6bL+sVPdRfFGI1vobCAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIafSM4IqtsmotFCvT/AKsuCtTuTq+F6/8A
+eNVV/YQhkCR/AJnX6NatyYxVzclBkkPYtRV6NqY93RL80WRnqrm+RYSAAAAAa91w
+1YxrSfF3XW9ydvXTo5tvt0bkSWqeid37LEX7T16J6qqIta+quoGR6lZdUZHktX2k
+7/dggZukVNFvukcbfBqb/FV3VVVVUxEA3jwt6D3HVa+JdLq2ajxKilRKqoT3XVT0
+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
+i6GWA3EnbOyiISLx2wRmV6Ju5w==
+=RH9w
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/global/overlay/etc/cosmos/keys/leifj-0AD478D6.pub b/global/overlay/etc/cosmos/keys/leifj-0AD478D6.pub
new file mode 100644
index 0000000..96579b8
--- /dev/null
+++ b/global/overlay/etc/cosmos/keys/leifj-0AD478D6.pub
@@ -0,0 +1,77 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1
+
+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
+H0v+VYVQ+4OnvQVlyTAOOy2eXXmV7sQ=
+=oRyH
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/global/overlay/etc/cosmos/keys/leifj-1.pub b/global/overlay/etc/cosmos/keys/leifj-1.pub
new file mode 100644
index 0000000..7787be9
--- /dev/null
+++ b/global/overlay/etc/cosmos/keys/leifj-1.pub
@@ -0,0 +1,58 @@
+
+Leif Johansson :
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.11 (GNU/Linux)
+
+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
+=TBju
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/global/overlay/etc/cosmos/keys/leifj-662D4043.pub b/global/overlay/etc/cosmos/keys/leifj-662D4043.pub
new file mode 100644
index 0000000..ac40ecd
--- /dev/null
+++ b/global/overlay/etc/cosmos/keys/leifj-662D4043.pub
@@ -0,0 +1,57 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.12 (GNU/Linux)
+
+mQENBFJKuWIBCADQwb1HaVk+CnCpd3aU3W0mn2WLAFOvG/z6BQYIYSdijms+LCDE
+ElVPx94Ai3x5dCxCkwIjlj/WxvIspGAri7sNSqxNvXdckQRA2lZIUxrQQl7aMgFB
+m4HJt4w48gEMAyB0eXzjmpXqJes+YiRQ478m3kBmVnij39LT9fBlNk9DHbjdSmI9
+uQL/hTOpbtzUBxXs/Hn5YGD3eh7hGNGdUcRollmGUVRqMPByZf3hvp9FVCLx3pOn
+unbX89nbRBhxy29+mZO0irDaWMAwQPjiHYaqaGtMGmMEp63W39j1jvZ/olg5UAID
+QgRwRSfo4KtthK8X9klBt5L831TTXHwCoemLABEBAAG0IExlaWYgSm9oYW5zc29u
+IDxsZWlmakBub3JkdS5uZXQ+iQE+BBMBAgAoBQJSSrv+AhsDBQkB4TOABgsJCAcD
+AgYVCAIJCgsEFgIDAQIeAQIXgAAKCRBtEyDHZi1AQ6XHB/9BYjgSG0t/xVjA4uCO
+azdnNY/lbss+yQYh8mnsHqoM3jE3p9v1iLdgP4FRVFbYqhsvkaLAOFSV71hLNnsr
+QfheSK2Rp9+Lyu5FNSYRLxtUuB2SLPpjOUCHIv2dvMxwjfb5hk6Uc6PcHY39jF8l
+D/PubiClp04C8RDkuLFP1rFJPxnxR40SEBs5Vuy+Q2AOSiSC/QQddmMq7uRUoHhw
+7244UX8FLuFFOB3SYVw6R+0T7gBI9RtWa650/edvOl/J7xBjGLpqjGe1r4bhwudU
+Uh9U9hhy4z3aqaxGNHTAGlHLnoSXx05q6n3ojaZo+G0T63Ooh23fqkmGzoHUZIi8
+kbActB1MZWlmIEpvaGFuc3NvbiA8bGVpZmpAbW50LnNlPokBPgQTAQIAKAUCUkq8
+EwIbAwUJAeEzgAYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQbRMgx2YtQENb
+JQf9EtqLelKV0aatBK16I/W1KwtLWYFspAgWB+Y7juu+K+c2Vdy2MiR6rBarfybf
+i7CyM+h/zeMKkrA34h/7snFsGgoWAIlQh1/+4DpK+nqrloELfI+IrBKgtPxEkIFK
+t2SS+knO+vXANh2ALWR6eTSIOjZv96HW//NRMLdgO3uv8lO7Z/t2gmjX/nNig4wZ
+6YIxhKJYkV/T7+m0j0aLKH31qX1iD8IWVFtOrPYNHsqi6VVQ0cL8ZnFeGU5mClgl
+HJ8PnWKMs6AdSyeQEq+PlpbbATWZCFkn/fQ8tr3fPeYJtzt2579lep1t4s9t+yr1
+1zA/Y6FHp1Bx4QeCMNUA1vBAfLQfTGVpZiBKb2hhbnNzb24gPGxlaWZqQHN1bmV0
+LnNlPokBPgQTAQIAKAUCUkq8MQIbAwUJAeEzgAYLCQgHAwIGFQgCCQoLBBYCAwEC
+HgECF4AACgkQbRMgx2YtQEN47gf/UzutkyAv/izujDT5t8ndm+fiP4TdY72uZKSJ
+N6u90WBRbdcggeFyurpHvoQEoWx4gVJ3ahRZ+DHscsAzGgp0ok/uxuETNOT2tcSP
+vHlfSwsE/jx/oJGVwzwWS4dJ0lWzlHTXUN5mjmPabH/36Q1KUoPIdhSc2K7H1wYA
+bhyz0fJvP6mzWsZLH/HO1YcS8M//F/JBHHisznuY/by7aDv5hC/kUPwNDMxC16ME
+PpQ9/TxHO5Tf03yotoFlrynR8N4E/oRAMC6BamViA1HRcg9mpzcKDsY3Iv3Jeczv
+yp3T0rooMz19cfpH5wWKAPYl5WDfdMOQizPdSFmBld0nyqBojLkBDQRSSrliAQgA
+pg+HJnwC18Cpc0w3ZK4r9jz//e5mj49ONZzAhFNMmIvxxeFfNUvu+Dgxfj1eTVTU
+OPsIUsztBgJCJdkGXWc3qwL6DYouxvGgXxeserXOY81hmR5aX/QMccweQSx1tWF7
+Yb9dkUThwTrSA+WhRSb1rsFR+ydi5F2ovvhCgIfswVlOOv+Op50df7RGz8W3jI5P
+gKXj0FpzqJJOLdsWiW52Nv3FTu8+S0Sxr6hWVOfOxUiqZgmYDMXxgakpmTHjHJjK
+zPgtVmrO2UDC1G3zqYW39dx4LqcyhedjUJIz/WopZpJm2G2te4CCAblYZ5UVuWE+
+vn7tGTOZn3OhneDihLjPDwARAQABiQElBBgBAgAPBQJSSrliAhsMBQkB4TOAAAoJ
+EG0TIMdmLUBD+pMH/38reE/WDr2nuFedl3yXycfXDmgUvthrF3MuR8k5mcrEZEWT
+yZ44tCX+AyyZhmpsb+daGNMM/95ON8KxfjvOdG0dNUrmV/t6DBPuo53HPMxsUCN6
+0G9gNwbkVuZnqBk0ilMBckTeA9SxzSg89PQNqnjts+6zWb/dvZAuwjeTsNLx3eyT
+fCMWI3rrSldcBtqbrLJVzyS4BivygGkXYpzK+fF2oi+C/4uXhxyj9CYt8UQdPNnE
+Fn+4SYdFIsEwsWRKgMGdkU8uNmvGsaqaFd8GT/zNRmyXbnCd4PHLjsL71w/rkwcc
+bJJT7o0i7NR9BZeJJ6g57TR2FShkHakdlZQNS7S5AQ0EUkq8OAEIANIMematiDiV
+dKJFIvwo0CqV4k4+hrmnk2jS/7CCvlfEGr7niMQg4z0F1DzWtUCD4j5w6Nc8+eRN
+Wd0JipUz8Ik01zPQnkBayi4cr7t/eDyHYkrnIhR9DJC4VaDKY//432yX03z+P9A0
+PbTHLoi8uOwvfqHFuoQ2Lp0bxIyjTp/6FRdarU7KSZOWeQGHhBXc5GzO2UHWHxMC
+QC0Ru/FbApTZcAgHPKe0336bJrOILa5si28pnsvDy2K81lHJvNuuyPgZyL3ZQ4Py
+Jf6Hw/56sqsikIAHW07smYXCIkITJle5qiAkDyj1q0Vx55K2my6j/Wjo/TfJbpVL
+7Pp3rhlvbQkAEQEAAYkBJQQYAQIADwUCUkq8OAIbIAUJAeEzgAAKCRBtEyDHZi1A
+Q24aB/9zDHAMAQkqIVqPbMJ+/zjs1W0wr5KY2IYNSqNoWMTRifSTAgJpIoyC1tPg
+IE3THzafw+P1bxq0ErNETCfd9qhbUDVzFlfIwM/lCJQQtZ0ew9VOwep3R5CvS/qi
+L+j/2x3KUealMlEVrH6ckKSAXEW64Ukq+BO8VikC5/ZX1ZLcQSsZwDPbXjVV73F1
+TcRZahDQQTzynDeWcFMzYBQfyT8uv+Dn9x2B414Kk4A4mdeHPYTbzjZiJ0hsy4vd
+VUYeRLuqAM49AJkBkkT2AdYvJqFRx8Xapw3uhb7oJvXztm9z9tqZjzkmVVpUvhhN
+HP+E5bBF8bsgpxZjoMczcaYBOl2L
+=Lw2U
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/global/overlay/etc/cosmos/keys/lordahl-3CD4468C.pub b/global/overlay/etc/cosmos/keys/lordahl-3CD4468C.pub
new file mode 100644
index 0000000..ff48209
--- /dev/null
+++ b/global/overlay/etc/cosmos/keys/lordahl-3CD4468C.pub
@@ -0,0 +1,42 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1
+
+mQENBFQpU6gBCACccKUaRC4jmYa7ztvEpMgqxiXgEfNzOLKAGsuFfSyr7TstP+iI
+3xa1Y9rwy4SB/vrDRe6FBvBz1Gp+E88Gs3Ht0lSeDiEpuofN9coGGZmqKZ5F1I8W
+XWX9+RBadG6zcnNTlZbTrkM7YVvyLMKrmy/FP4DxlvC6nq9/Q+FlYcU56EsDg5/F
+2Gd0s5Zdy9aUibEW3/ZKgOT3sD/fYsXk570JaxwDddgfSCWu2udstvIOt0Etp9io
+eMcf56dgTy7h0gP4gCmSBUq8SxlPN4/bl0Sr0Z24N5idLy+NVIQ4Qq6XI/FbgW/9
+hNGH3TFSt18mVTvsmovn609OTM6daf1Fu4sZABEBAAG0LEFuZGVycyBMw7ZyZGFs
+IChTV0FNSUQgWXViaSkgPGFuZGVyc0BoaWcuc2U+iQE4BBMBAgAiBQJUKVOoAhsD
+BgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRCyxlpUPNRGjEOgB/9dxKwvSDa5
+wvssNqhJAI54g1NRs4kJjBKUWDngZPU011dnvn3GP68iHfPqWjyHqHf7pVxqjXBX
+wSunL2yMxzK9YAAbMCxgFhOnN539xdQJ/0dtrCCICVBVJ6LO18JUtwoXhIoX+rVc
+bAvGv+A7a4jnXaDE3U7WyLMWQuYe6HebrwwjOyjAKJzX/JWlPF5BXyJgxrWZGI7p
+ytri5fJ9p/4jX3VKKmc0kt6K5eyjjzLlTKes1gkgrXLx4cOslDt6nkVNkdyF74XG
+WypxeC+50vlyzAoE1xX2Op0TWDwTyf68S5rRZTN9mWRMGlWNwu2n689moRaQKMQi
++Yp7psivHP0quQENBFQpU80BCACJ9ab81Sm3NUoOFjgM9F9HrKKTVc0sEVqUCLeW
+Pfp6yHPuxFrejJDZVkASfGj/1XsjUQ60TrvwzYn1rsSeEwdGKFexfrQJ2SfugOWO
+AsPiYCZ3o3xa8ki951HYy2aeVCedlLRoVagn2iUP1uqVmwImxrV8CydaaQYUJgP/
+qD0Iy5MWxAJGRIVMKnnACs+F8dgULq0P/pID85QXAZkSuGl4urkp2+tCHxAiMxsc
+btDtsoV71ILZ+OQQJe4kDb5si6rE730JXeBuEPU1k//+5HbGspoI7SuZUeiFfoKL
+XppoFkHS+ShI4oC3PIbe76f+tpwbUBGrJw/9vzBWOBiVrSnRABEBAAGJAR8EGAEC
+AAkFAlQpU80CGyAACgkQssZaVDzURowgpwf/fF/5BTAOL3LukGey4jqmQlcnwn3g
+EN+obZFvJZJ8YfDRO6AuyVD9lISLBnVZkoTfK9ipVGJkOOdyiylu8jem+YKKr0kb
+XrT6DfrK7NcuU12PjxfKdCeZQQBo1WZeDpETmWjvokdlJT/55AyOlr8eVb4TQQVW
+K6V2jgOLxFrnhmx5Yl2F7Et1CXfnPJraHUKFUSlEUSFJ3H18Tuui80Y58hYSWPvy
+e6S647FtuULcPcoQD9+wKWgYAcziO8RRfEGK452VAOdV+NFNFDlXeOMcAZa777ui
+g/dClgF4/HMc9NKu5SmDob6JL6s1EVqKLAyev203XVocgCKDCpnprJVmk7kBDQRU
+KVPeAQgAnL3lwnTeVZ+dlRQduZonOtzG8wJcs/inmTA1Klx5Hq9yHvyOUy1z1O+7
+DVrK2K47LCuJ8ieL1NTym2SuCrMvtj9hHT1+fi7WC0koSCvBLRfF0ZqqQgdAShBA
+tMKzw2AXuF+zHK5+JTrVQVCYpCWUE3ZBOL5oOUWsot/NgZoby+MpRC/Ix/+mFhM8
+sDL9mBsOpcDuuzP/saoSxvBPHjN2Lk/pytUAJ9JlHE+kHFGdxmXCfR+mEbR8PpSg
+jt8UnkDKTBlOyh4EJ/Cx2LXxiDIueoALNuRkmtBEj/xZKGucHUUsIHc1W1/4RFBJ
+ghAU0k5rnbY24ewQLG/Pouze26VomQARAQABiQEfBBgBAgAJBQJUKVPeAhsMAAoJ
+ELLGWlQ81EaM2S8H/1NrRELI0f+e4Vy6DSl9Gfac/jpW1QOm7GSLnN0ENDPz04wx
+/ongrhTTDVlBw5r/sGMQIw1pBn8zkZrtBws5Q6AHMJR7hfy7E2yLwVb5/oFPZddB
+GqpynvLU+HUdUdn9usgTNz82+Uf0o5isvUcydxV2QlhbVbzMeHBkgjnlp2SEBX2u
+jFxbfNgVq19AKJKoV86hzc/OkdilO4zbdqo/+5esyNwjYWdaft9fxo0N6KBQzUuR
+M+TzaLlo/h0S/6IHv8Ct0P4URp2L2eZvZZelBPzB6YRvdqvce65k2WLQa+399SA4
+k8X3NjZdKjYDpibdEdXbl1K/xOE6YxA73g5jPoQ=
+=eoNc
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/global/overlay/etc/cosmos/keys/lundberg-9303C5DB.pub b/global/overlay/etc/cosmos/keys/lundberg-9303C5DB.pub
new file mode 100644
index 0000000..21bcc24
--- /dev/null
+++ b/global/overlay/etc/cosmos/keys/lundberg-9303C5DB.pub
@@ -0,0 +1,75 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1
+
+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
+=AiT9
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/global/overlay/etc/cosmos/keys/mikott-243FE517.pub b/global/overlay/etc/cosmos/keys/mikott-243FE517.pub
new file mode 100644
index 0000000..728e5e5
--- /dev/null
+++ b/global/overlay/etc/cosmos/keys/mikott-243FE517.pub
@@ -0,0 +1,61 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+d6ww7TqpfdNWpBr+neQzk7kvFA==
+=BGcj
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/global/overlay/etc/cosmos/keys/salu-82A313B2.pub b/global/overlay/etc/cosmos/keys/salu-82A313B2.pub
new file mode 100644
index 0000000..9fd5b1b
--- /dev/null
+++ b/global/overlay/etc/cosmos/keys/salu-82A313B2.pub
@@ -0,0 +1,61 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1
+
+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
+=oJeL
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/global/overlay/etc/cron.d/cosmos b/global/overlay/etc/cron.d/cosmos
index 4eab8de..2aadd2e 100644
--- a/global/overlay/etc/cron.d/cosmos
+++ b/global/overlay/etc/cron.d/cosmos
@@ -1,4 +1,4 @@
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
-*/15 * * * * root test -f /etc/no-automatic-cosmos || /usr/local/bin/run-cosmos
+*/15 * * * * root test -f /etc/no-automatic-cosmos || scriptherder --mode wrap --syslog --name cosmos -- /usr/local/bin/run-cosmos
diff --git a/global/overlay/etc/cron.daily/scriptherder_cleanup b/global/overlay/etc/cron.daily/scriptherder_cleanup
new file mode 100755
index 0000000..08ec7f5
--- /dev/null
+++ b/global/overlay/etc/cron.daily/scriptherder_cleanup
@@ -0,0 +1,10 @@
+#!/bin/sh
+#
+# Remove scriptherder data older than 7 days.
+#
+
+DIR="/var/cache/scriptherder/"
+
+test -d ${DIR} || exit 0
+
+find ${DIR} -type f -mtime +7 -print0 | xargs -0 rm -f
diff --git a/global/overlay/etc/puppet/cosmos-db.yaml b/global/overlay/etc/puppet/cosmos-db.yaml
new file mode 100644
index 0000000..ce4fcbc
--- /dev/null
+++ b/global/overlay/etc/puppet/cosmos-db.yaml
@@ -0,0 +1,154 @@
+classes:
+ cdr1.sunet.se:
+ mailclient: &id001 {domain: sunet.se}
+ sshaccess: null
+ sunet-cdr: null
+ sunetops: null
+ cdr2.sunet.se:
+ mailclient: *id001
+ sshaccess: null
+ sunet-cdr: null
+ sunetops: null
+ dane.lab.sunet.se:
+ mailclient: *id001
+ sshaccess: null
+ sunetops: null
+ datasets.sunet.se:
+ dockerhost: null
+ mailclient: *id001
+ sshaccess: null
+ sunetops: null
+ webserver: null
+ docker.sunet.se:
+ dockerhost: null
+ mailclient: *id001
+ sshaccess: null
+ sunetops: null
+ webserver: null
+ lobo2.lab.sunet.se:
+ mailclient: *id001
+ sshaccess: null
+ sunetops: null
+ md-master.reep.refeds.org: {sshaccess: null, swamidops: null}
+ mdx1.swamid.se:
+ dockerhost: null
+ mailclient: &id002 {domain: sunet.se}
+ signer: null
+ sshaccess: null
+ sunetops: null
+ swamidops: null
+ mdx2.swamid.se:
+ docker_signer: null
+ dockerhost: null
+ mailclient: *id002
+ sshaccess: null
+ sunetops: null
+ swamidops: null
+ meta.swamid.se:
+ mailclient: *id002
+ sshaccess: null
+ sunetops: null
+ swamidops: null
+ random1.nordu.net: {entropyserver: null, quantis: null}
+ random2.nordu.net: {entropyserver: null, quantis: null}
+ reep.tid.isoc.org: {dockerhost: null, sshaccess: null, swamidops: null}
+ registry.swamid.se:
+ dockerhost: null
+ mailclient: *id002
+ sshaccess: null
+ sunetops: null
+ swamidops: null
+ webserver: null
+ samltest.swamid.se:
+ mailclient: *id002
+ sshaccess: null
+ sunetops: null
+ swamidops: null
+ sto-fre-kvm1.swamid.se:
+ mailclient: *id002
+ sshaccess: null
+ sunetops: null
+ swamidops: null
+ sto-tug-kvm-lab1.swamid.se:
+ mailclient: *id002
+ sshaccess: null
+ sunetops: null
+ swamidops: null
+ sto-tug-kvm-lab2.swamid.se:
+ mailclient: *id002
+ sshaccess: null
+ sunetops: null
+ swamidops: null
+ sto-tug-kvm1.swamid.se:
+ mailclient: *id002
+ sshaccess: null
+ sunetops: null
+ swamidops: null
+ sto-tug-kvm2.swamid.se:
+ dockerhost: null
+ mailclient: *id002
+ sshaccess: null
+ sunetops: null
+ swamidops: null
+ web-a1.sunet.se:
+ dockerhost: null
+ mailclient: *id001
+ sshaccess: null
+ sunetops: null
+ webappserver: null
+ web-a2.sunet.se:
+ dockerhost: null
+ mailclient: *id001
+ sshaccess: null
+ sunetops: null
+ webappserver: null
+ web-f1.sunet.se:
+ dockerhost: null
+ mailclient: *id001
+ sshaccess: null
+ sunetops: null
+ webfrontend: null
+ wp.sunet.se:
+ mailclient: *id001
+ sshaccess: null
+ sunetops: null
+ www2.eduid.se: {dockerhost: null}
+members:
+ all: [cdr1.sunet.se, sto-tug-kvm2.swamid.se, datasets.sunet.se, reep.tid.isoc.org,
+ random1.nordu.net, md-master.reep.refeds.org, random2.nordu.net, sto-tug-kvm-lab2.swamid.se,
+ sto-tug-kvm1.swamid.se, web-a2.sunet.se, www2.eduid.se, cdr2.sunet.se, mdx1.swamid.se,
+ web-f1.sunet.se, meta.swamid.se, registry.swamid.se, dane.lab.sunet.se, mdx2.swamid.se,
+ samltest.swamid.se, wp.sunet.se, docker.sunet.se, lobo2.lab.sunet.se, sto-tug-kvm-lab1.swamid.se,
+ sto-fre-kvm1.swamid.se, web-a1.sunet.se]
+ docker_signer: [mdx2.swamid.se]
+ dockerhost: [sto-tug-kvm2.swamid.se, datasets.sunet.se, reep.tid.isoc.org, web-a2.sunet.se,
+ www2.eduid.se, mdx1.swamid.se, web-f1.sunet.se, registry.swamid.se, mdx2.swamid.se,
+ docker.sunet.se, web-a1.sunet.se]
+ entropyserver: [random1.nordu.net, random2.nordu.net]
+ mailclient: [cdr1.sunet.se, sto-tug-kvm2.swamid.se, datasets.sunet.se, sto-tug-kvm-lab2.swamid.se,
+ sto-tug-kvm1.swamid.se, web-a2.sunet.se, cdr2.sunet.se, mdx1.swamid.se, web-f1.sunet.se,
+ meta.swamid.se, registry.swamid.se, dane.lab.sunet.se, mdx2.swamid.se, samltest.swamid.se,
+ wp.sunet.se, docker.sunet.se, lobo2.lab.sunet.se, sto-tug-kvm-lab1.swamid.se,
+ sto-fre-kvm1.swamid.se, web-a1.sunet.se]
+ quantis: [random1.nordu.net, random2.nordu.net]
+ signer: [mdx1.swamid.se]
+ sshaccess: [cdr1.sunet.se, cdr1.sunet.se, sto-tug-kvm2.swamid.se, datasets.sunet.se,
+ reep.tid.isoc.org, md-master.reep.refeds.org, sto-tug-kvm-lab2.swamid.se, sto-tug-kvm1.swamid.se,
+ web-a2.sunet.se, cdr2.sunet.se, cdr2.sunet.se, mdx1.swamid.se, web-f1.sunet.se,
+ meta.swamid.se, registry.swamid.se, dane.lab.sunet.se, mdx2.swamid.se, samltest.swamid.se,
+ wp.sunet.se, docker.sunet.se, lobo2.lab.sunet.se, sto-tug-kvm-lab1.swamid.se,
+ sto-fre-kvm1.swamid.se, web-a1.sunet.se]
+ sunet-cdr: [cdr1.sunet.se, cdr2.sunet.se]
+ sunetops: [cdr1.sunet.se, cdr1.sunet.se, sto-tug-kvm2.swamid.se, datasets.sunet.se,
+ sto-tug-kvm-lab2.swamid.se, sto-tug-kvm1.swamid.se, web-a2.sunet.se, cdr2.sunet.se,
+ cdr2.sunet.se, mdx1.swamid.se, web-f1.sunet.se, meta.swamid.se, registry.swamid.se,
+ dane.lab.sunet.se, mdx2.swamid.se, samltest.swamid.se, wp.sunet.se, docker.sunet.se,
+ lobo2.lab.sunet.se, sto-tug-kvm-lab1.swamid.se, sto-fre-kvm1.swamid.se, web-a1.sunet.se]
+ swamidops: [sto-tug-kvm2.swamid.se, reep.tid.isoc.org, md-master.reep.refeds.org,
+ sto-tug-kvm-lab2.swamid.se, sto-tug-kvm1.swamid.se, mdx1.swamid.se, meta.swamid.se,
+ registry.swamid.se, mdx2.swamid.se, samltest.swamid.se, sto-tug-kvm-lab1.swamid.se,
+ sto-fre-kvm1.swamid.se]
+ webappserver: [web-a2.sunet.se, web-a1.sunet.se]
+ webfrontend: [web-f1.sunet.se]
+ webserver: [datasets.sunet.se, registry.swamid.se, docker.sunet.se]
+
diff --git a/global/overlay/etc/puppet/cosmos-modules.conf b/global/overlay/etc/puppet/cosmos-modules.conf
index e1ef0e5..80c0216 100644
--- a/global/overlay/etc/puppet/cosmos-modules.conf
+++ b/global/overlay/etc/puppet/cosmos-modules.conf
@@ -1,36 +1,20 @@
+# name source (puppetlabs fq name or git url) upgrade (yes/no)
#
-# name source (puppetlabs fq name or git url) upgrade (yes/no) tag-pattern
-#
-# NOTE that Git packages MUST be tagged with signatures by someone
-# in the Cosmos trust list. That is why all the URLs point to forked
-# versions in the SUNET github organization.
-#
-concat git://github.com/SUNET/puppetlabs-concat.git yes sunet-*
-stdlib git://github.com/SUNET/puppetlabs-stdlib.git yes sunet-*
-cosmos git://github.com/SUNET/puppet-cosmos.git yes sunet-*
-ufw git://github.com/SUNET/puppet-module-ufw.git yes sunet_dev-*
-apt git://github.com/SUNET/puppetlabs-apt.git yes sunet_dev-*
-vcsrepo git://github.com/SUNET/puppetlabs-vcsrepo.git yes sunet-*
-xinetd git://github.com/SUNET/puppetlabs-xinetd.git yes sunet-*
-hiera-gpg git://github.com/SUNET/hiera-gpg.git yes sunet-*
-#
-# Alternate sources you might or might not want to use:
-#concat puppetlabs/concat no
-#stdlib puppetlabs/stdlib no
-#ufw attachmentgenie/ufw no
-#apt puppetlabs/apt no
-#vcsrepo puppetlabs/vcsrepo no
-#xinetd puppetlabs/xinetd no
-#cosmos git://github.com/leifj/puppet-cosmos.git yes
-#python git://github.com/SUNET/puppet-python.git yes sunet-*
-#erlang git://github.com/SUNET/garethr-erlang.git yes sunet-*
-#rabbitmq git://github.com/SUNET/puppetlabs-rabbitmq.git yes sunet_dev-*
-#pound git://github.com/SUNET/puppet-pound.git yes sunet_dev-*
-#augeas git://github.com/SUNET/puppet-augeas.git yes sunet-*
-#bastion git://github.com/SUNET/puppet-bastion.git yes sunet-*
-#postgresql git://github.com/SUNET/puppetlabs-postgresql.git yes sunet_dev-*
-#munin git://github.com/SUNET/ssm-munin.git yes sunet-*
-#nagios git://github.com/SUNET/puppet-nagios.git yes sunet-*
-#staging git://github.com/SUNET/puppet-staging.git yes sunet-*
-#apparmor git://github.com/SUNET/puppet-apparmor.git yes sunet-*
-#docker git://github.com/SUNET/garethr-docker.git yes sunet_dev-*
+concat git://github.com/SUNET/puppetlabs-concat.git yes sunet-*
+stdlib git://github.com/SUNET/puppetlabs-stdlib.git yes sunet-*
+cosmos git://github.com/SUNET/puppet-cosmos.git yes sunet-*
+ufw git://github.com/SUNET/puppet-module-ufw.git yes sunet-*
+apt git://github.com/SUNET/puppetlabs-apt.git no sunet-*
+vcsrepo git://github.com/SUNET/puppetlabs-vcsrepo.git no sunet-*
+xinetd git://github.com/SUNET/puppetlabs-xinetd.git no sunet-*
+python git://github.com/SUNET/puppet-python.git yes sunet-*
+hiera-gpg git://github.com/SUNET/hiera-gpg.git no sunet-*
+pound git://github.com/SUNET/puppet-pound.git yes sunet-*
+augeas git://github.com/SUNET/puppet-augeas.git yes sunet-*
+bastion git://github.com/SUNET/puppet-bastion.git yes sunet-*
+apache puppetlabs/apache no
+pyff git://github.com/samlbits/puppet-pyff.git yes puppet-pyff-*
+postgresql git://github.com/SUNET/puppetlabs-postgresql.git yes sunet-*
+dhcp git://github.com/SUNET/puppetlabs-dhcp.git yes sunet-*
+varnish git://github.com/samlbits/puppet-varnish.git yes puppet-varnish-*
+docker git://github.com/SUNET/garethr-docker.git yes sunet-*
diff --git a/global/overlay/etc/puppet/cosmos-rules.yaml b/global/overlay/etc/puppet/cosmos-rules.yaml
index d9dc495..4b93245 100644
--- a/global/overlay/etc/puppet/cosmos-rules.yaml
+++ b/global/overlay/etc/puppet/cosmos-rules.yaml
@@ -1,2 +1,50 @@
-'ns[0-9]?.mnt.se$':
- nameserver:
+'^cdr\d+\.sunet\.se$':
+ sshaccess:
+ sunet-cdr:
+ sunetops:
+'\.swamid\.se$':
+ sshaccess:
+ sunetops:
+ swamidops:
+ mailclient:
+ domain: sunet.se
+'\.sunet\.se$':
+ sshaccess:
+ sunetops:
+ mailclient:
+ domain: sunet.se
+registry.swamid.se:
+ dockerhost:
+ webserver:
+datasets.sunet.se:
+ dockerhost:
+ webserver:
+docker.sunet.se:
+ dockerhost:
+ webserver:
+mdx1.swamid.se:
+ dockerhost:
+ signer:
+mdx2.swamid.se:
+ dockerhost:
+ docker_signer:
+sto-tug-kvm2.swamid.se:
+ dockerhost:
+reep.tid.isoc.org:
+ sshaccess:
+ swamidops:
+ dockerhost:
+md-master.reep.refeds.org:
+ sshaccess:
+ swamidops:
+'^random\d+\.nordu\.net$':
+ entropyserver:
+ quantis:
+www2.eduid.se:
+ dockerhost:
+'^web-.+\.sunet\.se$':
+ dockerhost:
+'^web-a[0-9]+\.sunet\.se$':
+ webappserver:
+'^web-f[0-9]+\.sunet\.se$':
+ webfrontend:
diff --git a/global/overlay/etc/puppet/cosmos_config_version b/global/overlay/etc/puppet/cosmos_config_version
new file mode 100755
index 0000000..57786fd
--- /dev/null
+++ b/global/overlay/etc/puppet/cosmos_config_version
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+set -e
+
+set -a
+COSMOS_CONF_DIR="/etc/cosmos"
+. /etc/cosmos/cosmos.conf
+COSMOS_VERBOSE="yes"
+set +a
+
+/etc/cosmos/update.d/25verify-git 2>/dev/null | grep ^"tag " | head -1 | cut -b 5-
diff --git a/global/overlay/etc/puppet/facter/cosmos.rb b/global/overlay/etc/puppet/facter/cosmos.rb
new file mode 100644
index 0000000..d810082
--- /dev/null
+++ b/global/overlay/etc/puppet/facter/cosmos.rb
@@ -0,0 +1,22 @@
+#
+# Extract local Cosmos configuration
+#
+require 'facter'
+Facter.add(:cosmos_repo) do
+ setcode do
+ Facter::Util::Resolution.exec("sh -c '. /etc/cosmos/cosmos.conf && echo $COSMOS_REPO'")
+ end
+end
+
+Facter.add(:cosmos_tag_pattern) do
+ setcode do
+ Facter::Util::Resolution.exec("sh -c '. /etc/cosmos/cosmos.conf && echo $COSMOS_UPDATE_VERIFY_GIT_TAG_PATTERN'")
+ end
+end
+
+Facter.add(:cosmos_repo_origin_url) do
+ setcode do
+ Facter::Util::Resolution.exec("sh -c '. /etc/cosmos/cosmos.conf && cd $COSMOS_REPO && git remote show -n origin | grep \"Fetch URL\" | awk \"{print \\$NF }\"'")
+ end
+end
+
diff --git a/global/overlay/etc/puppet/manifests/cosmos-site.pp b/global/overlay/etc/puppet/manifests/cosmos-site.pp
index c276f84..218f69b 100644
--- a/global/overlay/etc/puppet/manifests/cosmos-site.pp
+++ b/global/overlay/etc/puppet/manifests/cosmos-site.pp
@@ -4,49 +4,818 @@ Exec {
path => "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
}
-# include some of this stuff for additional features
-
-#include cosmos::tools
-#include cosmos::motd
-#include cosmos::ntp
-#include cosmos::rngtools
-#include cosmos::preseed
+include cosmos::tools
+include cosmos::motd
+include cosmos::ntp
+include cosmos::rngtools
+include cosmos::preseed
include ufw
include apt
include cosmos
# you need a default node
-node default {
+node default {
+
+}
+
+class dockerhost {
+ apt::source {'docker_official':
+ location => 'https://get.docker.com/ubuntu',
+ release => 'docker',
+ repos => 'main',
+ key => 'A88D21E9',
+ include_src => false
+ }
+ package {'lxc-docker':
+ ensure => latest
+ }
+ class {'docker':
+ manage_package => false
+ }
+}
+
+class webserver {
+ ufw::allow { "allow-http":
+ ip => 'any',
+ port => 80
+ }
+ ufw::allow { "allow-https":
+ ip => 'any',
+ port => 443
+ }
+}
+
+class mailclient ($domain) {
+ cosmos::preseed::preseed_package {"postfix": ensure => present, domain => $domain}
+}
+
+node 'sto-tug-kvm1.swamid.se' {
+
+ package {'python-vm-builder':
+ ensure => 'installed',
+ } ->
+
+ cosmos::dhcp_kvm { 'registry.swamid.se':
+ mac => '52:54:00:52:53:0b',
+ repo => 'git://git.nordu.net/sunet-ops.git',
+ tagpattern => 'sunet-ops',
+ cpus => '1',
+ memory => '2048',
+ }
+
+ cosmos::dhcp_kvm { 'mdx1.swamid.se':
+ mac => '52:54:00:fe:bc:09',
+ repo => 'git://git.nordu.net/sunet-ops.git',
+ tagpattern => 'sunet-ops',
+ cpus => '1',
+ memory => '2048',
+ }
+
+ cosmos::dhcp_kvm { 'md-master.reep.refeds.org':
+ mac => '52:54:00:39:8d:ac',
+ repo => 'git://git.nordu.net/sunet-ops.git',
+ tagpattern => 'sunet-ops',
+ cpus => '1',
+ memory => '2048',
+ }
+}
+
+node 'sto-fre-kvm1.swamid.se' {
+ package {'python-vm-builder':
+ ensure => 'installed',
+ } ->
+
+ cosmos::dhcp_kvm { 'mdx2.swamid.se':
+ mac => '52:54:00:30:be:dd',
+ repo => 'git://git.nordu.net/sunet-ops.git',
+ tagpattern => 'sunet-ops',
+ cpus => '1',
+ memory => '2048',
+ }
+
+}
+
+node 'reep.tid.isoc.org' {
+
+}
+
+node 'datasets.sunet.se' {
+ docker::image {'dockerfile/redis': }
+ docker::image {'docker.sunet.se/datasets': }
+ file {'/opt/lobo2-redis-data':
+ ensure => 'directory',
+ }
+ file {'/etc/ssl':
+ ensure => 'directory',
+ }
+ docker::run {'redis':
+ image => 'dockerfile/redis',
+ use_name => true,
+ volumes => ['/opt/lobo2-redis-data:/data','/var/log:/var/log'],
+ verify_checksum => false,
+ }
+ docker::run {'datasets':
+ image => 'docker.sunet.se/datasets',
+ use_name => true,
+ env => ['BASE_URL=https://datasets.sunet.se'],
+ volumes => ['/etc/ssl:/etc/ssl','/var/log:/var/log'],
+ ports => ['80:80','443:443'],
+ links => ['redis:redis'],
+ start_on => 'docker-redis',
+ verify_checksum => false,
+ }
+}
+
+node 'docker.sunet.se' {
+ docker::image {'registry': }
+ docker::image {'leifj/pound': }
+ docker::run {'sunetregistry':
+ use_name => true,
+ image => 'registry',
+ ports => ['80:5000'],
+ volumes => ['/opt/registry:/tmp/registry']
+ }
+ docker::run {'pound':
+ image => 'leifj/pound',
+ links => ['sunetregistry:backend'],
+ volumes => ['/etc/ssl:/etc/ssl'],
+ ports => ['443:443']
+ }
+}
+
+class docker_signer {
+ docker::image {'docker.samlbits.net/varnish': }
+ docker::image {'docker.samlbits.net/pyff': }
+ docker::run {'pyff':
+ image => 'docker.samlbits.net/pyff',
+ volumes => ['/opt/swamid-metadata:/opt/swamid-metadata'],
+ env => ['DATADIR=/opt/swamid-metadata','LOGLEVEL=INFO']
+ }
+ docker::run {'varnish':
+ image => 'docker.samlbits.net/varnish',
+ links => ['pyff:backend'],
+ ports => ['80:80']
+ }
+ cron {'update-swamid-metadata':
+ command => "cd /opt/swamid-metadata && git pull -q",
+ user => root,
+ minute => '*/5'
+ }
+}
+
+class signer {
+ include cosmos::httpsproxy
+ class {'varnish':
+ domain => 'swamid.se',
+ backends => {
+ mdx => 'http://localhost:8000/'
+ },
+ vhosts => {
+ mdx => 'mdx.swamid.se'
+ }
+ }
+ class {'pyff':
+ load => ["/opt/metadata"],
+ port => 8000,
+ address => '0.0.0.0',
+ validUntil => 'P10D',
+ cacheDuration => 'PT5H',
+ replace => false
+ }
+ cron {'update-swamid-metadata':
+ command => "cd /opt/swamid-metadata && git pull -q",
+ user => root,
+ minute => '*/5'
+ }
+}
+
+node 'md-master.reep.refeds.org' {
+ #include cosmos::httpsproxy
+ class {'pyff':
+ load => ['/opt/peer/vf_repo'],
+ validUntil => 'P10D',
+ cacheDuration => 'PT5H'
+ }
+}
+
+node 'registry.swamid.se' {
+ class {'pyff':
+ load => ['/opt/peer/media/vf_repo'],
+ validUntil => 'P30D',
+ cacheDuration => 'PT24H',
+ replace => false,
+ port => 8000,
+ address => '127.0.0.1'
+ }
+ $peerpkg = ['xmlsec1','libxmlsec1-openssl','libpq-dev','postgresql','postgresql-client']
+ package { $peerpkg: ensure => installed }
+ python::virtualenv { '/opt/peer':
+ ensure => present
+ }
+ python::pip { 'peer==0.13.0':
+ pkgname => 'peer==0.13.0',
+ virtualenv => '/opt/peer'
+ }
+
+ #class { 'postgresql::server': }
+
+ #postgresql::server::db { 'peer':
+ # encoding => 'utf-8',
+ # user => 'peer',
+ # password => postgresql_password('peer', hiera('peer_db_password')),
+ #}
+}
+
+node 'sto-tug-kvm-lab1.swamid.se' {
+
+ package {'python-vm-builder':
+ ensure => 'installed',
+ } ->
+
+ cosmos::dhcp_kvm { 'samltest.swamid.se':
+ mac => '52:54:00:3a:0a:e4',
+ repo => 'git://git.nordu.net/sunet-ops.git',
+ tagpattern => 'sunet-ops',
+ cpus => '1',
+ memory => '1024',
+ }
+
+ cosmos::dhcp_kvm { 'dane.lab.sunet.se':
+ mac => '52:54:00:8d:88:5f',
+ repo => 'git://git.nordu.net/sunet-ops.git',
+ tagpattern => 'sunet-ops',
+ cpus => '1',
+ memory => '1024',
+ }
+
+ cosmos::dhcp_kvm { 'lobo2.lab.sunet.se':
+ mac => '52:54:00:5e:72:91',
+ repo => 'git://git.nordu.net/sunet-ops.git',
+ tagpattern => 'sunet-ops',
+ cpus => '1',
+ memory => '1024',
+ }
+ cosmos::dhcp_kvm { 'meta.swamid.se':
+ mac => '52:54:00:1c:72:1a',
+ repo => 'git://git.nordu.net/sunet-ops.git',
+ tagpattern => 'sunet-ops',
+ cpus => '1',
+ memory => '1024',
+ }
}
-# edit and uncomment to manage ssh root keys in a simple way
+class sunet-dhcp-hosts {
+
+ dhcp::pool {'sunet-servernet-tug-130.242.125.64/26':
+ network => '130.242.125.64',
+ mask => '255.255.255.192',
+ gateway => '130.242.125.65',
+ range => ''
+ }
+
+ dhcp::pool {'sunet-servernet-fre-130.242.125.128/26':
+ network => '130.242.125.128',
+ mask => '255.255.255.192',
+ gateway => '130.242.125.129',
+ range => ''
+ }
+
+ dhcp::pool {'install':
+ network => '130.242.125.0',
+ mask => '255.255.255.192',
+ gateway => '130.242.125.1',
+ range => ''
+ }
+
+ dhcp::pool {'eduid-tug-IdP':
+ network => '130.242.130.0',
+ mask => '255.255.255.248',
+ gateway => '130.242.130.1',
+ range => ''
+ }
+
+ dhcp::pool {'eduid-tug-auth':
+ network => '130.242.130.8',
+ mask => '255.255.255.248',
+ gateway => '130.242.130.9',
+ range => ''
+ }
+
+ dhcp::pool {'eduid-tug-other':
+ network => '130.242.130.16',
+ mask => '255.255.255.240',
+ gateway => '130.242.130.17',
+ range => ''
+ }
+
+ dhcp::pool {'eduid-fre-IdP':
+ network => '130.242.130.64',
+ mask => '255.255.255.248',
+ gateway => '130.242.130.65',
+ range => ''
+ }
+
+ dhcp::pool {'eduid-fre-auth':
+ network => '130.242.130.72',
+ mask => '255.255.255.248',
+ gateway => '130.242.130.73',
+ range => ''
+ }
+
+ dhcp::pool {'eduid-fre-other':
+ network => '130.242.130.80',
+ mask => '255.255.255.240',
+ gateway => '130.242.130.81',
+ range => ''
+ }
+
+ dhcp::pool {'eduid-lla-other':
+ network => '130.242.130.144',
+ mask => '255.255.255.240',
+ gateway => '130.242.130.145',
+ range => ''
+ }
+
+ dhcp::pool {'eduid-lla-auth':
+ network => '130.242.130.136',
+ mask => '255.255.255.248',
+ gateway => '130.242.130.137',
+ range => ''
+ }
+
+
+ # eduID TUG hosts
+
+ dhcp::host { 'kvmidp-tug-3_eth0': mac => "24:b6:fd:fe:fa:51", ip => "130.242.130.4", hostname => 'kvmidp-tug-3'; }
+ dhcp::host { 'kvmidp-tug-3_eth1': mac => "24:b6:fd:fe:fa:52", ip => "130.242.130.4", hostname => 'kvmidp-tug-3'; }
+
+ dhcp::host { 'idp-tug-3a': mac => "52:54:00:01:00:01", ip => "130.242.130.5"; }
+
+ dhcp::host { 'idp-tug-3b': mac => "52:54:00:01:00:02", ip => "130.242.130.6"; }
+
+ dhcp::host { 'auth-tug-3_eth0': mac => "f0:4d:a2:73:4e:9b", ip => "130.242.130.12", hostname => 'auth-tug-3'; }
+ dhcp::host { 'auth-tug-3_eth1': mac => "f0:4d:a2:73:4e:9c", ip => "130.242.130.12", hostname => 'auth-tug-3'; }
+
+ dhcp::host { 'kvm-tug-3_eth0': mac => "f0:4d:a2:73:4f:82", ip => "130.242.130.20", hostname => 'kvm-tug-3'; }
+ dhcp::host { 'kvm-tug-3_eth1': mac => "f0:4d:a2:73:4f:83", ip => "130.242.130.20", hostname => 'kvm-tug-3'; }
+
+ dhcp::host { 'db-tug-3_eth0': mac => "24:b6:fd:fe:fa:f0", ip => "130.242.130.21", hostname => 'db-tug-3'; }
+ dhcp::host { 'db-tug-3_eth1': mac => "24:b6:fd:fe:fa:f1", ip => "130.242.130.21", hostname => 'db-tug-3'; }
+
+ dhcp::host { 'mq-tug-3': mac => "52:54:00:03:00:22", ip => "130.242.130.22"; }
+ dhcp::host { 'worker-tug-3': mac => "52:54:00:03:00:23", ip => "130.242.130.23"; }
+ dhcp::host { 'signup-tug-3': mac => "52:54:00:03:00:24", ip => "130.242.130.24"; }
+ dhcp::host { 'helpdesk-tug-3': mac => "52:54:00:03:00:25", ip => "130.242.130.25"; }
+ dhcp::host { 'www-tug-3': mac => "52:54:00:03:00:26", ip => "130.242.130.26"; }
+ dhcp::host { 'monitor-tug-3': mac => "52:54:00:03:00:27", ip => "130.242.130.27"; }
+
+ dhcp::host { 'kvmapp-tug-3_eth0': mac => "f0:4d:a2:73:4f:0d", ip => "130.242.130.30", hostname => 'kvmapp-tug-3'; }
+ dhcp::host { 'kvmapp-tug-3_eth1': mac => "f0:4d:a2:73:4f:0e", ip => "130.242.130.30", hostname => 'kvmapp-tug-3'; }
+
+
+ # eduID FRE hosts
+
+ dhcp::host { 'kvmidp-fre-3_eth0': mac => "18:03:73:41:f3:e8", ip => "130.242.130.68", hostname => 'kvmidp-fre-3'; }
+ dhcp::host { 'kvmidp-fre-3_eth1': mac => "18:03:73:41:f3:e9", ip => "130.242.130.68", hostname => 'kvmidp-fre-3'; }
+
+ dhcp::host { 'idp-fre-3a': mac => "52:54:00:04:00:01", ip => "130.242.130.69"; }
+
+ dhcp::host { 'idp-fre-3b': mac => "52:54:00:04:00:02", ip => "130.242.130.70"; }
+
+ dhcp::host { 'auth-fre-3_eth0': mac => "18:03:73:0f:41:3c", ip => "130.242.130.76", hostname => 'auth-fre-3'; }
+ dhcp::host { 'auth-fre-3_eth1': mac => "18:03:73:0f:41:3d", ip => "130.242.130.76", hostname => 'auth-fre-3'; }
+
+ dhcp::host { 'kvm-fre-3_eth0': mac => "f0:4d:a2:73:4b:e3", ip => "130.242.130.84", hostname => 'kvm-fre-3'; }
+ dhcp::host { 'kvm-fre-3_eth1': mac => "f0:4d:a2:73:4b:e4", ip => "130.242.130.84", hostname => 'kvm-fre-3'; }
+
+ dhcp::host { 'www-fre-3': mac => "52:54:00:06:00:01", ip => "130.242.130.86"; }
+ dhcp::host { 'dashboard-fre-3': mac => "52:54:00:06:00:57", ip => "130.242.130.87"; }
+ dhcp::host { 'signup-fre-3': mac => "52:54:00:06:00:58", ip => "130.242.130.88"; }
+ dhcp::host { 'worker-fre-3': mac => "52:54:00:06:00:59", ip => "130.242.130.89"; }
+ dhcp::host { 'mq-fre-3': mac => "52:54:00:06:00:5a", ip => "130.242.130.90"; }
+ dhcp::host { 'monitor-fre-3': mac => "52:54:00:06:00:5b", ip => "130.242.130.91"; }
+
+ dhcp::host { 'db-fre-3_eth0': mac => "f0:4d:a2:73:4f:19", ip => "130.242.130.85", hostname => 'db-fre-3'; }
+ dhcp::host { 'db-fre-3_eth1': mac => "f0:4d:a2:73:4f:1a", ip => "130.242.130.85", hostname => 'db-fre-3'; }
+
+ dhcp::host { 'kvmapp-fre-3_eth0': mac => "78:45:c4:f7:90:ec", ip => "130.242.130.94", hostname => 'kvmapp-fre-3'; }
+ dhcp::host { 'kvmapp-fre-3_eth1': mac => "78:45:c4:f7:90:ed", ip => "130.242.130.94", hostname => 'kvmapp-fre-3'; }
+
+ # eduID LLA hosts
+
+ dhcp::host { 'db-lla-3_eth0': mac => "b0:83:fe:e2:27:4c", ip => "130.242.130.148", hostname => 'db-lla-3'; }
+ dhcp::host { 'db-lla-3_eth1': mac => "b0:83:fe:e2:27:4d", ip => "130.242.130.148", hostname => 'db-lla-3'; }
+
+ dhcp::host { 'auth-lla-3_eth0': mac => "b0:83:fe:e2:27:c6", ip => "130.242.130.140", hostname => 'auth-lla-3'; }
+ dhcp::host { 'auth-lla-3_eth1': mac => "b0:83:fe:e2:27:c7", ip => "130.242.130.140", hostname => 'auth-lla-3'; }
+
+
+ # eduID Development subnets
+ #dhcp::pool {'eduid-tug-dev':
+ # network => '194.68.13.128',
+ # mask => '255.255.255.224',
+ # gateway => '194.68.13.129',
+ # range => '',
+ # options => 'domain-name-servers 109.105.111.31, 109.105.110.31',
+ #}
+
+ #dhcp::pool {'eduid-fre-dev':
+ # network => '194.68.13.160',
+ # mask => '255.255.255.224',
+ # gateway => '194.68.13.161',
+ # range => '',
+ # options => 'domain-name-servers 109.105.111.31, 109.105.110.31',
+ #}
+
+ dhcp::pool {'eduid-dev-tug':
+ network => '130.242.130.192',
+ mask => '255.255.255.224',
+ gateway => '130.242.130.193',
+ range => ''
+ }
-#class { 'cosmos::access':
-# keys => [
-# "ssh-rsa ..."
-# ]
-#}
+ # One big subnet used for now
+ #dhcp::pool {'eduid-dev-tug-IdP':
+ # network => '130.242.130.192',
+ # mask => '255.255.255.248',
+ # gateway => '130.242.130.201',
+ # range => ''
+ #}
-# example config for the nameserver class which is matched in cosmos-rules.yaml
+ # One big subnet used for now
+ #dhcp::pool {'eduid-dev-tug-auth':
+ # network => '130.242.130.200',
+ # mask => '255.255.255.248',
+ # gateway => '130.242.130.201',
+ # range => ''
+ #}
-#class nameserver {
-# package {'bind9':
-# ensure => latest
-# }
-# service {'bind9':
-# ensure => running
-# }
-# ufw::allow { "allow-dns-udp":
-# ip => 'any',
-# port => 53,
-# proto => "udp"
-# }
-# ufw::allow { "allow-dns-tcp":
-# ip => 'any',
-# port => 53,
-# proto => "tcp"
-# }
-#}
+ # One big subnet used for now
+ #dhcp::pool {'eduid-dev-tug-other':
+ # network => '130.242.130.208',
+ # mask => '255.255.255.240',
+ # gateway => '130.242.130.209',
+ # range => ''
+ #}
+ # eduID TUG development hosts
+ dhcp::host { 'worker-fre-1': mac => "52:54:00:a0:01:c4", ip => "130.242.130.196" }
+ dhcp::host { 'actions-tug-1': mac => "52:54:00:a0:01:c5", ip => "130.242.130.197" }
+ dhcp::host { 'mq-tug-1': mac => "52:54:00:a0:01:c6", ip => "130.242.130.198" }
+ dhcp::host { 'proxy-tug-1': mac => "52:54:00:a0:01:c7", ip => "130.242.130.199" }
+
+ dhcp::host { 'auth-fre-1_eth0': mac => "78:45:c4:f7:91:67", ip => "130.242.130.204", hostname => 'auth-fre-1'; }
+ dhcp::host { 'auth-fre-1_eth1': mac => "78:45:c4:f7:91:68", ip => "130.242.130.204", hostname => 'auth-fre-1'; }
+
+ dhcp::host { 'auth-tug-1_eth0': mac => "78:45:c4:f8:43:c5", ip => "130.242.130.205", hostname => 'auth-tug-1'; }
+ dhcp::host { 'auth-tug-1_eth1': mac => "78:45:c4:f8:43:c6", ip => "130.242.130.205", hostname => 'auth-tug-1'; }
+
+ dhcp::host { 'signup-tug-1': mac => "52:54:00:a0:01:d4", ip => "130.242.130.212" }
+
+ dhcp::host { 'dash-fre-1': mac => "52:54:00:a0:01:d5", ip => "130.242.130.213" }
+
+ dhcp::host { 'idp-fre-1': mac => "52:54:00:a0:01:d6", ip => "130.242.130.214" }
+
+ dhcp::host { 'idp-tug-1': mac => "52:54:00:a0:01:d7", ip => "130.242.130.215" }
+
+ dhcp::host { 'kvm-fre-1_eth0': mac => "78:45:c4:f8:45:15", ip => "130.242.130.216", hostname => 'kvm-fre-1'; }
+ dhcp::host { 'kvm-fre-1_eth1': mac => "78:45:c4:f8:45:16", ip => "130.242.130.216", hostname => 'kvm-fre-1'; }
+
+ dhcp::host { 'kvm-tug-1_eth0': mac => "78:45:c4:f8:47:be", ip => "130.242.130.217", hostname => 'kvm-tug-1'; }
+ dhcp::host { 'kvm-tug-1_eth1': mac => "78:45:c4:f8:47:bf", ip => "130.242.130.217", hostname => 'kvm-tug-1'; }
+
+ dhcp::host { 'monitor-fre-1': mac => "52:54:00:a0:01:da", ip => "130.242.130.218" }
+
+ dhcp::host { 'mq-fre-1': mac => "52:54:00:a0:01:db", ip => "130.242.130.219" }
+
+ dhcp::host { 'userdb-fre-1': mac => "52:54:00:a0:01:dc", ip => "130.242.130.220" }
+
+ dhcp::host { 'userdb-tug-1': mac => "52:54:00:a0:01:dd", ip => "130.242.130.221" }
+
+ dhcp::host { 'userdb-tug-2': mac => "52:54:00:a0:01:de", ip => "130.242.130.222" }
+
+
+ #dhcp::host { 'idp-tug-1': mac => "52:54:00:a0:00:92", ip => "194.68.13.146" }
+
+ #dhcp::host { 'testvm-tug-1': mac => "52:54:00:11:22:33", ip => "194.68.13.136" }
+
+ #dhcp::host { 'userdb-tug-1': mac => "52:54:00:93:22:29", ip => "194.68.13.132" }
+ #dhcp::host { 'userdb-tug-2': mac => "52:54:00:17:13:ff", ip => "194.68.13.133" }
+
+ # eduID FRE development hosts
+ #dhcp::host { 'idp-fre-1': mac => "52:54:00:a1:00:b2", ip => "194.68.13.178" }
+
+ #dhcp::host { 'dash-fre-1': mac => "52:54:00:a2:00:a7", ip => "194.68.13.167" }
+
+ #dhcp::host { 'userdb-fre-1': mac => "52:54:00:17:13:f6", ip => "194.68.13.164" }
+
+ # SUNET TUG hosts
+
+ dhcp::host { 'samltest': mac => "52:54:00:3a:0a:e4", ip => "130.242.125.80" }
+ dhcp::host { 'dane.lab': mac => "52:54:00:8d:88:5f", ip => "130.242.125.81" }
+ dhcp::host { 'meta.swamid': mac => "52:54:00:1c:72:1a", ip => "130.242.125.82" }
+ dhcp::host { 'md-master.reep': mac => "52:54:00:39:8d:ac", ip => "130.242.125.83" }
+ dhcp::host { 'lobo2.lab': mac => "52:54:00:5e:72:91", ip => "130.242.125.86" }
+
+ # SUNET TUG eduID hosts (KVM host cdr1.sunet.se)
+ dhcp::host { 'backup-tug-3': mac => "52:54:00:f2:7d:54", ip => "130.242.125.84" }
+ dhcp::host { 'proxy-tug-3': mac => "52:54:00:f2:7d:55", ip => "130.242.125.85" }
+
+ # SWAMID production
+ dhcp::host { 'registry.swamid': mac => "52:54:00:52:53:0b", ip => "130.242.125.90" }
+ dhcp::host { 'mdx1.swamid': mac => "52:54:00:fe:bc:09", ip => "130.242.125.91" }
+ dhcp::host { 'mdx2.swamid': mac => "52:54:00:30:be:dd", ip => "130.242.125.92" }
+}
+
+class sshaccess {
+ package { ['openssh-server', 'emacs23-nox']:
+ ensure => 'installed'
+ }
+
+ ufw::allow { 'allow-ssh-sunet':
+ port => '22',
+ ip => 'any', # both IPv4 and IPv6
+ proto => 'tcp'
+ } ->
+ service { 'ssh':
+ ensure => 'running',
+ }
+}
+
+class sunetops {
+
+ sunet::server { 'sunet_server': }
+
+ ssh_authorized_key {'leifj+neo':
+ ensure => present,
+ name => 'leifj+neo@mnt.se',
+ key => 'AAAAB3NzaC1yc2EAAAADAQABAAABAQDVvB4gdJ6EWRmx8xUSxrhoUNnWxEf8ZwAqhzC1+7XBY/hSd/cbEotLB9gxgqt0CLW56VU4FPLTw8snD8tgsyZN6KH1Da7UXno8oMk8tJdwLQM0Ggx3aWuztItkDfBc3Lfvq5T07YfphqJO7rcSGbS4QQdflXuOM9JLi6NStVao0ia4aE6Tj68pVVb3++XYvqvbU6NtEICvkTxEY93YpnRSfeAi64hsbaqSTN4kpeltzoSD1Rikz2aQFtFXE03ZC48HtGGhdMFA/Ade6KWBDaXxHGARVQ9/UccfhaR2XSjVxSZ8FBNOzNsH4k9cQIb2ndkEOXZXnjF5ZjdI4ZU0F+t7',
+ type => 'ssh-rsa',
+ user => 'root'
+ }
+
+ ssh_authorized_key {'ft+505152DD':
+ ensure => present,
+ name => 'fredrik+505152DD@thulin.net',
+ key => 'AAAAB3NzaC1yc2EAAAADAQABAAABAQCnskRpNxWJE/YgDR3o6sMWwwmbUJ8f2SJa0gHfHM+fcxxC2zQN9/9mqJSxS1E9QdeuRbbHpYxEUtHoX0vSrmia/VALDiQAMps51RBqq6YlrYqvP/Rb0hZ0Z4/YgjTosLdu1PeTzih6mwbyNNF0+gY987Ig31qXQytNF+9G1oSY9dgBAq52lu170QXTRwum4B6Gh4/pCnM6xx+7nY2oqlgvl2wYHVAOJ39W9r4y9kBhcVs51XvJqYehjaoyKYf1+PzA0FsvhJkZuG6ws5eEGSB90lAzKGyFZXedvOLmnFmqAraoLeuKajHIFJDfKNfHHbYpn8ERIfVW66nbqlXFO2g3',
+ type => 'ssh-rsa',
+ user => 'root'
+ }
+
+ ssh_authorized_key {'ft+4030CCAD':
+ ensure => present,
+ name => 'fredrik+4030CCAD@thulin.net',
+ key => 'AAAAB3NzaC1yc2EAAAADAQABAAABAQDCb2Nkstl2A2Av34oAeugSFAUZisR44EiN3+QHCfNiv2UtMvGQsz2uVRGS0zA7j2PjcrEA1AcstriONBZF/TodARbirX7u7ibJo4gfFJctSMHMBncwSKt5BR6cuCZpW9E7f05tVc3Z1SU1XlAn0OUuAt6UwluEehEKLKXDIHWfsGejlOTpy6x+++6/o1gfMoXpxYDRK70z8jWPfN6i/tt2q+Y0gjZWQP4CHGzFEUtTpOlFoqN4TzXaJushBhdMsiKllOm9wzHFuxlU/hNbDfn00vdOTPYpHkUluQUE7NtNznpeTWpl5qYL+n4uIChxjeZRBmUgD9t8YU4t3UZNksD/',
+ type => 'ssh-rsa',
+ user => 'root'
+ }
+
+ ssh_authorized_key {'swold+neo':
+ ensure => absent,
+ name => 'swold+neo@sunet.se',
+ key => 'AAAAB3NzaC1yc2EAAAADAQABAAABAQDEH/7KWri49NdhCjXW8VEdDxFl3IfIFT6QjJ47TkhCZCPZdgFl8NLKUOBE1P4jrwB+f+G+ScQ9EYN2Mnf0VhjZ3twPq2S1fosu3jmA56qhQ2J6ZNG1SvVDkgT69HZ+yoxEzbkmWuhhlb7WWVzC3h1K5Rxs8Yr9GJzIpgqH5PzI73pMAS89MYOjkhqS8NOi4onB3llFnyFZeWDB+rXj8/Q6k1u2F9KN1fPxe3EiskaJPOkPn8dEe3pOAiu+FwWyinHxO9Z4gzf55XVE8oFd36LRpoJGr32vdScSPeCksrARluEHnkEHqg6cVLcDkKnHrPITuXKj54i/jYeYGetigEuV',
+ type => 'ssh-rsa',
+ user => 'root'
+ }
+
+ ssh_authorized_key {'lundberg+9303C5DB':
+ type => 'ssh-rsa',
+ key => 'AAAAB3NzaC1yc2EAAAADAQABAAABAQDAHMfn9PSWjGGAkMY6rh1yffdYgnlhoIC5E5NWdc5XUlY9oNYW2zhMpyhepfoh1YYv5V1QNTuO3f0zhD+ZeqPvnnA74fBM4yvWU4Qttwv2drsFOsU7nRbGSwQdww9IDidtxRuAjW5HJ9mTOJuYrIFAEHgg1Pv8sZKzHNWuZiz4I34CN2NbaZOu4eYG6pdzvB6kfYl5iL/esfhBZfegA+7x4qXvMLHEKb7wCRBABCfWu6Yy1E0jUdRWBFdqp5zsjuQlk8minh892m2C1tFcyub5dCWgLYtiQRpIjz16lMk1cM+fgS9YM7Ev62bBpRynU2wCfg1QpYMpxIq54q/XLlYv',
+ ensure => present,
+ user => 'root',
+ name => 'lundberg+9303C5DB'
+ }
+
+ ssh_authorized_key {'salu+82A313B2':
+ ensure => present,
+ name => 'salu+82A313B2@nordu.net',
+ key => 'AAAAB3NzaC1yc2EAAAADAQABAAABAQDeqxYSykQRs9Wbh+uRCYqRUjsFfdlc4//bs3dbedE/8kZWvvSmBlcqizXKVSlABrwyqGDpxW9bD+lRC53zArDMaqYUQbkzYs0NYYeE1bA4HUI/f4SgDn7PKicJLcbIOFTEjdOAqoi+KXji6Y5kxmcNYcU/XbyUln7FCItIFTXLF6VJBR1edokXAtsQBeD+H+xJA34Ha4TkBPKSeYjt+OoCZSjW0cz9g/+T59WsLZ/uJPZNqTgP5QOnBBmqURXDosXhjfPRrUQAyySM9D0riqMY4gtUgVvvnSXZqgquk0/79JjR10QAFmauxRdYmTBG7NU8EM7bXqUeuEFQIl9aiIe3',
+ type => 'ssh-rsa',
+ user => 'root'
+ }
+
+ ssh_authorized_key {'dennis+3EE4E6C7':
+ ensure => present,
+ name => 'dennis+3EE4E6C7@nordu.net',
+ key => 'AAAAB3NzaC1yc2EAAAADAQABAAABAQC314jSJ575zgXl2xzwzLRLwoNaP7eXN6NlWOPq47qmoUfR1uZPPbZhvKDmMMc4WQhNPzWDFkX29tcHJar0KXVYM0zNV/hkXlh3Z9suAVFJgzdQ+VW3GsNDffYt4GHM8gUtYxdiQKhA78rIIvcvjy/e0c87lQ0zwDQjruLRw2t1mP1roVsadGnRn4H2rHnlmYqsyJrd2L/MQeKxFh0t3zKu3Hp2mGoSFpFe/5uMaHE//ZOO3tVf3fBWX3p19f6sK6kqYsSR4vMAP08cWf32xFEeNHf4ljbanQ/NIo3iPybpzGXVsPpTHXylLS+vYzDf9mOcxovhsKnJrJ3gdkqEfQyd',
+ type => 'ssh-rsa',
+ user => 'root'
+ }
+
+ # OS hardening
+ if $::hostname =~ /kvm/ {
+ class {'bastion':
+ fstab_fix_shm => false,
+ sysctl_net_hardening => false,
+ }
+ } elsif $::hostname =~ /random/ { # pollen requires exec on /tmp
+ class {'bastion':
+ fixperms_enable => false,
+ fixperms_paranoia => false,
+ }
+ } else {
+ class {'bastion':
+ fstab_fix_shm => false,
+ fixperms_paranoia => true,
+ }
+ }
+}
+
+node 'samltest.swamid.se' {
+
+ ssh_authorized_key {'hans-its-umu':
+ name => 'haho0032@its-admins-MacBook-Pro.local',
+ ensure => present,
+ key => 'AAAAB3NzaC1yc2EAAAADAQABAAABAQCo3A5CG7fKLBLw8vhJL6Q8iweADu7qyDUokAvKR1SUitBnYw0pnd3cv3T32S/mps51YIoyKwhv2q2UGW5kYMeZtH0YjBy+l93nVBjUCLlNkz0T5gq+ePVayiqv0hUy5VMDEqLmUOquYr3ao7FBRu34HxlEj26O6Ckvk5YTImGmGqMw6kQ4aI0oIkwk3VwO2vMWSD6lgT6YCsE9g7wkD4nJpkV1PEDOx8yxwFr0kUbL3/DpudBFew/FZa4Dq4H2brExa3Q/rrnoo1GAKLzHW/V8oa8eHbRQXwchgX63UbnzQjGiaLUc5bHZwEehp2TkLYx6encctIUGi447DVCfOTsz',
+ type => 'ssh-rsa',
+ user => 'root'
+ }
+}
+
+class swamidops {
+ ssh_authorized_key {'roland-umu':
+ type => 'ssh-rsa',
+ key => 'AAAAB3NzaC1yc2EAAAADAQABAAABAQC+tLFDNA7UXr3ZXgp6qQq7pKsTStHb+8UIEO3Act7Va3c/dz9P8Bi4+y8h33t2SACsQHXXUXAgSfmgPi+tijZ/rJrKGZJkA5LPbntca40ePU/zNWKVKGylbdnv9vz2urrr3xOmcV7yD/91k+JLwzTWiNWF6IXQC0p43EvE6BdZnLGdGAU9DPj/5rtyxWlX9Lul516dmVD2+nI8UR5bnDNl83a3lLkQyEDZMIC8QujNV8fR3pgYeRKdC7WtPcaPGv5NaF9UweBDK+7QwHTJAuIZw6S7ArA7KgOF64evOuVL0tTEyuwMHGrlE+ylxN+zOAfDvEMrxnTATR6RMcvLmTJB',
+ ensure => present,
+ user => 'root',
+ name => 'roland.hedberg@adm.umu.se'
+ }
+ ssh_authorized_key {'lordahl-hig':
+ type => 'ssh-rsa',
+ key => 'AAAAB3NzaC1yc2EAAAADAQABAAABAQCJ9ab81Sm3NUoOFjgM9F9HrKKTVc0sEVqUCLeWPfp6yHPuxFrejJDZVkASfGj/1XsjUQ60TrvwzYn1rsSeEwdGKFexfrQJ2SfugOWOAsPiYCZ3o3xa8ki951HYy2aeVCedlLRoVagn2iUP1uqVmwImxrV8CydaaQYUJgP/qD0Iy5MWxAJGRIVMKnnACs+F8dgULq0P/pID85QXAZkSuGl4urkp2+tCHxAiMxscbtDtsoV71ILZ+OQQJe4kDb5si6rE730JXeBuEPU1k//+5HbGspoI7SuZUeiFfoKLXppoFkHS+ShI4oC3PIbe76f+tpwbUBGrJw/9vzBWOBiVrSnR',
+ ensure => present,
+ user => 'root',
+ name => 'anders@merlin'
+ }
+ ssh_authorized_key {'aslund-umu':
+ type => 'ssh-rsa',
+ key => 'AAAAB3NzaC1yc2EAAAADAQABAAABAQCZMok+obrCgHY0atsLp777lBrxvMYEHmHK0+DXHBnRBH9CK9gjquH3fmv/Eq1bHm4UUOOJ0zk67mVdFcOwX4p7XbxHolURLFPu1QBWgiT6vRGrWOthcDa1I5iSJ0ez7SBrtD4Si5juKq1T6mNVEbHn9NlOoGR4NVGQI1v90bywnhdT9m12Y487e4HYyjDE3G/S0v6Pkj4uaehrWHAbrgXYEkleuhGJesNQrfxDx31BZbqJs8wqZ9csgHaBgiiN/lplsZlL7GuHqytoSPKwVJ7EK/ZvFLir3IoP5G9IR0eUY4+SZUEjmxJL+JyBXGQJPJx1qIPiQZSb+38tBT2742Fx',
+ ensure => present,
+ user => 'root',
+ name => 'fredrik.aslund@umu.se-yubikey-neo'
+ }
+}
+
+node 'wp.sunet.se' {
+ package {'libapache2-mod-php5': ensure => 'latest'}
+ package {'php5-mysql': ensure => 'latest'}
+ class {'apache':
+ mpm_module => 'prefork',
+ default_vhost => false
+ }
+ apache::mod {'php5': }
+ apache::mod {'ssl': }
+ apache::mod {'rewrite': }
+ apache::vhost { 'wp.sunet.se':
+ port => 80,
+ docroot => '/opt/wordpress'
+ }
+ include mysql::server
+ user {'wordpress': ensure => present, groups => 'www-data'}
+ class { 'wordpress':
+ wp_owner => 'wordpress',
+ wp_group => 'www-data',
+ db_user => 'wp',
+ db_password => hiera('mysql_password', 'NOT_SET_IN_HIERA'),
+ wp_multisite => false,
+ wp_site_domain => 'wp.sunet.se',
+ version => '3.8.1'
+ }
+ ufw::allow { 'allow-www-wordpress':
+ port => '80',
+ ip => 'any', # both IPv4 and IPv6
+ proto => 'tcp'
+ }
+ ufw::allow { 'allow-https-wordpress':
+ port => '443',
+ ip => 'any', # both IPv4 and IPv6
+ proto => 'tcp'
+ }
+}
+
+node 'cdr1.sunet.se' {
+
+ package {'python-vm-builder':
+ ensure => 'installed',
+ } ->
+
+ cosmos::dhcp_kvm { 'backup-tug-3.eduid.se':
+ mac => '52:54:00:f2:7d:54',
+ repo => 'git://git.nordu.net/eduid-ops.git',
+ tagpattern => 'eduid-v3',
+ cpus => '1',
+ memory => '512',
+ suite => 'trusty',
+ extras => '--addpkg linux-image-generic --tmpfs -',
+ }
+
+ cosmos::dhcp_kvm { 'proxy-tug-3.eduid.se':
+ mac => '52:54:00:f2:7d:55',
+ repo => 'git://git.nordu.net/eduid-ops.git',
+ tagpattern => 'eduid-v3',
+ cpus => '1',
+ memory => '512',
+ suite => 'trusty',
+ extras => '--addpkg linux-image-generic --tmpfs -',
+ }
+
+}
+
+node 'sto-tug-kvm2.swamid.se' {
+ docker::image {'docker.sunet.se/flog/postgresql-9.3': }
+ file {'/opt/docker/postgresql_data':
+ ensure => 'directory',
+ }
+ file {'/var/log/flog_db':
+ ensure => 'directory',
+ }
+ docker::run {'flog_db':
+ image => 'docker.sunet.se/flog/postgresql-9.3',
+ use_name => true,
+ volumes => ['/opt/docker/postgresql_data/:/var/lib/postgresql/','/var/log/flog_db/:/var/log/postgresql/'],
+ }
+}
+
+class sunet-cdr {
+
+ # Listen on br0 if it exists (cdr1), otherwise bond0 (cdr2).
+ $interface = $::ipaddress_br0 ? {
+ undef => 'bond0',
+ default => 'br0',
+ }
+
+ class { 'dhcp':
+ dnsdomain => [ 'eduid.se','sunet.se','swamid.se' ],
+ nameservers => ['130.242.80.14','130.242.80.99'],
+ ntpservers => ['ntp1.nordu.net','ntp2.nordu.net','Time1.Stupi.SE'],
+ interfaces => [$interface],
+ #pxeserver => '130.242.125.5',
+ #pxefilename => 'pxelinux.0'
+ }
+
+ class { 'sunet-dhcp-hosts': }
+
+}
+
+class entropyserver {
+
+ include augeas
+
+ apt::ppa {'ppa:ndn/pollen': } ->
+ package {'pollen': } ->
+ service {'pollen':
+ ensure => 'running'
+ }
+ augeas { "pollen_defaults":
+ incl => "/etc/default/pollen",
+ lens => "Shellvars.lns",
+ changes => [
+ 'set DEVICE "/dev/qrandom0"',
+ ],
+ notify => Service['pollen'],
+ } ->
+ ufw::allow { "allow-pollen-http-tcp":
+ ip => 'any',
+ port => 80
+ }
+ ufw::allow { "allow-pollen-https-tcp":
+ ip => 'any',
+ port => 443
+ }
+}
+
+class fail2ban {
+
+ include augeas
+
+ package {'fail2ban': ensure => 'latest'}
+ augeas { "fail2ban_defaults":
+ incl => "/etc/fail2ban/jail.conf",
+ lens => "Shellvars.lns",
+ changes => [
+ 'set bantime "604800"',
+ ],
+ notify => Service['fail2ban'],
+ }
+}
+
+class quantis {
+ apt::ppa {'ppa:ndn/quantispci': }
+ package {'quantispci-dkms': }
+}
+
+class webcommon {
+ docker::image {'coreos/etcd': }
+}
+
+class webfrontend {
+ class { 'webcommon': }
+ docker::image {'docker.sunet.se/pound': }
+ docker::image {'docker.sunet.se/varnish': }
+}
+
+class webappserver {
+ class { 'webcommon': }
+}
diff --git a/global/overlay/etc/puppet/modules/sunet/manifests/encrypted_swap.pp b/global/overlay/etc/puppet/modules/sunet/manifests/encrypted_swap.pp
new file mode 100644
index 0000000..9956e00
--- /dev/null
+++ b/global/overlay/etc/puppet/modules/sunet/manifests/encrypted_swap.pp
@@ -0,0 +1,12 @@
+define sunet::encrypted_swap() {
+
+ package { 'ecryptfs-utils':
+ ensure => 'installed'
+ } ->
+
+ exec {'sunet_ecryptfs_setup_swap':
+ command => '/usr/bin/ecryptfs-setup-swap -f',
+ onlyif => 'grep swap /etc/fstab | grep -ve ^# -e cryptswap | grep -q swap',
+ }
+
+}
diff --git a/global/overlay/etc/puppet/modules/sunet/manifests/ethernet_bonding.pp b/global/overlay/etc/puppet/modules/sunet/manifests/ethernet_bonding.pp
new file mode 100644
index 0000000..8ff7325
--- /dev/null
+++ b/global/overlay/etc/puppet/modules/sunet/manifests/ethernet_bonding.pp
@@ -0,0 +1,19 @@
+define sunet::ethernet_bonding() {
+ # Set up prerequisites for Ethernet LACP bonding of eth0 and eth1,
+ # for all physical hosts that are running Ubuntu.
+ #
+ # Bonding requires setup in /etc/network/interfaces as well.
+ #
+ if $::is_virtual == 'false' and $::operatingsystem == 'Ubuntu' {
+ if $::operatingsystemrelease <= '12.04' {
+ package {'ifenslave': ensure => 'present' }
+ } else {
+ package {'ifenslave-2.6': ensure => 'present' }
+ }
+
+ file_line { 'load_module_at_boot':
+ path => '/etc/modules',
+ line => 'bonding',
+ }
+ }
+}
diff --git a/global/overlay/etc/puppet/modules/sunet/manifests/server.pp b/global/overlay/etc/puppet/modules/sunet/manifests/server.pp
new file mode 100644
index 0000000..14df323
--- /dev/null
+++ b/global/overlay/etc/puppet/modules/sunet/manifests/server.pp
@@ -0,0 +1,87 @@
+define sunet::server() {
+
+ # Set up encrypted swap
+ sunet::encrypted_swap { 'sunet_encrypted_swap': }
+
+ # Add prerequisites for ethernet bonding, if physical server
+ sunet::ethernet_bonding { 'sunet_ethernet_bonding': }
+
+# Removed until SWAMID hosts can have their ufw module updated / ft
+# # Ignore IPv6 multicast
+# ufw::deny { 'ignore_v6_multicast':
+# ip => 'ff02::1',
+# proto => 'any' # 'ufw' has a hard-coded list of protocols, which does not include 'ipv6-icmp' :(
+# }
+
+# # Ignore IPv6 multicast PIM router talk
+# ufw::deny { 'ignore_v6_multicast_PIM':
+# ip => 'ff02::d',
+# proto => 'any' # 'ufw' has a hard-coded list of protocols, which does not include 'ipv6-icmp' :(
+# }
+
+ include augeas
+ augeas { "sshd_config":
+ context => "/files/etc/ssh/sshd_config",
+ changes => [
+ "set PasswordAuthentication no",
+ "set X11Forwarding no",
+ "set LogLevel VERBOSE", # log pubkey used for root login
+ ],
+ notify => Service['ssh'],
+ } ->
+ file_line {
+ 'no_sftp_subsystem':
+ path => '/etc/ssh/sshd_config',
+ match => 'Subsystem sftp /usr/lib/openssh/sftp-server',
+ line => '#Subsystem sftp /usr/lib/openssh/sftp-server',
+ notify => Service['ssh'],
+ }
+
+ # already declared in puppet-cosmos/manifests/ntp.pp
+ #service { 'ntp':
+ # ensure => 'running',
+ #}
+
+ # Don't use pool.ntp.org servers, but rather DHCP provided NTP servers
+ line { 'no_pool_ntp_org_servers':
+ file => '/etc/ntp.conf',
+ line => '^server .*\.pool\.ntp\.org',
+ ensure => 'comment',
+ notify => Service['ntp'],
+ }
+
+ file { '/var/cache/scriptherder':
+ ensure => 'directory',
+ path => '/var/cache/scriptherder',
+ mode => '1777', # like /tmp, so user-cronjobs can also use scriptherder
+ }
+
+
+}
+
+# from http://projects.puppetlabs.com/projects/puppet/wiki/Simple_Text_Patterns/5
+define line($file, $line, $ensure = 'present') {
+ case $ensure {
+ default : { err ( "unknown ensure value ${ensure}" ) }
+ present: {
+ exec { "/bin/echo '${line}' >> '${file}'":
+ unless => "/bin/grep -qFx '${line}' '${file}'"
+ }
+ }
+ absent: {
+ exec { "/usr/bin/perl -ni -e 'print unless /^\\Q${line}\\E\$/' '${file}'":
+ onlyif => "/bin/grep -qFx '${line}' '${file}'"
+ }
+ }
+ uncomment: {
+ exec { "/bin/sed -i -e'/${line}/s/^#\\+//' '${file}'":
+ onlyif => "/bin/grep '${line}' '${file}' | /bin/grep '^#' | /usr/bin/wc -l"
+ }
+ }
+ comment: {
+ exec { "/bin/sed -i -e'/${line}/s/^\\(.\\+\\)$/#\\1/' '${file}'":
+ onlyif => "/usr/bin/test `/bin/grep '${line}' '${file}' | /bin/grep -v '^#' | /usr/bin/wc -l` -ne 0"
+ }
+ }
+ }
+}
diff --git a/global/overlay/etc/puppet/puppet.conf b/global/overlay/etc/puppet/puppet.conf
index 88871f0..ec11255 100644
--- a/global/overlay/etc/puppet/puppet.conf
+++ b/global/overlay/etc/puppet/puppet.conf
@@ -3,8 +3,9 @@ logdir=/var/log/puppet
vardir=/var/lib/puppet
ssldir=/var/lib/puppet/ssl
rundir=/var/run/puppet
-factpath=$vardir/lib/facter
-templatedir=$confdir/templates
+# factpath is supposed to be colon-delimeted, but that does not appear to work
+# (tested with 'strace -f facter --puppet something' - does not split on colon in Puppet 3.4.2).
+factpath=/etc/puppet/facter
node_terminus = exec
external_nodes = /etc/puppet/cosmos_enc.py
basemodulepath = /etc/puppet/modules:/etc/puppet/cosmos-modules:/usr/share/puppet/modules
diff --git a/global/overlay/etc/scriptherder/check/cosmos.ini b/global/overlay/etc/scriptherder/check/cosmos.ini
new file mode 100644
index 0000000..b44a537
--- /dev/null
+++ b/global/overlay/etc/scriptherder/check/cosmos.ini
@@ -0,0 +1,3 @@
+[check]
+ok = exit_status=0, max_age=35m
+warning = exit_status=0, max_age=1h
diff --git a/global/overlay/usr/local/bin/docker-cleanup b/global/overlay/usr/local/bin/docker-cleanup
new file mode 100755
index 0000000..f46942b
--- /dev/null
+++ b/global/overlay/usr/local/bin/docker-cleanup
@@ -0,0 +1,46 @@
+#!/bin/sh
+# Cleanup docker files: untagged containers and images.
+#
+# Use `docker-cleanup -n` for a dry run to see what would be deleted.
+
+untagged_containers() {
+ # Print containers using untagged images: $1 is used with awk's print: 0=line, 1=column 1.
+ # NOTE: "[0-9a-f]{12}" does not work with GNU Awk 3.1.7 (RHEL6).
+ # Ref: https://github.com/blueyed/dotfiles/commit/a14f0b4b#commitcomment-6736470
+ docker ps -a | tail -n +2 | awk '$2 ~ "^[0-9a-f]+$" {print $'$1'}'
+}
+
+untagged_images() {
+ # Print untagged images: $1 is used with awk's print: 0=line, 3=column 3.
+ # NOTE: intermediate images (via -a) seem to only cause
+ # "Error: Conflict, foobarid wasn't deleted" messages.
+ # Might be useful sometimes when Docker messed things up?!
+ # docker images -a | awk '$1 == "<none>" {print $'$1'}'
+ docker images | tail -n +2 | awk '$1 == "<none>" {print $'$1'}'
+}
+
+# Dry-run.
+if [ "$1" = "-n" ]; then
+ echo "=== Containers with uncommitted images: ==="
+ untagged_containers 0
+ echo
+
+ echo "=== Uncommitted images: ==="
+ untagged_images 0
+
+ exit
+fi
+if [ -n "$1" ]; then
+ echo "Cleanup docker files: remove untagged containers and images."
+ echo "Usage: ${0##*/} [-n]"
+ echo " -n: dry run: display what would get removed."
+ exit 1
+fi
+
+# Remove containers with untagged images.
+echo "Removing containers:" >&2
+untagged_containers 1 | xargs --no-run-if-empty docker rm --volumes=true
+
+# Remove untagged images
+echo "Removing images:" >&2
+untagged_images 3 | xargs --no-run-if-empty docker rmi
diff --git a/global/overlay/usr/local/bin/scriptherder b/global/overlay/usr/local/bin/scriptherder
new file mode 100755
index 0000000..1e00ec0
--- /dev/null
+++ b/global/overlay/usr/local/bin/scriptherder
@@ -0,0 +1,884 @@
+#!/usr/bin/env python
+#
+# Copyright 2014 SUNET. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without modification, are
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice, this list of
+# conditions and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright notice, this list
+# of conditions and the following disclaimer in the documentation and/or other materials
+# provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY SUNET ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SUNET OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# The views and conclusions contained in the software and documentation are those of the
+# authors and should not be interpreted as representing official policies, either expressed
+# or implied, of SUNET.
+#
+# Author : Fredrik Thulin <fredrik@thulin.net>
+#
+
+"""
+Scriptherder can be run in one othe following modes:
+
+ wrap -- Stores output, exit status etc. about a script invocation
+ ls -- Lists the logged script invocations
+ check -- Check if script execution results match given criterias,
+ output Nagios compatible result
+
+"""
+
+import os
+import re
+import sys
+import time
+import json
+import logging
+import logging.handlers
+import argparse
+import subprocess
+import ConfigParser
+
+_defaults = {'debug': False,
+ 'syslog': False,
+ 'mode': 'ls',
+ 'datadir': '/var/cache/scriptherder',
+ 'checkdir': '/etc/scriptherder/check',
+ }
+
+_check_defaults = {'ok': 'exit_status=0,max_age=8h',
+ 'warning': 'exit_status=0,max_age=24h',
+ }
+
+exit_status = {'OK': 0,
+ 'WARNING': 1,
+ 'CRITICAL': 2,
+ 'UNKNOWN': 3,
+ }
+
+
+class ScriptHerderError(Exception):
+ """
+ Base exception class for scriptherder.
+ """
+
+ def __init__(self, reason, filename):
+ self.reason = reason
+ self.filename = filename
+
+
+class JobLoadError(ScriptHerderError):
+ """
+ Raised when loading a job file fails.
+ """
+
+
+class CheckLoadError(ScriptHerderError):
+ """
+ Raised when loading a check file fails.
+ """
+
+
+class Job(object):
+ """
+ Representation of an execution of a job.
+ """
+
+ def __init__(self, name, cmd=None):
+ if cmd is None:
+ cmd = []
+ for x in cmd:
+ assert(isinstance(x, basestring))
+ self._name = name
+ self._cmd = cmd
+ self._start_time = None
+ self._end_time = None
+ self._exit_status = None
+ self._pid = None
+ self._output = None
+ self._filename = None
+ self._output_filename = None
+ if self._name is None:
+ self._name = os.path.basename(self.cmd)
+
+ def __repr__(self):
+ start = time.strftime('%Y-%m-%d %X', time.localtime(self.start_time))
+ return '<{} instance at {:#x}: \'{name}\' start={start}, exit={exit}>'.format(
+ self.__class__.__name__,
+ id(self),
+ name=self.name,
+ start = start,
+ exit = self.exit_status,
+ )
+
+ def __str__(self):
+ start = time.strftime('%Y-%m-%d %X', time.localtime(self.start_time))
+ return '\'{name}\' start={start}, duration={duration:>6}, exit={exit}'.format(
+ name = self.name,
+ start = start,
+ duration = self.duration_str,
+ exit = self.exit_status,
+ )
+
+ def status_summary(self):
+ """
+ Return short string with status of job.
+
+ E.g. 'name[exit=0,age=19h]'
+ """
+ if self._end_time is None or self._start_time is None:
+ return '{name}[not_running]'.format(name = self.name)
+ age = _time_to_str(time.time() - self._start_time)
+ return '{name}[exit={exit_status},age={age}]'.format(
+ name = self.name,
+ exit_status = self._exit_status,
+ age = age,
+ )
+
+ @property
+ def name(self):
+ """
+ The name of the job.
+
+ @rtype: string
+ """
+ if self._name is None:
+ return self.cmd
+ return self._name
+
+ @property
+ def cmd(self):
+ """
+ The wrapped scripts name.
+
+ @rtype: string
+ """
+ return self._cmd[0]
+
+ @property
+ def args(self):
+ """
+ The wrapped scripts arguments.
+
+ @rtype: [string]
+ """
+ return self._cmd[1:]
+
+ @property
+ def start_time(self):
+ """
+ The start time of the script invocation.
+
+ @rtype: int() or None
+ """
+ if self._start_time is None:
+ return None
+ return int(self._start_time)
+
+ @property
+ def end_time(self):
+ """
+ The end time of the script invocation.
+
+ @rtype: int() or None
+ """
+ if self._end_time is None:
+ return None
+ return int(self._end_time)
+
+ @property
+ def duration_str(self):
+ """
+ Time spent executing job, as a human readable string.
+
+ @rtype: string
+ """
+ if self._end_time is None or self._start_time is None:
+ return 'NaN'
+ duration = self._end_time - self._start_time
+ return _time_to_str(duration)
+
+ @property
+ def exit_status(self):
+ """
+ The exit status of the script invocation.
+
+ @rtype: int() or None
+ """
+ return self._exit_status
+
+ @property
+ def pid(self):
+ """
+ The process ID of the script invocation.
+
+ @rtype: int() or None
+ """
+ return self._pid
+
+ @property
+ def filename(self):
+ """
+ The filename this job is stored in.
+
+ @rtype: string or None
+ """
+ return self._filename
+
+ @property
+ def output(self):
+ """
+ The output (STDOUT and STDERR) of the script invocation.
+
+ @rtype: [string]
+ """
+ if not self._output and self.output_filename:
+ f = open(self.output_filename, 'r')
+ self._output = f.read()
+ f.close()
+ return self._output
+
+ @property
+ def output_filename(self):
+ """
+ The name of the file holding the output (STDOUT and STDERR) of the script invocation.
+
+ @rtype: [string]
+ """
+ return self._output_filename
+
+ def run(self):
+ """
+ Run script, storing various aspects of the results.
+ """
+ self._start_time = time.time()
+ proc = subprocess.Popen(self._cmd,
+ cwd='/',
+ stdout=subprocess.PIPE,
+ stderr=subprocess.STDOUT,
+ close_fds=True,
+ )
+ (stdout, _stderr) = proc.communicate()
+ self._end_time = time.time()
+ self._output = stdout
+ self._exit_status = proc.returncode
+ self._pid = proc.pid
+
+ def save_to_file(self, datadir, logger, filename=None):
+ """
+ Create a record with the details of a script invocation.
+
+ @param datadir: Directory to keep records in
+ @param logger: logging logger
+ @param filename: Filename to use - default is reasonably constructed
+
+ @type datadir: string
+ @type logger: logging.logger
+ @type filename: string or None
+ """
+ if filename is None:
+ fn = ''
+ for x in self.name:
+ if x.isalnum():
+ fn += x
+ else:
+ fn += '_'
+ filename = '{!s}_{!s}_{!s}'.format(fn, self.start_time, self.pid)
+ fn = os.path.join(datadir, filename)
+ logger.debug("Saving job metadata to file {!r}.tmp".format(fn))
+ output_fn = fn + '_output'
+ f = open(fn + '.tmp', 'w')
+ data = {'name': self.name,
+ 'cmd': self._cmd,
+ 'start_time': self._start_time,
+ 'end_time': self._end_time,
+ 'pid': self.pid,
+ 'exit_status': self.exit_status,
+ 'version': 2,
+ }
+ if self._output:
+ data['output_filename'] = output_fn + '.data'
+ data['output_size'] = len(self._output)
+ f.write(json.dumps(data, indent = 4, sort_keys = True))
+ f.write('\n')
+ f.close()
+ os.rename(fn + '.tmp', fn + '.json')
+ self._filename = fn
+
+ if self._output:
+ logger.debug("Saving job output to file {!r}".format(output_fn))
+ f = open(output_fn + '.tmp', 'w')
+ f.write(self._output)
+ f.close()
+ os.rename(output_fn + '.tmp', output_fn + '.data')
+ self._output_filename = output_fn
+
+ def from_file(self, filename):
+ """
+ Initialize this Job instance with data loaded from a file (previously created with
+ `save_to_file()'.
+
+ @param filename: Filename to load data from
+ @type filename: string
+
+ @rtype: Job
+ """
+ f = open(filename, 'r')
+ data = json.loads(f.read(100 * 1024 * 1024))
+ f.close()
+ if data.get('version') == 1:
+ self._name = data.get('name')
+ for x in data['cmd']:
+ assert(isinstance(x, basestring))
+ self._cmd = data['cmd']
+ self._start_time = data['start_time']
+ self._end_time = data['end_time']
+ self._pid = data['pid']
+ self._exit_status = data['exit_status']
+ self._output = data['output']
+ self._output_filename = None
+ self._filename = filename
+ elif data.get('version') == 2:
+ self._name = data.get('name')
+ for x in data['cmd']:
+ assert(isinstance(x, basestring))
+ self._cmd = data['cmd']
+ self._start_time = data['start_time']
+ self._end_time = data['end_time']
+ self._pid = data['pid']
+ self._exit_status = data['exit_status']
+ self._output_filename = data.get('output_filename')
+ #self._output_size = data.get('output_size') # currently not used in scriptherder
+ self._filename = filename
+ else:
+ raise JobLoadError('Unknown version: {!r}'.format(data.get('version')), filename=filename)
+ return self
+
+
+class Check(object):
+ """
+ Conditions for the 'check' command. Loaded from file (one file per job name),
+ and used to check if a Job instance is OK or WARNING or ...
+ """
+
+ def __init__(self, filename, logger):
+ """
+ Load check criteria from a file.
+
+ Example file contents:
+
+ [check]
+ ok = exit_status=0, max_age=8h
+ warning = exit_status=0, max_age=24h
+
+ @param filename: INI file with check criterias for a specific job
+ @param logger: logging logger
+
+ @type filename: string
+ @type logger: logging.logger
+ """
+ self.logger = logger
+ self.config = ConfigParser.ConfigParser(_check_defaults)
+ if not self.config.read([filename]):
+ raise ScriptHerderError('Failed loading config file', filename)
+ _section = 'check'
+ self._ok_criteria = [x.strip() for x in self.config.get(_section, 'ok').split(',')]
+ self._warning_criteria = [x.strip() for x in self.config.get(_section, 'warning').split(',')]
+
+ def job_is_ok(self, job):
+ """
+ Evaluate a Job against the OK criterias for this check.
+
+ @type job: Job
+
+ @rtype: bool
+ """
+ res = True
+ for this in self._ok_criteria:
+ if not self._evaluate(this, job):
+ self.logger.debug("Job {!r} failed OK criteria {!r}".format(job, this))
+ res = False
+ self.logger.debug("{!r} is OK result: {!r}".format(job, res))
+ return res
+
+ def job_is_warning(self, job):
+ """
+ Evaluate a Job against the WARNING criterias for this check.
+
+ @type job: Job
+
+ @rtype: bool
+ """
+ res = True
+ for this in self._warning_criteria:
+ if not self._evaluate(this, job):
+ self.logger.debug("Job {!r} failed WARNING criteria {!r}".format(job, this))
+ res = False
+ self.logger.debug("{!r} is WARNING result: {!r}".format(job, res))
+ return res
+
+ def _evaluate(self, criteria, job):
+ """
+ The actual evaluation engine.
+
+ @param criteria: The criteria to test ('max_age=8h' for example)
+ @param job: The job
+
+ @type criteria: string
+ @type job: Job
+ """
+ (what, value) = criteria.split('=')
+ what.strip()
+ value.strip()
+ if what == 'exit_status':
+ value = int(value)
+ res = (job.exit_status == value)
+ self.logger.debug("Evaluate criteria {!r}: ({!r} == {!r}) {!r}".format(
+ criteria, job.exit_status, value, res))
+ return res
+ elif what == 'max_age':
+ value = _parse_time_value(value)
+ now = int(time.time())
+ res = (job.end_time > (now - value))
+ self.logger.debug("Evaluate criteria {!r}: ({!r} > ({!r} - {!r}) {!r}".format(
+ criteria, job.end_time, now, value, res))
+ return res
+ self.logger.debug("Evaluation of unknown criteria {!r}, defaulting to False".format(criteria))
+ return False
+
+
+class CheckStatus(object):
+ """
+ Aggregated status of job invocations for --mode check.
+
+ Attributes:
+
+ checks_ok: List of checks in OK state ([Job()]).
+ checks_warning: List of checks in WARNING state ([Job()]).
+ checks_critical: List of checks in CRITICAL state ([Job()]).
+ """
+
+ def __init__(self, args, logger):
+ """
+ @param args: Parsed command line arguments
+ @param logger: logging logger
+ """
+
+ self.checks_ok = []
+ self.checks_warning = []
+ self.checks_critical = []
+
+ self._jobs = _get_job_results(args, logger)
+ # group the jobs by their name
+ _by_name = {}
+ for this in self._jobs:
+ if this.name not in _by_name:
+ _by_name[this.name] = []
+ _by_name[this.name].append(this)
+ self._jobs_by_name = _by_name
+
+ self._job_count = len(_by_name)
+
+ self._check_running_jobs(args, logger)
+ if not args.cmd:
+ self._check_not_running(args, logger)
+
+ def _check_running_jobs(self, args, logger):
+ """
+ Look for job execution entrys (parsed into Job() instances), group them
+ per check name and determine the status. For each group, append status
+ to one of the three aggregate status lists of this object (checks_ok,
+ checks_warning or checks_critical).
+
+ @param args: Parsed command line arguments
+ @param logger: logging logger
+ """
+ # determine total check status based on all logged invocations of this job
+ for (name, jobs) in self._jobs_by_name.items():
+ # Load the evaluation criterias for this job
+ check_filename = os.path.join(args.checkdir, name + '.ini')
+ logger.debug("Loading check definition from {!r}".format(check_filename))
+ try:
+ check = Check(check_filename, logger)
+ except ScriptHerderError as exc:
+ logger.warning("Failed loading check: {!r}".format(exc), exc_info=True)
+ raise CheckLoadError('Failed loading check', filename = check_filename)
+
+ # Sort jobs, oldest first
+ jobs = sorted(jobs, key=lambda x: x.start_time)
+ logger.debug("Checking {!r}: {!r}".format(name, jobs))
+
+ jobs_ok = []
+ jobs_warning = []
+ jobs_critical = []
+ for job in jobs:
+ if check.job_is_ok(job):
+ jobs_ok.append(job)
+ elif check.job_is_warning(job):
+ jobs_warning.append(job)
+ else:
+ jobs_critical.append(job)
+
+ logger.debug("Raw status OK : {!r}".format(jobs_ok))
+ logger.debug("Raw status WARN : {!r}".format(jobs_warning))
+ logger.debug("Raw status CRITICAL: {!r}".format(jobs_critical))
+
+ # add most recent job status to the totals
+ if jobs_ok:
+ self.checks_ok.append(jobs_ok[-1])
+ elif jobs_warning:
+ self.checks_warning.append(jobs_warning[-1])
+ else:
+ self.checks_critical.append(jobs_critical[-1])
+
+ def _check_not_running(self, args, logger):
+ """
+ Look for job execution entrys (parsed into Job() instances), group them
+ per check name and determine the status. For each group, append status
+ to one of the three aggregate status lists of this object (checks_ok,
+ checks_warning or checks_critical).
+
+ @param args: Parsed command line arguments
+ @param logger: logging logger
+ """
+ files = [f for f in os.listdir(args.checkdir) if os.path.isfile(os.path.join(args.checkdir, f))]
+ for this in files:
+ if not this.endswith('.ini'):
+ continue
+ filename = os.path.join(args.checkdir, this)
+ logger.debug("Loading check definition from {!r}".format(filename))
+ try:
+ # validate check loads
+ Check(filename, logger)
+ except ValueError as exc:
+ logger.warning("Failed loading check: {!r}".format(exc), exc_info=True)
+ raise CheckLoadError(filename = filename)
+ name = this[:-4] # remove the '.ini' suffix
+ if name not in self._jobs_by_name:
+ logger.debug('Check {!r} (filename {!r}) not found in jobs'.format(name, filename))
+ job = Job(name=name)
+ self.checks_critical.append(job)
+ self._job_count += 1
+ else:
+ logger.debug('Check {!r} has {!r} logged results'.format(name, len(self._jobs_by_name[name])))
+
+ def num_jobs(self):
+ """
+ Return number of jobs processed. This is number of different jobs running + not running.
+
+ @rtype: int
+ """
+ return self._job_count
+
+
+def job_from_file(filename):
+ """
+ Recreate Job() instance from saved file.
+
+ @param filename: Filename to load script invocation details from
+
+ @type filename: string
+ @rtype: Job
+ """
+ job = Job('')
+ return job.from_file(filename)
+
+
+def parse_args(defaults):
+ """
+ Parse the command line arguments
+
+ @param defaults: Argument defaults
+
+ @type defaults: dict
+ """
+ parser = argparse.ArgumentParser(description = 'Script herder script',
+ add_help = True,
+ formatter_class = argparse.ArgumentDefaultsHelpFormatter,
+ )
+
+ parser.add_argument('--debug',
+ dest = 'debug',
+ action = 'store_true', default = defaults['debug'],
+ help = 'Enable debug operation',
+ )
+ parser.add_argument('--syslog',
+ dest = 'syslog',
+ action = 'store_true', default = defaults['syslog'],
+ help = 'Enable syslog output',
+ )
+ parser.add_argument('--mode',
+ dest = 'mode',
+ choices = ['wrap', 'ls', 'check'], default = defaults['mode'],
+ help = 'What mode to run in',
+ )
+ parser.add_argument('-d', '--datadir',
+ dest = 'datadir',
+ default = defaults['datadir'],
+ help = 'Data directory',
+ metavar = 'PATH',
+ )
+ parser.add_argument('--checkdir',
+ dest = 'checkdir',
+ default = defaults['checkdir'],
+ help = 'Check definitions directory',
+ metavar = 'PATH',
+ )
+ parser.add_argument('-N', '--name',
+ dest = 'name',
+ help = 'Job name',
+ metavar = 'NAME',
+ )
+
+ parser.add_argument('cmd',
+ nargs = '*', default = [],
+ help = 'Script command',
+ metavar = 'CMD',
+ )
+
+ args = parser.parse_args()
+
+ return args
+
+
+def mode_wrap(args, logger):
+ """
+ Execute a job and save result state in a file.
+
+ @param args: Parsed command line arguments
+ @param logger: logging logger
+ """
+ job = Job(args.name, cmd=args.cmd)
+ logger.debug("Invoking '{!s}'".format(''.join(args.cmd)))
+ job.run()
+ logger.debug("Finished, exit status {!r}".format(job.exit_status))
+ logger.debug("Job output:\n{!s}".format(job.output))
+ job.save_to_file(args.datadir, logger)
+ return True
+
+
+def mode_ls(args, logger):
+ """
+ List all the saved states for jobs.
+
+ @param args: Parsed command line arguments
+ @param logger: logging logger
+ """
+ jobs = _get_job_results(args, logger)
+ for this in sorted(jobs, key=lambda x: x.start_time):
+ start = time.strftime('%Y-%m-%d %X', time.localtime(this.start_time))
+ print('{start} {duration:>6} exit={exit} name={name} {filename}'.format(
+ start = start,
+ duration = this.duration_str,
+ exit = this.exit_status,
+ name = this.name,
+ filename = this.filename,
+ ))
+ return True
+
+
+def mode_check(args, logger):
+ """
+ Evaluate the stored states for either a specific job, or all jobs.
+
+ Return Nagios compatible output (scriptherder --mode check is intended to
+ run using Nagios NRPE or similar).
+
+ @param args: Parsed command line arguments
+ @param logger: logging logger
+ """
+
+ try:
+ status = CheckStatus(args, logger)
+ except CheckLoadError as exc:
+ print("UNKNOWN: Failed loading check from file '{!s}' ({!s})".format(exc.filename, exc.reason))
+ return exit_status['UNKNOWN']
+
+ if args.cmd:
+ # Single job check requested, output detailed information
+ if status.checks_ok:
+ print('OK: {!s}'.format(status.checks_ok[-1]))
+ return exit_status['OK']
+ if status.checks_warning:
+ print('WARNING: {!s}'.format(status.checks_warning[-1]))
+ return exit_status['WARNING']
+ if status.checks_critical:
+ print('CRITICAL: {!s}'.format(status.checks_critical[-1]))
+ return exit_status['CRITICAL']
+ print "UNKNOWN - no jobs found for {!r}?".format(args.cmd)
+ return exit_status['UNKNOWN']
+
+ # When looking at multiple jobs at once, logic gets a bit reversed - if ANY
+ # job invocation is CRITICAL/WARNING, the aggregate message given to
+ # Nagios will have to be a failure.
+ if status.checks_critical:
+ print('CRITICAL: {!s}'.format(
+ _status_summary(status.num_jobs(), status.checks_critical)))
+ return exit_status['CRITICAL']
+ if status.checks_warning:
+ print('WARNING: {!s}'.format(
+ _status_summary(status.num_jobs(), status.checks_warning)))
+ return exit_status['WARNING']
+ if status.checks_ok:
+ print('OK: {!s}'.format(
+ _status_summary(status.num_jobs(), status.checks_ok)))
+ return exit_status['OK']
+ print "UNKNOWN - no jobs found?"
+ return exit_status['UNKNOWN']
+
+
+def _status_summary(num_jobs, failed):
+ """
+ String format routine used in output of checks status.
+ """
+ fmt = '1 job in this state: {summary}'
+ if len(failed) == 1:
+ fmt = '{jobs}/{num_jobs} job in this state: {summary}'
+
+ summary = ', '.join(sorted([str(x.status_summary()) for x in failed]))
+ return fmt.format(jobs = len(failed),
+ num_jobs = num_jobs,
+ summary = summary,
+ )
+
+
+def _get_job_results(args, logger):
+ """
+ Load all jobs matching any specified name on the command line.
+
+ @param args: Parsed command line arguments
+ @param logger: logging logger
+
+ @rtype: [Job]
+ """
+ files = [f for f in os.listdir(args.datadir) if os.path.isfile(os.path.join(args.datadir, f))]
+ jobs = []
+ for this in files:
+ if not this.endswith('.json'):
+ continue
+ filename = os.path.join(args.datadir, this)
+ try:
+ job = job_from_file(filename)
+ except JobLoadError as exc:
+ logger.warning("Failed loading job file '{!s}' ({!s})".format(exc.filename, exc.reason))
+ if args.cmd:
+ if args.cmd[0] != job.name:
+ logger.debug("Skipping '{!s}' not matching '{!s}' (file {!s})".format(job.name, args.cmd[0], filename))
+ continue
+ jobs.append(job)
+ return jobs
+
+
+def _parse_time_value(value):
+ """
+ Parse time period strings such as 1d. A lone number is considered number of seconds.
+
+ Return parsed value as number of seconds.
+
+ @param value: Value to parse
+ @type value: string
+ @rtype: int
+ """
+ match = re.match('^(\d+)([hmsd]*)$', value)
+ if match:
+ num = int(match.group(1))
+ what = match.group(2)
+ if what == 'm':
+ return num * 60
+ if what == 'h':
+ return num * 3600
+ if what == 'd':
+ return num * 86400
+ return num
+
+
+def _time_to_str(value):
+ """
+ Format number of seconds to short readable string.
+
+ @type value: float or int
+
+ @rtype: string
+ """
+ if value < 1:
+ # milliseconds
+ return '{:0.3f}ms'.format(value * 1000)
+ if value < 60:
+ return '{!s}s'.format(int(value))
+ if value < 3600:
+ return '{!s}m'.format(int(value))
+ if value < 86400:
+ return '{!s}h'.format(int(value / 3600))
+ days = int(value / 86400)
+ return '{!s}d{!s}h'.format(days, int((value % 86400) / 3600))
+
+
+def main(myname = 'scriptherder', args = None, logger = None, defaults=_defaults):
+ """
+ Main entry point for either wrapping a script, or checking the status of it.
+
+ @param myname: String, used for logging
+ @param args: Command line arguments
+ @param logger: logging logger
+ @param defaults: Default command line arguments
+
+ @type myname: string
+ @type args: None or [string]
+ @type logger: logging.logger
+ @type defaults: dict
+ """
+ if not args:
+ args = parse_args(defaults)
+
+ # initialize various components
+ if not logger:
+ logger = logging.getLogger(myname)
+ if args.debug:
+ logger.setLevel(logging.DEBUG)
+ # log to stderr when debugging
+ formatter = logging.Formatter('%(asctime)s %(name)s %(threadName)s: %(levelname)s %(message)s')
+ stream_h = logging.StreamHandler(sys.stderr)
+ stream_h.setFormatter(formatter)
+ logger.addHandler(stream_h)
+ if args.syslog:
+ syslog_h = logging.handlers.SysLogHandler()
+ formatter = logging.Formatter('%(name)s: %(levelname)s %(message)s')
+ syslog_h.setFormatter(formatter)
+ logger.addHandler(syslog_h)
+
+ if args.name and args.mode != 'wrap':
+ logger.error('Argument --name only applicable for --mode wrap')
+ return False
+
+ if args.mode == 'wrap':
+ return mode_wrap(args, logger)
+ elif args.mode == 'ls':
+ return mode_ls(args, logger)
+ elif args.mode == 'check':
+ return mode_check(args, logger)
+ else:
+ logger.error("Invalid mode {!r}".format(args.mode))
+ return False
+
+if __name__ == '__main__':
+ try:
+ progname = os.path.basename(sys.argv[0])
+ res = main(progname)
+ if isinstance(res, int):
+ sys.exit(res)
+ if res:
+ sys.exit(0)
+ sys.exit(1)
+ except KeyboardInterrupt:
+ sys.exit(0)
diff --git a/global/post-tasks.d/015cosmos-trust b/global/post-tasks.d/015cosmos-trust
index 447d875..5c3359b 100755
--- a/global/post-tasks.d/015cosmos-trust
+++ b/global/post-tasks.d/015cosmos-trust
@@ -4,12 +4,15 @@ if [ -z "$COSMOS_KEYS" ]; then
COSMOS_KEYS=/etc/cosmos/keys
fi
+# Install new keys discovered in the $COSMOS_KEYS directory
for k in $COSMOS_KEYS/*.pub; do
fp=`cosmos gpg --with-colons --with-fingerprint < $k| awk -F: '$1 == "pub" {print $5}'`
- cosmos gpg --with-colons --fingerprint | grep -q ":$fp:" || cosmos gpg --import < $k
+ # The removal of any ^pub:e: entrys means to ignore expired keys - thereby importing them again.
+ cosmos gpg --with-colons --fingerprint | grep -v "^pub:e:" | grep -q ":$fp:" || cosmos gpg --import < $k
done
-for fp in `cosmos gpg --with-colons --fingerprint | awk -F: '$1 == "pub" {print $5}'`; do
+# Delete keys no longer present in $COSMOS_KEYS directory
+for fp in `cosmos gpg --with-colons --fingerprint | awk -F: '$1 == "pub" {print $5 }'`; do
seen="no"
for k in $COSMOS_KEYS/*.pub; do
cosmos gpg --with-colons --with-fingerprint < $k | grep -q ":$fp:" && seen="yes"
diff --git a/global/pre-tasks.d/020common-tools b/global/pre-tasks.d/020common-tools
index eaca6ea..eef7654 100755
--- a/global/pre-tasks.d/020common-tools
+++ b/global/pre-tasks.d/020common-tools
@@ -5,10 +5,10 @@
set -e
-stamp="$COSMOS_BASE/stamps/common-tools-v01.stamp"
+stamp="$COSMOS_BASE/stamps/common-tools-v02.stamp"
if ! test -f $stamp; then
- apt-get -y install vim traceroute tcpdump molly-guard less rsync git-core unattended-upgrades ntp
+ apt-get -y install vim traceroute tcpdump molly-guard less rsync git-core unattended-upgrades ntp wget
update-alternatives --set editor /usr/bin/vim.basic
mkdir -p `dirname $stamp`