1092 Commits

Author SHA1 Message Date
fd9636441b Fix URL matcher for substr (vs strfry)
I wasn't able to reach https://nostr.kosmos.org/nodeinfo/2.1, which I
stumbled upon in an upstream PR. This one only matches exactly the paths
that substr is serving.

Tested/running in production.
2025-11-17 10:47:50 +01:00
aade479e5b Remove obsolete recipe 2025-11-12 13:47:00 +01:00
a3bb927f95 Merge pull request 'Document script that creates VMs' (#604) from feature/244-document_creating_vm into master
Reviewed-on: #604
Reviewed-by: Râu Cao <raucao@kosmos.org>
2025-10-30 16:32:02 +00:00
Greg Karekinian
5b53635f1a Document script that creates VMs
Closes #244
2025-10-30 16:18:59 +01:00
ea087b1e3e Add new Garage nodes 2025-10-24 18:20:06 +02:00
9817589a92 Merge pull request 'Upgrade bitcoind to 30.0' (#603) from chore/upgrade_bitcoind into master
Reviewed-on: #603
2025-10-24 16:18:35 +00:00
d632cafd9c Upgrade bitcoind to 30.0
Also disables building the tests, which eats up more than 5GB of disk space.
2025-10-24 18:16:00 +02:00
87b03d3936 Merge pull request 'Upgrade ejabberd from 23.10 to 25.08' (#602) from chore/upgrade_ejabberd into master
Reviewed-on: #602
Reviewed-by: Greg <greg@kosmos.org>
2025-09-21 11:03:39 +00:00
ae3df992e4 Update node info 2025-09-21 12:45:54 +02:00
2ea5b30224 Upgrade ejabberd to 25.08
Co-authored-by: Greg Karékinian <greg@karekinian.com>
2025-09-21 12:45:20 +02:00
4ef06cb4b7 Merge pull request 'Modernize kosmos-mediawiki cookbook' (#600) from feature/500-chef_upgrade_mediawiki into master
Reviewed-on: #600
Reviewed-by: Râu Cao <raucao@kosmos.org>
2025-09-17 06:41:30 +00:00
73e8a2c413 Fix random port being used for EPMD node
Fixes not being able to join a cluster from other nodes, because the
ports are not within the firewall range of allowed ports.

Co-authored-by: Greg Karékinian <greg@karekinian.com>
2025-09-16 17:48:09 +02:00
ea4713c654 Move firewall config
Co-authored-by: Greg Karékinian <greg@karekinian.com>
2025-09-16 17:47:41 +02:00
dde29c4a6c Upgrade ejabberd to 24.02
Co-authored-by: Greg Karékinian <greg@karekinian.com>
2025-09-16 17:01:43 +02:00
03f1d16998 Update SQL Schema automatically on ejabberd upgrades
Co-authored-by: Greg Karékinian <greg@karekinian.com>
2025-09-16 16:07:10 +02:00
6534086df2 Update logger configuration
* Remove unused/deprecated options
* Hide user IPs
* Set level to "info"

Co-authored-by: Greg Karékinian <greg@karekinian.com>
2025-09-16 16:07:00 +02:00
dbf0e50abf Merge pull request 'Enable unattended-upgrades' (#598) from bugfix/499-unattended_upgrades into master
Reviewed-on: #598
Reviewed-by: Râu Cao <raucao@kosmos.org>
2025-09-10 08:47:52 +00:00
Greg Karekinian
a828d92185 Fix Ruby style
This is using Standard Ruby
2025-09-09 15:29:17 +02:00
Greg Karekinian
0fe6d0bd06 Use the "new" way to set up sasl in the postfix cookbook 2025-09-09 15:28:20 +02:00
Greg Karekinian
9712697569 Fork the postfix cookbook to work around a bug
I ran into the issue described in
https://github.com/sous-chefs/postfix/issues/148
and couldn't figure out a way to work around it without forking it.
2025-09-09 14:54:06 +02:00
Greg Karekinian
d32f276b42 Update akkounts-1 node file after Chef run 2025-09-09 10:13:26 +02:00
Greg Karekinian
cc40c0db19 Configure unattended-upgrades for ESM 2025-09-09 10:12:35 +02:00
41339c1040 Add doc for Mastodon maintenance 2025-07-27 09:17:01 +02:00
Greg Karekinian
0cae8dca69 Set the email sender in unattended-upgrades config
Mailgun was rejecting the email as it did not have a valid sender
(the default, which is something like root@akkounts-1). Unattended
upgrades have been working properly, now we will start getting emails
next time an upgrade is done on akkounts-1.
2025-07-15 10:12:02 +02:00
Greg Karekinian
78e5f810b7 Update node file after Chef upgrade
I ended up upgrading Chef manually on the server as I couldn't using
knife-zero

`curl https://omnitruck.chef.io/install.sh | sudo bash -s -- -P chef -v 18.7.10`
2025-07-09 15:42:30 +02:00
Greg Karekinian
443910c7a2 Modernize kosmos-mediawiki
This has been done with the help of `cookstyle` which is very useful to
learn about breaking changes and updates in Chef.

On wiki-1 I managed to update Chef up to 17.10.163. For version 18 I ran
into an issue with the omnibus installer returning a 404

Refs #500
2025-07-09 11:24:14 +02:00
8052c67d23 Merge pull request 'Opt-out of dotnet telemetry for btcpay' (#599) from feature/441-optout_dotnet_telemetry into master
Reviewed-on: #599
Reviewed-by: Râu Cao <raucao@kosmos.org>
2025-06-25 10:01:58 +00:00
Greg Karekinian
cd269dca03 Also disable dotnet telemetry during the build 2025-06-25 10:35:07 +02:00
Greg Karekinian
7e47c879a1 Remove unused variable 2025-06-25 10:18:57 +02:00
Greg Karekinian
2b49cb1b2b Restart the btcpay service on config changes
It cannot handle reloads
2025-06-25 10:13:25 +02:00
Greg Karekinian
89fa3ede9e Remove the condition on the postgresql
Also move back the environment variable definitions to the hash
2025-06-25 09:51:35 +02:00
Greg Karekinian
efb032fffa Opt-out of dotnet telemetry for btcpay
This is done by setting an environment variable in the systemd unit

Fixes #441
2025-06-24 16:53:59 +02:00
Greg Karekinian
68df49037c Merge remote-tracking branch 'origin/master' into bugfix/499-unattended_upgrades 2025-06-16 16:05:35 +02:00
364adec80f Upgrade LND to 0.19.1 2025-06-16 17:57:30 +04:00
092a2edb3c Update node info 2025-06-16 17:57:04 +04:00
63d0b68c36 Upgrade Deno 2025-06-02 10:53:38 +04:00
3adb2a1aee Adapt strfry config to cookbook changes, increase allowed event size 2025-06-01 20:06:47 +04:00
9cff1fb68b Update node info 2025-06-01 20:06:32 +04:00
Greg Karekinian
773950b9a5 Always send an email on unattended-upgrades 2025-05-31 17:00:07 +02:00
Greg Karekinian
f39a1ed250 Enable unattended-upgrades
We were missing a positive value on
`["apt"]["unattended_upgrades"]["enable"]` to enable it.

Refs #499
2025-05-31 16:44:01 +02:00
3c51ff261e Merge pull request 'Compile Gitea from source, apply our LDAP fixes' (#596) from feature/compile_gitea_from_source into master
Reviewed-on: #596
Reviewed-by: Greg <greg@kosmos.org>
2025-05-31 12:26:28 +00:00
0c62ff6c84 Improve Gitea logging 2025-05-31 15:29:18 +04:00
2c3b381755 Update Gitea stable version 2025-05-31 15:29:03 +04:00
3492bec627 Use Gitea from source 2025-05-31 15:28:33 +04:00
00f4c8bd31 Optionally compile Gitea from source 2025-05-31 15:27:21 +04:00
301596500d Update node info 2025-05-28 10:18:53 +04:00
8a2bfb6b18 Fix attribute
Was moved to a new name since the recipe was created
2025-05-23 14:44:04 +04:00
846bf3483a Update node info 2025-05-23 14:43:40 +04:00
e3ef1dc3b3 Merge pull request 'Upgrade Bitcoin Core, NBXplorer, BTCPay Server' (#595) from chore/upgrade_bitcoin_software into master
Reviewed-on: #595
Reviewed-by: Greg <greg@noreply.kosmos.org>
2025-05-22 12:32:25 +00:00
2089999cc8 Upgrade bitcoind to 29.0, switch to cmake 2025-05-22 15:52:22 +04:00
a4aa29de0c Upgrade NBXplorer, BTCPay Server 2025-05-22 15:50:27 +04:00
98be234a4f Merge pull request 'Configure maximum size and timespan of journald logs' (#594) from feature/506-journald_logs_config into master
Reviewed-on: #594
Reviewed-by: Râu Cao <raucao@kosmos.org>
2025-05-21 12:12:57 +00:00
Greg Karekinian
7dc4f674a0 Use the systemd unit instead of an execute resource
Also extract the attributes so it is possible to override them.
2025-05-21 13:40:12 +02:00
Greg Karekinian
49b636305e Update mastodon-3 node file after Chef run 2025-05-21 11:36:15 +02:00
Greg Karekinian
3e2ee30334 Configure maximum size and timespan of journald logs
Closes #506
2025-05-21 11:36:15 +02:00
d00072ee5a Merge pull request 'Delete old Mastodon media cache every day' (#593) from feature/533-delete_old_mastodon_cached_media into master
Reviewed-on: #593
Reviewed-by: Râu Cao <raucao@kosmos.org>
2025-05-17 07:06:35 +00:00
14687558fe Minor cleanup 2025-05-17 10:55:06 +04:00
de7cc69505 Allow more users per room 2025-05-17 10:42:41 +04:00
Greg Karekinian
b01315f998 Delete old Mastodon media cache every day
This is done using a systemd timer

Closes #533
2025-05-16 19:12:47 +02:00
160134bd86 Allow more ejabberd API calls from akkounts 2025-05-16 15:17:43 +04:00
766030d716 Merge pull request 'Adapt akkounts recipes for config changes' (#592) from chore/rails_deployment into master
Reviewed-on: #592
Reviewed-by: Greg <greg@noreply.kosmos.org>
2025-05-06 17:11:24 +00:00
3c436bb9f1 Configure LDAP for akkounts, add more Rails credentials 2025-05-06 19:41:54 +04:00
d029d90214 Generate postgres user/db for akkounts, use credentials from env
Co-authored-by: Greg Karékinian <greg@karekinian.com>
2025-05-06 15:49:43 +04:00
f8e5fd2f3e Fix missing dir for Mastodon maintenance file 2025-04-29 17:53:05 +04:00
cab766c806 Update node.js, install bun, for Rails 8.0 upgrade 2025-04-29 17:51:53 +04:00
5777a45f0a Fix/improve ejabberd cert renewals 2025-04-22 17:28:44 +04:00
f23c37312e Update deno cookbook 2025-04-18 16:21:07 +04:00
cf1ef4f2f4 Merge pull request 'Upgrade Gitea, disable downloads of repo archives' (#588) from chore/upgrade_gitea into master
Reviewed-on: #588
2025-04-09 13:28:28 +00:00
f65256d229 Disable downloads of repo archives 2025-04-09 17:25:41 +04:00
2cc0ee5b8a Upgrade Gitea to 1.23.7 2025-04-09 17:25:17 +04:00
10e8ba5569 Add missing CORS headers to host-meta.json
Otherwise XMPP Web clients cannot fetch the Bosh and WS endpoint info
2025-04-08 00:10:29 +04:00
6c35a20b89 Merge pull request 'Upgrade rskj to 7.0.0' (#587) from chore/upgrade_rskj into master
Reviewed-on: #587
2025-04-05 09:14:25 +00:00
e3d9a50f09 Upgrade Gitea to 1.23.6 2025-04-04 18:53:46 +04:00
c4652ca2eb Upgrade rskj to 7.0.0 2025-04-04 16:59:11 +04:00
56440bfd89 Merge pull request 'Upgrade nbxplorer, BTCPay Server' (#586) from chore/upgrade_btcpay into master
Reviewed-on: #586
2025-03-25 10:08:06 +00:00
abee2407bf Upgrade nbxplorer, BTCPay Server 2025-03-25 14:03:34 +04:00
0cef08fb7b Merge pull request 'Update Gandi API token' (#585) from chore/update_gandi_token into master
Reviewed-on: #585
2025-03-19 14:02:49 +00:00
f246f63594 Update Gandi API token
For certbot renewals. Also set resource to sensitive in ejabberd recipe.

Co-authored-by: Greg Karékinian <greg@karekinian.com>
2025-03-19 18:01:50 +04:00
2dee25bf23 Update node info 2025-03-19 18:00:07 +04:00
a28d31b415 Upgrade Gitea to 1.23.5 2025-03-05 14:09:03 +04:00
0bf50bce2e Merge pull request 'Fix postgres running out of available connection slots' (#584) from bugfix/gitea_db_connections into master
Reviewed-on: #584
2025-03-05 10:03:51 +00:00
6be99aa3de Cap maximum open database connections
Fixes Gitea opening too many connections, which can impact other apps
trying to connect as well.
2025-03-05 13:53:33 +04:00
90bf66ada9 Upgrade Gitea to 1.23.4 2025-02-21 10:12:27 +04:00
32cfd6401f Upgrade LND to 0.18.5
Urgent security upgrade
2025-02-19 14:19:10 +04:00
1124f25069 Upgrade Gitea to 1.23.3 2025-02-12 11:51:14 +04:00
f34c7ecd9b Merge pull request 'Publish daily BTC price in public remoteStorage' (#581) from feature/btc-rate-tracker into master
Reviewed-on: #581
Reviewed-by: Greg <greg@noreply.kosmos.org>
2025-01-23 13:28:33 +00:00
8d149a475d Merge pull request 'Upgrade Gitea to 1.23.1' (#582) from chore/upgrade_gitea into master
Reviewed-on: #582
2025-01-22 14:41:19 +00:00
905a67475b Upgrade Gitea to 1.23.1 2025-01-22 09:36:33 -05:00
8251fa83ce Merge pull request 'Deploy substr' (#579) from feature/substr into master
Reviewed-on: #579
2025-01-22 14:27:02 +00:00
0fa61a585e DRY up code, add GBP rates 2025-01-17 14:52:28 -05:00
89f1790afc Publish daily BTC price in public remoteStorage 2025-01-17 10:42:09 -05:00
72ac8c6a84 Update akkounts credentials 2025-01-17 09:17:43 -05:00
b1bb5d0625 Use default value for STUN credentials lifetime 2025-01-14 15:30:42 -05:00
b470110fd4 Upgrade Gitea to 1.22.6 2024-12-16 12:10:08 +04:00
31b7ff9217 Upgrade Gitea to 1.22.5 2024-12-12 18:32:58 +04:00
d90a374811 Remove outdated flag from certbot command 2024-12-12 18:32:26 +04:00
12cd14fff5 Deploy new postgres primary 2024-12-12 18:31:54 +04:00
b67d91077d Remove old garage nodes 2024-12-12 18:30:16 +04:00
070badfeb3 Add postgres replica bootstrap example 2024-12-12 18:29:16 +04:00
4ce39738fd Allow larger bodies for Gitea file uploads
Needed for uploading larger packages to the registry
2024-12-09 21:19:39 +04:00
d35e57b90e Deploy substr 2024-12-09 21:19:13 +04:00
2d8a1cebb1 Update node info 2024-12-09 20:44:18 +04:00
c8160e38c8 Turn known pubkeys into object with usernames 2024-12-09 18:21:55 +04:00
67cd89b7b8 Merge pull request 'Fix TLS cert updates for kosmos.chat' (#578) from chore/fix_cert_updates_kosmos-chat into master
Reviewed-on: #578
2024-12-09 14:21:05 +00:00
e4112a3626 Fix TLS cert updates for kosmos.chat
Some recipes weren't updated for the proxy validation yet. Needed to
split the ejabberd cert in two, so it can do normal validation on
`.org` and proxy validation on `.chat`.
2024-12-09 18:17:10 +04:00
89813465b2 Merge pull request 'Upgrade Mastodon to 4.3' (#577) from chore/upgrade_mastodon into master
Reviewed-on: #577
2024-12-09 14:14:35 +00:00
6106e627e2 Upgrade Mastodon to 4.3
Co-authored-by: Greg Karékinian <greg@karekinian.com>
2024-12-09 18:12:45 +04:00
d8baa41c14 Add new node configs 2024-12-09 18:11:51 +04:00
8405b8df52 Merge pull request 'Upgrade lndhub.go to 1.0.2, add service fee config' (#576) from chore/upgrade_lndhub into master
Reviewed-on: #576
Reviewed-by: Greg <greg@noreply.kosmos.org>
2024-10-20 19:27:19 +00:00
775f2275bb Upgrade Gitea to 1.22.3 2024-10-19 14:42:11 +02:00
b4019b224b Upgrade lndhub.go to 1.0.2, add service fee config
Co-authored-by: Michael Bumann <hello@michaelbumann.com>
2024-10-18 12:36:41 +02:00
52841d8c53 Add WKD endpoint to website nginx conf 2024-10-17 11:58:53 +02:00
b9b97d5056 Fix mail server VM backups 2024-10-16 12:48:08 +02:00
e5448aa85c Merge pull request 'Upgrade strfry, add new Kosmos profile/pubkey, relay icon' (#575) from chore/upgrade_strfry into master
Reviewed-on: #575
2024-10-16 10:44:47 +00:00
4d1125ac2b Upgrade strfry to 1.0.1
Also set up and use a new Kosmos pubkey/profile and add a relay icon
2024-10-16 12:42:49 +02:00
3853f94ae0 Use new proxy domain for ejabberd cert 2024-10-16 12:40:10 +02:00
d1097c7688 Fix and improve nginx redirects, akkounts headers 2024-10-16 12:39:34 +02:00
7949fd067c Add IPv6 support for nostr.kosmos.org 2024-10-16 12:37:47 +02:00
0726e58f7c Update ejabberd LDAP filter for new akkounts release 2024-10-16 12:36:30 +02:00
fe581c348a Fix bookmarks disappearing for XMPP users
The limit for PEP nodes was ridiculously low. No idea why, but it means
users were only able to save 10 items (e.g. channel bookmarks) at once.
2024-10-16 12:34:31 +02:00
af62078960 Update node info 2024-10-16 12:34:17 +02:00
9b4deff91e Remove cln from bitcoin-2 node 2024-10-16 12:34:01 +02:00
0944bc5266 Merge pull request 'Migrate S3 backups from AWS, fix automatic cleanups' (#574) from chore/move_fix_s3_backups into master
Reviewed-on: #574
2024-10-16 10:33:24 +00:00
eb06926606 Migrate S3 backups from AWS, fix automatic cleanups
The cleanups were broken in that every single archive was also copied to
a shared folder and never deleted from there.

Co-authored-by: Greg Karékinian <greg@karekinian.com>
2024-10-16 12:31:51 +02:00
15096ca17b Merge pull request 'Bitcoin-related software upgrades' (#573) from chore/bitcoin_upgrades into master
Reviewed-on: #573
2024-10-16 10:25:53 +00:00
3551b71154 Add sensitive attribute to resource with credentials 2024-10-16 12:23:38 +02:00
752bb74663 Remove boltz service and RTL integration
We use peerswap these days, and the build process for boltz was made
much more complicated at some point. Not worth upgrading for us.
2024-10-16 12:23:38 +02:00
c64526a944 Upgrade RTL to v0.15.2
Need to use `npm install --force` due to a dependency issue
2024-10-16 12:23:38 +02:00
da242d4817 Upgrade LND to 0.18.3 2024-10-16 12:23:29 +02:00
0af4bc1d0d Upgrade bitcoind to 28.0
Requires a newer C++ compiler
2024-10-16 11:28:13 +02:00
c9f5a745a3 Merge pull request 'Fix Mastodon signup/password/confirmation links' (#570) from chore/562-mastodon_login_urls into master
Reviewed-on: #570
Reviewed-by: Greg <greg@noreply.kosmos.org>
2024-08-23 14:18:12 +00:00
d935b99d7d Fix Mastodon signup/password/confirmation links
Adds ENV vars for our custom fix in b916182bc1

fixes #562
2024-08-22 21:51:49 +02:00
d048bbb297 Merge pull request 'Upgrade Gitea to 1.22.1' (#568) from chore/upgrade_gitea into master
Reviewed-on: #568
2024-08-10 11:45:39 +00:00
61bd121709 Upgrade Gitea to 1.22.1 2024-08-10 13:44:39 +02:00
ec9b912e45 Merge pull request 'Configure nginx default vhost, add specific redirects for some domains' (#565) from chore/nginx_redirects into master
Reviewed-on: #565
2024-08-09 12:44:29 +00:00
d53ba42a1d Make kosmos.org the default nginx vhost 2024-08-04 16:51:57 +02:00
a99f7f7574 Add config for accounts .well-known proxyying 2024-08-04 16:51:18 +02:00
1c8ee14bb3 Add HTTP redirects for kosmos.chat and kosmos.cash 2024-08-04 16:49:20 +02:00
cdedf49be3 Merge pull request 'Fix download URLs for Mastodon exports/archives' (#564) from bugfix/mastodon_archive_download_urls into master
Reviewed-on: #564
2024-08-04 14:46:26 +00:00
5e727ec279 Fix download URLs for Mastodon exports/archives
See https://github.com/mastodon/mastodon/issues/24380
2024-08-04 14:55:22 +02:00
9d928298d2 Fix Gitea user/repo avatar URLs in certain situations
I encountered a CORS proxy which somehow ended up with http://_gitea_web
URLs.
2024-07-10 11:36:07 +02:00
1174661b46 Use proxy domain for RS Discourse ACME challenge 2024-07-08 20:31:46 +02:00
2dff7cf850 Merge pull request 'Add new service: nostr.kosmos.org (members-only nostr relay)' (#559) from feature/strfry into master
Reviewed-on: #559
Reviewed-by: Greg <greg@noreply.kosmos.org>
2024-07-05 07:33:40 +00:00
232360efba Remove commented code 2024-07-03 09:23:13 +02:00
8b8e8f3438 Move strfry extras into their own directory 2024-07-03 09:22:50 +02:00
522c213b09 Add Deno lockfile 2024-06-20 18:16:27 +02:00
80eddfbf56 Configure strfry whitelist
Allow akkounts pubkey to publish to our own relay
2024-06-20 15:38:27 +02:00
7e664723a1 Configure akkounts nostr relay URL in production 2024-06-20 15:04:17 +02:00
f5961af7fe Create/deploy strfry VM 2024-06-11 23:17:33 +02:00
d1301dad3e Add, configure, deploy strfry policies 2024-06-11 23:12:22 +02:00
42c46a5645 Deploy strfry reverse proxy 2024-06-11 23:10:24 +02:00
5be9081613 Header name has to be all lowercase in strfry config 2024-06-11 23:09:49 +02:00
1649d03665 Update strfry cookbook 2024-06-11 23:09:48 +02:00
b9a3910364 Update strfry cookbook 2024-06-11 23:09:48 +02:00
9835b85181 Fall back to default port for strfry proxy
When we don't override it elsewhere
2024-06-11 23:09:48 +02:00
dbccd9d2bf Add kosmos_strfry cookbook, configs 2024-06-11 23:09:48 +02:00
1a5f312699 Add strfry cookbook 2024-06-11 23:09:48 +02:00
f843a31e03 Merge pull request 'Improve mail server TLS certificate management' (#556) from chore/mail_server_cert into master
Reviewed-on: #556
Reviewed-by: Greg <greg@noreply.kosmos.org>
2024-06-05 14:49:01 +00:00
ff313525c8 Reload postfix and dovecot on cert renewal
closes #552

Co-authored-by: Greg Karékinian <greg@karekinian.com>
2024-06-05 16:44:18 +02:00
cfb379741e Add imap and smtp subdomains to mail server cert
closes #543

Co-authored-by: Greg Karékinian <greg@karekinian.com>
2024-06-05 15:55:29 +02:00
0c29fad404 Remove superfluous license header
Co-authored-by: Greg Karékinian <greg@karekinian.com>
2024-06-05 15:50:09 +02:00
416935d8b5 Merge pull request 'Upgrade Gitea to 1.22' (#555) from chore/upgrade_gitea into master
Reviewed-on: #555
2024-06-02 21:18:07 +00:00
2b6f81c5d6 Upgrade Gitea to 1.22 2024-06-02 23:17:16 +02:00
18496bb0da Merge pull request 'Configure akkounts for nostr zaps' (#554) from chore/akkounts_config into master
Reviewed-on: #554
2024-06-02 21:05:15 +00:00
d878b4208e Configure akkounts for nostr zaps 2024-06-02 23:03:06 +02:00
d31440d235 Add CORS headers to kosmos.social LNURL paths 2024-06-02 23:02:22 +02:00
6f287f14ef Deploy live branch 2024-06-02 23:01:49 +02:00
b77df3d0db Update email aliases 2024-05-16 14:34:09 +02:00
f7f5a0069d Merge pull request 'Add support for proxy domain validation to tls_cert resource' (#553) from feature/letsencrypt_proxy_validation into master
Reviewed-on: #553
Reviewed-by: Greg <greg@noreply.kosmos.org>
2024-05-08 12:30:29 +00:00
989185f951 Support proxy domain validation for Garage web domains
Also rename the data bag item
2024-04-30 12:23:36 +02:00
4cbda69a6b Add support for proxy domain validation to tls_cert resource 2024-04-26 12:24:17 +02:00
6931fe05d0 Hide Gitea version and load times in footer 2024-04-07 13:16:19 +03:00
b248ef70db Upgrade Gitea to 1.21.10 2024-04-07 13:10:10 +03:00
45159ad4e7 Resolve Mastodon addresses as Lightning Address 2024-03-31 08:27:20 +04:00
612cd0c55e Merge pull request 'Configure LDAP login for Mastodon (merge .social and .org accounts)' (#551) from feature/mastodon_ldap_integration into master
Reviewed-on: #551
Reviewed-by: Greg <greg@noreply.kosmos.org>
2024-03-29 09:51:42 +00:00
83380047bb Configure LDAP integration for Mastodon 2024-03-29 09:28:13 +04:00
8aebb386a4 Configure Mastodon user address domain for akkounts 2024-03-27 20:19:24 +04:00
a8c4f0bd0e Merge pull request 'Only allow ejabberd logins when XMPP service is enabled for user' (#550) from feature/xmpp_service_enabled into master
Reviewed-on: #550
2024-03-27 16:17:04 +00:00
12b4fb37fa Only allow ejabberd logins when XMPP service is enabled 2024-03-27 20:12:33 +04:00
263eb88b72 Add new env var for akkounts 2024-03-14 23:05:05 +01:00
25ee38fe27 Update kredits-ipfs-pinner 2024-03-14 23:04:27 +01:00
e701938442 Merge pull request 'Support letsencrypt proxy validation via CNAMEs' (#548) from feature/letsencrypt_proxy_validation into master
Reviewed-on: #548
Reviewed-by: greg <greg@noreply.kosmos.org>
2024-03-12 14:11:14 +00:00
309bc45791 Merge pull request 'Fix backup script removing image after unsuccessful pivot' (#549) from bugfix/vm_backups into master
Reviewed-on: #549
2024-03-11 15:35:50 +00:00
82a4af05ef Fix backup script removing image after unsuccessful pivot
If pivoting the VM backing storage back to the original image fails
(e.g. VM being down at that time), the script currently still deletes
the hotswap image, which means that all changes since the creation of
the hotswap image are lost.
2024-03-11 16:26:14 +01:00
4a8ab3abe3 Support letsencrypt proxy validation via CNAMEs
Allows to point other domains' `_acme-challenge.example.com` entries at
`example.com.letsencrypt.kosmos.chat` so we can validate from our side
without access to the other domain's DNS records.

Used for 5apps.com XMPP for now. Can be used for others later.

Co-authored-by: Greg Karékinian <greg@karekinian.com>
2024-03-11 16:21:28 +01:00
21de964e1b Upgrade nbxplorer, btcpay 2024-03-11 16:14:03 +01:00
b4ddfd19e3 Upgrade Ruby for latest Mastodon release 2024-03-11 16:13:48 +01:00
08c604962c Upgrade Ruby for latest akkounts release 2024-03-11 16:13:30 +01:00
089574d0de Merge pull request 'Update Gitea and act_runner, improve recipes' (#547) from chore/upgrade_gitea into master
Reviewed-on: #547
2024-03-11 15:12:00 +00:00
d19a8eebfb Update Gitea and act_runner, improve recipes 2024-03-11 16:11:12 +01:00
c0487d0e13 Deploy 5apps Gitea act runner 2024-03-11 16:08:22 +01:00
023a4261cd Update node info 2024-03-11 16:07:32 +01:00
fea65404cf Deploy new garage node 2024-03-11 16:03:22 +01:00
5139f242a4 Merge pull request 'Switch postgresql primary, deploy new replica' (#546) from switch_postgres_primary into master
Reviewed-on: #546
2024-03-11 14:59:57 +00:00
9c2aa9faaa Add info about required, unautomated step to script 2024-03-11 15:57:46 +01:00
164b974eb8 Switch postgresql primary, deploy new replica 2024-03-11 15:55:05 +01:00
6e4cc48068 Upgrade Gitea to 1.21.5 2024-02-05 14:39:12 +02:00
c2bd03dc23 Update node info 2024-02-05 10:14:27 +02:00
210a83a686 Increase max user offline messages for ejabberd 2024-02-04 15:47:55 +02:00
49db14869d Merge pull request 'Add Liquor Cabinet cookbooks and configs, deploy to production' (#541) from feature/535-liquor_cabinet into master
Reviewed-on: #541
2024-02-04 13:47:05 +00:00
000a13cec4 Merge pull request 'Set up coturn, switch from ejabberd in production' (#532) from feature/coturn into master
Reviewed-on: #532
2024-02-04 13:46:50 +00:00
5f7701c288 Fix missing listen IP for storage proxy 2024-01-29 18:16:07 +02:00
bcaee3bb21 Fix ActiveStorage not liking the local S3 endpoint 2024-01-29 18:15:36 +02:00
f352901582 Consolidate akkounts well-known proxying, add Webfinger and Nostr
refs #158
2024-01-29 14:17:15 +02:00
5c1c63f94e Add S3/Garage config for akkounts 2024-01-26 10:40:36 +03:00
98543f3e7d Configure RS integration for akkounts 2024-01-26 09:01:55 +03:00
7ab83d3d82 Section header comments for ENV vars
Improve readability of recipe
2024-01-26 09:00:25 +03:00
b5020efdd5 Merge branch 'master' into feature/535-liquor_cabinet 2024-01-26 08:19:50 +03:00
2763244fdc Merge pull request 'Config updates and improvements for new akkounts release' (#542) from chore/akkounts_updates into master
Reviewed-on: #542
2024-01-26 05:19:16 +00:00
e10e54c12a Deploy liquor-cabinet proxy to production 2024-01-26 08:16:26 +03:00
6114f0f799 Add liquor-cabinet proxy recipe 2024-01-26 08:15:53 +03:00
a2ec41b68a Add/use kosmos_liquor-cabinet cookbook 2024-01-25 17:42:56 +03:00
715fdbc2ba Node-attribute ALL THE THINGS 2024-01-25 17:40:42 +03:00
211a613e5c Add liquor-cabinet configs, deploy to production 2024-01-25 16:27:31 +03:00
d3c22ea787 Add liquor_cabinet cookbook 2024-01-25 16:26:41 +03:00
6047ea3f84 Merge pull request 'Add support for Redis replication, set up in production' (#540) from feature/redis_replication into master
Reviewed-on: #540
2024-01-25 10:19:12 +00:00
7d478f0183 Set up Redis replication in production 2024-01-24 18:12:22 +03:00
88e96747e3 Add Redis replica recipe and role 2024-01-24 18:11:58 +03:00
4b04aa7cd9 Let akkounts API proxy forward all API requests
... instead of just a specific subdirectory/path
2024-01-24 16:19:04 +03:00
2597e211ed Add new akkounts configs 2024-01-24 16:18:50 +03:00
f96faf9fa2 Install libvips for image manipulation in akkounts 2024-01-24 16:18:19 +03:00
c32e8bc9e5 Add new garage nodes 2024-01-11 18:38:22 +03:00
Râu Cao
24b22b8f91 Merge pull request 'Add email service' (#526) from feature/email into master
Reviewed-on: #526
2024-01-10 12:09:21 +00:00
456ec7a5fa Deploy new email VM 2024-01-09 15:57:04 +03:00
daadd9374f Use attribute for root dir 2024-01-08 11:35:04 +03:00
98acd429de Add configs for virtual email aliases 2024-01-08 11:29:56 +03:00
cfa7da2051 Create vmail dir on fresh systems 2024-01-08 10:47:19 +03:00
0d3082e1c8 Upgrade Gitea to 1.21.3 2024-01-01 16:13:15 +03:00
e1007f7886 ejabberd disco config additions 2023-12-18 13:23:21 +01:00
292366a77f Domain vs realm vs IP 2023-12-18 13:23:05 +01:00
ed998fc1d3 Use TCP for TLS connections 2023-12-18 13:22:34 +01:00
8a97ebf4f8 Use domain instead of IP, add TLS endpoints 2023-12-17 17:57:49 +01:00
ca3f06f831 Increase size of port range for TURN 2023-12-17 17:05:06 +01:00
1576a8e731 Set up coturn, switch from ejabberd in production
https://github.com/coturn/coturn
2023-12-17 15:20:11 +01:00
6e3fb80565 Upgrade CLN 2023-12-16 19:23:09 +01:00
Râu Cao
295d95c048 Upgrade Gitea to 1.21.1 2023-12-16 11:49:35 +01:00
789532fae9 Merge pull request 'Upgrade bitcoind, LND, CLN, RTL, NBXplorer, BTCPay' (#531) from chore/upgrade_bitcoin_software into master
Reviewed-on: #531
2023-12-14 17:15:40 +00:00
Râu Cao
404f492e6e Update node info 2023-12-14 18:14:37 +01:00
Râu Cao
574f78f128 Upgrade bitcoind, LND, CLN, RTL, NBXplorer, BTCPay
Also required upgrading node.js and the .NET SDK.
2023-12-14 18:12:29 +01:00
f4d1009473 Merge pull request 'Switch to virtual domains/aliases/mailboxes' (#530) from feature/email_virtual_domains into feature/email
Reviewed-on: #530
2023-12-13 12:06:44 +00:00
Râu Cao
69af908f6b Virtual domain configs 2023-12-13 13:05:31 +01:00
Râu Cao
e8880ded90 Remove vagrant (dev) node config files
No need for sharing them, since the actual roles etc. are defined in the
Vagrantfile.
2023-12-07 10:37:09 +01:00
Râu Cao
10dd3bf16e Add new RSK testnet node, don't serve from current one 2023-12-07 09:55:29 +01:00
Râu Cao
ca580bcfe2 Set email report contact in production 2023-12-07 09:37:37 +01:00
5b0cb438ba Merge pull request 'Set up SpamAssassin' (#529) from feature/spamassassin into feature/email
Reviewed-on: #529
2023-12-06 11:28:14 +00:00
Râu Cao
5a4cdf9c30 Prevent local users from impersonating other local users 2023-12-06 12:27:38 +01:00
Râu Cao
b3f2ca415e Set up SpamAssassin
Scan incoming and outgoing email for spam. Use a local Unbound for DNS,
so we don't run into blocks for RBL queries.
2023-12-06 12:22:24 +01:00
Râu Cao
05ccbcc58f Merge branch 'master' into feature/email 2023-12-05 18:37:43 +01:00
Râu Cao
e3c4bf8969 Update node config 2023-12-05 18:21:26 +01:00
Râu Cao
cc6cebb8a2 Increase TURN throughput allowance 2023-12-05 18:20:27 +01:00
Râu Cao
4dbc960eed Switch ejabberd node handling TURN
Should use the same outgoing IP as for incoming
2023-12-05 18:19:48 +01:00
ce47072b0d Merge pull request 'Improve VM backups, configure backups on "her"' (#528) from feature/backup_improvements into master
Reviewed-on: #528
2023-12-05 17:18:40 +00:00
Râu Cao
7805182457 Change borg backup default interval to 3 hrs 2023-12-05 18:16:15 +01:00
Râu Cao
769ac4a081 Support node-specific borg repo config 2023-12-05 18:09:44 +01:00
Râu Cao
b1763cd032 Pattern-match node names for VM backup exclusion 2023-12-05 18:04:57 +01:00
Râu Cao
c746b38ebf Update node info 2023-12-05 14:19:52 +01:00
0a58cac0cf Merge pull request 'Set up DKIM signing and verification' (#527) from feature/email_dkim into feature/email
Reviewed-on: #527
2023-12-04 12:42:37 +00:00
Râu Cao
42c04538d8 Set up DKIM signing and verification 2023-12-04 13:40:37 +01:00
Râu Cao
c9ad3c2d18 Create/configure common default mailboxes 2023-12-04 13:33:23 +01:00
Râu Cao
fbad0bf896 More explicit postfix configs 2023-12-03 18:33:12 +01:00
Râu Cao
8a7eeb1dd9 Change INBOX location 2023-12-03 18:32:55 +01:00
Râu Cao
568197737a Fix SMTP connection delay when peer hostname cannot be resolved 2023-12-03 18:31:47 +01:00
Râu Cao
738e96f7e4 Fix auth for SMTP submission on port 465 2023-12-03 18:31:12 +01:00
Râu Cao
87411274ae Configure email domain for production 2023-12-03 18:29:35 +01:00
Râu Cao
ce00852bba Remove obsolete config file 2023-12-01 12:19:21 +01:00
Râu Cao
366c0c0d3c Add WIP email domain and hostname 2023-12-01 10:02:25 +01:00
Râu Cao
89d00afd1c Set up email proxy 2023-12-01 10:02:11 +01:00
Râu Cao
e4abfb1b75 Use more reasonable priority for attributes in recipe 2023-12-01 10:01:34 +01:00
Râu Cao
335a082171 Put an LDAP server in the production env 2023-12-01 10:00:35 +01:00
Râu Cao
9d0ff358ef Only use certbot deploy hook when applicable 2023-12-01 10:00:07 +01:00
Râu Cao
495a4231fb Add mail server node 2023-12-01 09:59:41 +01:00
Râu Cao
51068e5259 Add email credentials 2023-12-01 09:58:25 +01:00
Râu Cao
fbcf1ed5e7 WIP Add initial cookbook and roles for email service 2023-12-01 09:56:54 +01:00
Râu Cao
158a9c2fbe Update postfix cookbook 2023-11-29 22:26:59 +01:00
Râu Cao
1e9878d17e Remove obsolete clients 2023-11-28 22:43:21 +01:00
Râu Cao
3df7a386e6 Remove rsk-testnet-3 2023-11-28 22:43:21 +01:00
cbeddefa34 Merge pull request 'Set max size for external S3 upload requests' (#525) from bugfix/s3_nginx_max_upload_size into master
Reviewed-on: #525
2023-11-15 13:04:34 +00:00
Râu Cao
aefd01d38d Remove old RSK mainnet node 2023-11-15 13:22:15 +01:00
Râu Cao
5765c08d6e Fail over to next node when and RSK backend is down 2023-11-15 13:21:46 +01:00
Râu Cao
aaae90bc0d Don't exit VM backup scripts immediately on failures 2023-11-15 13:20:42 +01:00
Râu Cao
087616b6b6 Set max size for external S3 upload requests
Fix uploads failing when exceeding the default nginx limit
2023-11-08 21:44:49 +01:00
Râu Cao
390753faa3 Increase update delay for Gandi DNS records 2023-11-05 01:01:16 +01:00
Râu Cao
1a3516904d Update node info 2023-11-05 01:01:04 +01:00
adafb132ee Merge pull request 'Upgrade Mastodon to 4.2.1' (#524) from chore/upgrade_mastodon into master
Reviewed-on: #524
2023-11-05 00:00:51 +00:00
Râu Cao
8071f44f41 Upgrade Mastodon to 4.2.1 2023-11-05 00:57:43 +01:00
Râu Cao
05d04fe76c Update node info 2023-11-04 15:25:01 +01:00
231811f9d0 Merge pull request 'Upgrade Gitea to 1.20.5' (#523) from chore/upgrade_gitea into master
Reviewed-on: #523
2023-11-04 14:15:47 +00:00
Râu Cao
9fa7d8b28f Upgrade Gitea to 1.20.5 2023-11-04 15:14:58 +01:00
5fbc48df9a Merge pull request 'Upgrade RSKj to 5.3.0, deploy new nodes' (#522) from chore/upgrade_rskj_jammy into master
Reviewed-on: #522
2023-11-04 14:09:30 +00:00
Râu Cao
925a5da239 Upgrade RSKj to 5.3.0, deploy new nodes
Adapted the cookbook for new nodes running on Jammy.
2023-11-04 15:06:31 +01:00
Râu Cao
3d3156a031 Add new host 2023-11-01 12:39:17 +01:00
2c33ee79f2 Merge pull request 'Upgrade ejabberd to 23.10, enable anonymous occupant IDs' (#520) from chore/upgrade_ejabberd into master
Reviewed-on: #520
2023-11-01 11:32:18 +00:00
Râu Cao
abc168ebf1 Upgrade ejabberd to 23.10, enable anonymous occupant IDs 2023-11-01 12:29:23 +01:00
873c235539 Merge pull request 'Migrate ejabberd uploads to mod_s3_upload and Garage' (#518) from feature/469-ejabberd_s3 into master
Reviewed-on: #518
2023-10-17 19:07:23 +00:00
Râu Cao
65d71d6a73 Migrate ejabberd uploads to mod_s3_upload and Garage
In addition to installing and configuring the new module, this also
enables public access to the S3 API via `bucket-name.s3.kosmos.org` as
well as Web access on `bucket-name.web.s3.kosmos.org` (when enabled).

Also includes some drive-by improvements to Chef attribute naming and
usage.

Co-authored-by: Greg Karékinian <greg@karekinian.com>
2023-10-10 17:55:55 +02:00
Râu Cao
832075dfb2 Shorten root domains for external Garage S3 and Web access
And move the configuration-specific preceding dot to the config
template.
2023-10-10 16:34:23 +02:00
1c9e28448f Merge pull request 'Improve PostgreSQL streaming replication in production' (#516) from feature/keep_wal_segments into master
Reviewed-on: #516
2023-10-07 08:18:24 +00:00
Râu Cao
3505212e92 Add missing header to RS discourse proxy config 2023-10-04 12:36:07 +02:00
Râu Cao
2d3872a692 Update chef client on postgres-4
refs #500
2023-10-02 15:48:50 +02:00
Râu Cao
eb1303a8da Fix postgres primary not holding onto any WAL segments for later sync
closes #515
2023-10-02 15:46:26 +02:00
9af38219af Merge pull request 'Upgrade bitcoind, LND, .NET, NBXplorer, and BTCPay' (#514) from chore/upgrade_btc_things into master
Reviewed-on: #514
2023-09-28 14:44:00 +00:00
Râu Cao
08d9819fd2 Upgrade bitcoind, LND, dotnet, NBXplorer, and BTCPay 2023-09-28 16:41:44 +02:00
Râu Cao
f0968aae5b Add Drone CI config for akkounts 2023-09-01 12:51:40 +02:00
b4ce426ce9 Merge pull request 'Upgrade Gitea to 1.20.3, Chef client to 18.x' (#512) from chore/upgrade_gitea into master
Reviewed-on: #512
2023-08-25 15:14:46 +00:00
Râu Cao
e65c58ff6c Upgrade Gitea to 1.20.3, Chef client to 18.x 2023-08-25 17:12:33 +02:00
cc8264432c Merge pull request 'Migrate nginx sites to openresty' (#511) from chore/migrate_nginx_sites_to_openresty into master
Reviewed-on: #511
2023-08-01 13:02:32 +00:00
Râu Cao
1650e429a8 Migrate fornax nginx to openresty 2023-07-31 15:57:13 +02:00
Râu Cao
123b304dd0 Use correct node attributes 2023-07-31 15:57:07 +02:00
Râu Cao
bbd25ebb9c Add nginx logs for gitea 2023-07-31 15:56:40 +02:00
Râu Cao
ec43f4ee0f Update openresty cookbook 2023-07-31 15:56:20 +02:00
Râu Cao
eab94090e8 Use openresty node attributes in openresty templates 2023-07-31 15:07:35 +02:00
Râu Cao
7f2805831c Remove obsolete cookbook 2023-07-31 15:07:18 +02:00
Râu Cao
0f12a54eab Refactor tor usage entirely
Use a custom resource and separate recipe for service configs with
pre-set keys and hostnames
2023-07-30 12:39:41 +02:00
Râu Cao
68b56789c5 Migrate ejabberd UDP streams to openresty
And remove the other streams in the process, in favor of running haproxy
on all LBs.
2023-07-30 12:39:36 +02:00
Râu Cao
438ee4ace0 Migrate Gitea SSH stream to openresty 2023-07-30 12:35:21 +02:00
Râu Cao
27bdc1f60d Update openresty cookbook 2023-07-30 12:34:21 +02:00
Râu Cao
cb0fc27134 Refactor tor usage, set up new tor proxy on draco 2023-07-29 16:26:20 +02:00
Râu Cao
b149264919 Use paths from node attributes 2023-07-29 14:30:46 +02:00
Râu Cao
53c35fda51 Migrate garage proxies to openresty 2023-07-26 16:42:48 +02:00
Râu Cao
bb2f41fdb3 Migrate hubot proxies to openresty 2023-07-26 16:21:03 +02:00
Râu Cao
027d0ed570 Migrate IPFS proxies to openresty 2023-07-26 16:12:33 +02:00
Râu Cao
1362da0add Migrate RS Discourse proxy to openresty 2023-07-26 15:57:08 +02:00
Râu Cao
15b2ea284a Migrate mastodon proxy to openresty 2023-07-26 15:44:04 +02:00
Râu Cao
ad59913555 Migrate lndhub proxy to openresty 2023-07-26 15:00:55 +02:00
Râu Cao
1bad2939de Migrate accounts API proxy to openresty 2023-07-26 15:00:43 +02:00
Râu Cao
7b5d46c813 Update openresty cookbook 2023-07-26 14:52:16 +02:00
Râu Cao
98d423aa70 Update roles 2023-07-26 14:16:33 +02:00
Râu Cao
4b14297f83 WIP Migrate Gitea proxy to openresty
TODO: Make nginx_ssh stream resource work with openresty cookbook
2023-07-26 14:15:46 +02:00
Râu Cao
1681942fb1 Migrate static website to openresty 2023-07-26 14:15:22 +02:00
Râu Cao
4d528d67ef Migrate RSK proxies to openresty 2023-07-26 14:08:44 +02:00
Râu Cao
53abc2ec9a Migrate Drone CI proxy to openresty 2023-07-26 14:07:48 +02:00
Râu Cao
543b482adb Migrate discourse proxy to openresty 2023-07-26 13:40:19 +02:00
Râu Cao
87657db8a7 Update openresty cookbook 2023-07-26 13:39:07 +02:00
Râu Cao
4b0b4b8d80 Migrate akkounts proxy to openresty 2023-07-26 13:31:28 +02:00
Râu Cao
77c97607d5 Update openresty cookbook 2023-07-26 13:31:27 +02:00
Râu Cao
4b08e4fc8c Add JSON log format to openresty 2023-07-26 13:31:23 +02:00
507a812f33 Merge pull request 'Exclude specified VMs from image backups' (#509) from feature/kvm_backup_exceptions into master
Reviewed-on: #509
2023-07-26 08:58:45 +00:00
Râu Cao
fb708743cc Remove obsolete node 2023-07-26 09:31:38 +02:00
Râu Cao
9568b7072d Exclude specified nodes/VMs from image backups 2023-07-25 16:58:16 +02:00
Râu Cao
a85bbc4a3e Add kvm host role 2023-07-25 16:38:52 +02:00
266b17eb98 Merge pull request 'Set up openresty' (#502) from feature/501-openresty into master
Reviewed-on: #502
2023-07-25 11:24:39 +00:00
7d9faf40d8 Merge pull request 'Upgrade Gitea to 1.20.1' (#508) from chore/upgrade_gitea_to_1.20.1 into master
Reviewed-on: #508
2023-07-23 10:59:11 +00:00
Râu Cao
149760702b Upgrade Gitea to 1.20.1 2023-07-23 12:58:02 +02:00
Râu Cao
ec77e19ab0 Update SMTP credentials 2023-07-23 12:56:46 +02:00
Râu Cao
baab02515c Remove attributes from node config 2023-07-23 12:56:27 +02:00
Râu Cao
c48dd4c997 Replace postgresql primary, add new replica 2023-07-21 14:56:14 +02:00
Râu Cao
e5805169f5 Improve script for switching postgres primary 2023-07-21 14:55:43 +02:00
Greg Karékinian
be072fb985 Update vagrant-openresty node file 2023-07-19 10:01:51 +02:00
Greg Karékinian
0fc388f43c Don't redirect http for the hello_world openresty app 2023-07-19 10:01:10 +02:00
Greg Karékinian
27b466f30d Add new architecture to Gemfile.lock 2023-07-17 18:09:55 +02:00
Greg Karékinian
1a19fa012d Deploy openresty proxy on draco
Also update Chef to 18.2.7
2023-07-17 18:09:13 +02:00
Greg Karékinian
7b0313fbd4 Add access and error logs for the assets vhost 2023-07-17 18:08:32 +02:00
Greg Karékinian
1183f6a621 Add missing dependency on git to deploy the assets 2023-07-17 18:08:21 +02:00
Greg Karékinian
05daff9029 Install certbot when using the tls_cert_for resource 2023-07-17 18:07:50 +02:00
Greg Karékinian
307ccbd561 Set a production run list for the openresty_proxy role
It only contains the assets for now
2023-07-17 18:06:58 +02:00
Greg Karékinian
cc91aab155 Use the new way of setting attribute whitelists 2023-07-17 18:06:23 +02:00
Greg Karékinian
bf72367cf2 Add a firewall rule to the kosmos_openresty cookbook
It is part of the run list in production
2023-07-17 18:05:34 +02:00
Greg Karékinian
4e0bd191c3 Move the Hello World lua app to its own recipe
Use it in the development environment
2023-07-17 18:04:35 +02:00
Greg Karékinian
96f45b1f63 Set the required Chef version to 18 2023-07-17 18:03:02 +02:00
Greg Karékinian
030dbc3584 Update the openresty cookbook submodule 2023-07-17 18:00:38 +02:00
Greg Karékinian
84ffb46ed5 Add Chef node file for openresty VM 2023-07-17 14:46:38 +02:00
Greg Karékinian
491cd31fac Add openresty Vagrant box 2023-07-15 17:20:06 +02:00
Greg Karékinian
2acf4c2b59 Update Chef in Vagrant setup 2023-07-15 17:19:50 +02:00
Greg Karékinian
df1143525d Add openresty roles 2023-07-12 20:37:03 +02:00
Greg Karékinian
d79dcd8e65 Deploy kosmos assets with Openresty 2023-07-12 20:36:12 +02:00
Greg Karékinian
c1e2145ba1 Create a resource to get a Let's Encrypt cert with DNS validation 2023-07-12 20:35:15 +02:00
Greg Karékinian
d077dfdcf2 Deploy a hello world openresty app 2023-07-12 20:34:00 +02:00
Greg Karékinian
8a3c519a6c Update our fork of the openresty cookbook 2023-07-12 20:32:53 +02:00
Greg Karékinian
abb652cc2b Fix the openresty submodule 2023-07-08 15:37:12 +02:00
Greg Karékinian
b7c36d427e Add jemalloc and yum cookbooks 2023-07-08 15:12:30 +02:00
Greg Karékinian
1bdcda0e97 Initial kosmos_openresty wrapper cookbook 2023-07-06 10:17:11 +02:00
Greg Karékinian
0a15199364 Add cookbook dependencies for openresty 2023-07-06 10:14:23 +02:00
Greg Karékinian
aebf0a12e8 Don't use AIO in development
This was needed in my Vagrant setup (VirtualBox)
2023-07-06 10:13:52 +02:00
Greg Karékinian
2950ab5bfc Add openresty cookbook fork as a submodule 2023-07-05 15:50:46 +02:00
8072fafa46 Merge pull request 'Set up Redis VM, upgrade all cookbooks for Chef 18, major cleanup' (#496) from feature/488-redis_server into master
Reviewed-on: #496
2023-07-01 12:22:38 +00:00
Greg Karékinian
2637d755af Remove old server 2023-06-29 17:17:06 +02:00
Greg Karékinian
b550c1b79e Remove deleted servers 2023-06-29 16:58:28 +02:00
Greg Karékinian
1f29d8a01a Get rid of compat_resource and mariadb 2023-06-29 16:49:06 +02:00
Greg Karékinian
462bdabf01 Get rid of the chef-sugar dependency
It's now deprecated
2023-06-29 16:41:08 +02:00
Greg Karékinian
7683de09a2 Update the elasticsearch cookbook 2023-06-29 16:39:09 +02:00
Greg Karékinian
68ce3c4834 Update the firewall cookbook to the latest version
This gives us comments from the named resources
2023-06-29 15:08:44 +02:00
Greg Karékinian
916ae8094c Get rid of the build-essential cookbook
The build_essential resource has been part of Chef since 14.0
2023-06-29 14:48:49 +02:00
Greg Karékinian
05834b6013 Get rid of the application and poise cookbooks 2023-06-28 18:59:31 +02:00
Greg Karékinian
d7bc5e6f08 Update Chef on these servers 2023-06-28 18:55:13 +02:00
Greg Karékinian
b7d17c1ad7 Replace application cookbook with git resource 2023-06-28 18:55:05 +02:00
Greg Karékinian
54098a450c Replace application cookbook with git resource 2023-06-28 18:54:38 +02:00
Greg Karékinian
3a5a038f7e Replace application cookbook with git resource 2023-06-28 18:53:59 +02:00
Greg Karékinian
3cf9c3868b Deploy mastodon without the application cookbooks 2023-06-28 17:23:05 +02:00
Greg Karékinian
57fdf0723f Deploy RTL without the deprecated application cookbook 2023-06-28 16:35:57 +02:00
Greg Karékinian
9378df23db Remove unused lndhub recipe 2023-06-28 16:35:56 +02:00
Greg Karékinian
88caae26e4 Install the latest backup gem
It added a few dev dependencies, install them
2023-06-28 16:35:56 +02:00
Greg Karékinian
0564165e81 Override the attributes in attributes, not the default recipe 2023-06-28 16:35:56 +02:00
Greg Karékinian
ddeebc739d Update chef-sugar to fix a conflict in Chef 16+ 2023-06-28 16:35:56 +02:00
Greg Karékinian
b9cf396d42 Deploy akkounts without the application_git cookbook
Use the built-in git resource from Chef instead. poise/application does
not work on modern Chef.
2023-06-28 16:35:56 +02:00
0506b75115 Merge pull request 'Configure all new and remaining options for akkounts' (#498) from chore/akkounts_config into feature/488-redis_server
Reviewed-on: #498
2023-06-28 12:29:41 +00:00
Râu Cao
01977e088a Configure remaining options for akkounts
And refactor attributes/variables to use the various service cookbook's
own attributes.
2023-06-28 14:27:25 +02:00
Greg Karékinian
d1a4e4cbc5 Merge branch 'master' into feature/488-redis_server 2023-06-28 14:15:30 +02:00
Râu Cao
bcbee255f1 Add primary domain config for akkounts 2023-06-21 15:08:14 +02:00
0a25ef6d7a Merge pull request 'Upgrade Kredits IPFS Pinner' (#497) from chore/deploy_kredits-ipfs-pinner into master
Reviewed-on: #497
2023-06-20 16:54:48 +00:00
Râu Cao
d6989ab161 Replace hardcoded value with variable 2023-06-20 18:52:44 +02:00
Râu Cao
b94484d0dd Upgrade Kredits IPFS Pinner 2023-06-20 18:52:16 +02:00
Greg Karékinian
b19fca6e7c Add firewall rule to allow access to Redis on Zerotier network 2023-06-20 15:19:34 +02:00
Greg Karékinian
76a952dbac Add missing Berksfile changes 2023-06-19 16:13:08 +02:00
Greg Karékinian
3fb89517ab Add redis_server role to redis-1 2023-06-19 16:08:59 +02:00
Greg Karékinian
44e23ffa1f Merge branch 'master' into feature/488-redis_server 2023-06-19 16:08:44 +02:00
Greg Karékinian
6116729907 Set up Redis using the latest version of redisio
This replaces the deprecated redis cookbook. Compiles the latest version
of Redis, currently 7.0.11

Refs #488
2023-06-19 16:02:58 +02:00
e924d714af Merge pull request 'Refactor RSK nginx sites for proxy/lb usage' (#495) from chore/rsk_nginx_sites into master
Reviewed-on: #495
2023-06-19 14:01:25 +00:00
Râu Cao
90f66c74d2 Refactor RSK nginx sites for proxy/lb usage 2023-06-18 16:55:38 +02:00
635ca3870a Merge pull request 'Upgrade RSKj to 4.4.0' (#494) from chore/upgrade_rskj into master
Reviewed-on: #494
2023-06-15 14:40:52 +00:00
Râu Cao
80a7751267 Test for correct network in RSKj config 2023-06-07 15:28:23 +03:00
Râu Cao
ba573798ee Upgrade RSKj to latest stable release 2023-06-07 15:27:58 +03:00
3b8326283f Merge pull request 'Configure/deploy akkounts for Discourse SSO' (#493) from chore/akkounts_upgrade into master
Reviewed-on: #493
2023-06-04 12:29:50 +00:00
Râu Cao
d113edb004 Set X-Forwarded-Proto for Discourse requests 2023-06-04 15:25:00 +03:00
Râu Cao
9648e071ca Configure akkounts for Discourse Connect 2023-06-04 15:24:06 +03:00
b164d7a444 Merge pull request 'Provision VMs for Redis cluster, RS API' (#490) from chore/new_vms into master
Reviewed-on: #490
2023-05-23 13:08:15 +00:00
7f97d95bad Merge pull request 'Upgrade ZeroTier Controller UI to latest version' (#491) from chore/upgrade_ztncui into master
Reviewed-on: #491
2023-05-23 13:02:04 +00:00
26b1682bdb Merge pull request 'Upgrade Gitea to 1.19.3' (#492) from chore/upgrade_gitea into master
Reviewed-on: #492
2023-05-13 13:43:22 +00:00
Râu Cao
91ede90184 Upgrade Gitea to 1.19.3 2023-05-13 15:41:59 +02:00
Râu Cao
6c329b7200 Upgrade ztncui to 0.8.13 2023-05-12 17:16:22 +02:00
Râu Cao
d0a1785847 Install new versions of ztncui, restart service 2023-05-12 17:15:52 +02:00
Râu Cao
29052ce509 Deploy new VMs for Redis, Liquor Cabinet 2023-05-12 17:02:10 +02:00
Râu Cao
fc041965f4 Update Ubuntu base image 2023-05-12 17:01:50 +02:00
b9e2f3b8e8 Merge pull request 'Upgrade Go to 1.20.3, LND to 0.16.1' (#486) from chore/upgrade_golang_lnd into master
Reviewed-on: #486
2023-04-26 13:06:53 +00:00
Râu Cao
807ca52f1c Upgrade LND to 0.16.1 2023-04-26 15:05:17 +02:00
Râu Cao
78eb3c033a Upgrade golang to 1.20.3 2023-04-26 15:05:06 +02:00
bffa24884c Merge pull request 'Upgrade ejabberd to 23.04, activate real-time MUC blocklists against spam' (#485) from chore/upgrade_ejabberd into master
Reviewed-on: #485
2023-04-19 15:38:07 +00:00
Râu Cao
efb07ad3c1 Allow akkounts to set private XML storage data
Enables kosmos/akkounts#116
2023-04-19 17:32:30 +02:00
Râu Cao
14e04d77a9 Activate real-time MUC blocklist module 2023-04-19 17:32:15 +02:00
Râu Cao
f8f3fc7c3a Upgrade ejabberd to 23.04
Also add a package version attribute, since the value changed in the
past.
2023-04-19 17:30:55 +02:00
Râu Cao
5ad15ba1f3 Upgrade Gitea to 1.19.1 2023-04-13 18:31:42 +02:00
4778253ad3 Merge pull request 'Fix Gitea Actions runner not working with private host' (#484) from bugfix/act_runner_needs_public_host into master
Reviewed-on: #484
2023-04-11 10:16:20 +00:00
Râu Cao
1afc860b21 Fix Gitea Actions runner not working with private host 2023-04-11 12:14:17 +02:00
Râu Cao
03a02a19c4 Use proxy protocol for ejabberd nginx streams 2023-04-04 15:14:41 +02:00
Râu Cao
7a1be33b7a Make all nginx vhosts listen on IPv6 2023-04-04 15:10:23 +02:00
Râu Cao
f36268e906 Update ejabberd admin list 2023-04-04 10:14:50 +02:00
Râu Cao
2dd4d572a6 Configure akkounts domain 2023-04-04 09:32:40 +02:00
a44fa31951 Merge pull request 'Improve ejabberd HTTP API configs and access' (#483) from bugfix/ejabberd_api_access into master
Reviewed-on: #483
2023-04-03 16:03:03 +00:00
Râu Cao
797dd241e0 Improve ejabberd HTTP API configs and access
Move the listener to a separate endpoint on port 80, which is only
accessible from the private network. Change accounts.kosmos.org to use
the new endpoint via a `.local` domain instead of faking external
access.
2023-04-03 15:38:40 +02:00
ac00aa9def Merge pull request 'Upgrade Gitea to 1.19, configure Gitea Actions, set up Actions runners' (#482) from chore/upgrade_gitea into master
Reviewed-on: #482
2023-04-02 13:57:45 +00:00
Râu Cao
059812524e Set up Gitea Actions runners 2023-04-01 12:56:21 +02:00
d7cbdbd6a5 Merge pull request 'Set up Sentry' (#478) from feature/sentry into master
Reviewed-on: #478
2023-03-28 20:13:28 +00:00
Râu Cao
702449acc1 Upgrade Gitea to 1.19.0, enable Actions 2023-03-28 19:36:30 +02:00
Râu Cao
b78de9a3c9 Deploy Sentry from release tag 2023-03-28 15:23:57 +02:00
Râu Cao
99d985c0d5 Configure Sentry for akkounts 2023-03-27 19:10:48 +02:00
Râu Cao
9f886cc286 Configure Sentry DSN for lndhub-go 2023-03-27 19:04:03 +02:00
Râu Cao
05d0a19b5f Add Sentry client recipe and role
Configures a local domain for Sentry in the hostsfile.
2023-03-27 19:04:03 +02:00
Râu Cao
798ee3d1d8 Basic Sentry setup
Not running the install script automatically at this point yet.
2023-03-27 19:03:58 +02:00
0fbba8baa8 Merge pull request 'Add new SMTP config for akkounts' (#480) from feature/479-akkounts_smtp_config into master
Reviewed-on: #480
2023-03-27 09:56:15 +00:00
Greg Karékinian
0c4466b040 Namespace the smtp attributes 2023-03-27 10:49:12 +02:00
Greg Karékinian
34970fe3cf Set a better name for the from address 2023-03-27 10:48:56 +02:00
Greg Karékinian
3873ebaac2 Don't override the SMTP config with the same values 2023-03-27 10:45:02 +02:00
Greg Karékinian
4f1fb347a8 Add new SMTP config for akkounts
This is not running on akkounts-1

closes #479
refs kosmos/akkounts#107
2023-03-24 16:55:11 +01:00
819109849a Merge pull request 'Improve ejabberd config' (#477) from feature/ejabberd_enhanced_configs into master
Reviewed-on: #477
2023-03-24 09:38:18 +00:00
Râu Cao
6e31c7a79b Use proxy protocol 2023-03-24 16:35:23 +07:00
Râu Cao
a2fc3ba25c Remove obsolete folder permissions 2023-03-24 16:35:07 +07:00
Râu Cao
13fc2e6e24 Improve MUC config 2023-03-24 16:34:40 +07:00
d308c2536d Merge pull request 'Switch Discourse uploads and backups to Garage/S3' (#476) from feature/discourse_garage into master
Reviewed-on: #476
2023-03-21 09:04:58 +00:00
4baff4cc03 Merge branch 'master' into feature/discourse_garage 2023-03-21 09:02:20 +00:00
Râu Cao
f34647b2bd Fix akkounts asset requests when nginx is on proxy 2023-03-17 19:29:24 +07:00
Râu Cao
8ae7cdfafd Switch Discourse uploads and backups to Garage/S3 2023-03-17 19:13:04 +07:00
Râu Cao
d8d1609572 Serve static assets from Rails in prod 2023-03-04 11:14:11 +08:00
Râu Cao
cf082833a7 Add lndhub pubkey in prod, update node config 2023-03-03 21:48:38 +08:00
6779f5a5dc Merge pull request 'Add keysend support for Lightning Address' (#471) from feature/lightning_address_keysend into master
Reviewed-on: #471
2023-03-02 10:53:07 +00:00
55bfc0c80f Merge branch 'master' into feature/lightning_address_keysend 2023-03-02 10:52:25 +00:00
796b7e4436 Merge pull request 'Move akkounts nginx to nginx proxy' (#474) from chore/move_akkounts_nginx into master
Reviewed-on: #474
2023-03-02 10:52:12 +00:00
Râu Cao
8225e1b67b Move akkounts nginx to nginx proxy 2023-03-02 18:05:37 +08:00
e2e857ec76 Merge pull request 'Move akkounts to redisio cookbook, switch in production' (#473) from chore/akkounts_redis into master
Reviewed-on: #473
2023-03-02 08:12:12 +00:00
8f70bf5033 Move akkounts to redisio cookbook 2023-03-02 16:09:51 +08:00
0320cae893 Merge pull request 'Upgrade BTCPay Server to 1.8.0' (#472) from bugfix/btcpay_builds into master
Reviewed-on: #472
2023-03-02 07:36:46 +00:00
Râu Cao
9d1dd499bb Upgrade BTCPay Server to 1.8.0
* Fixed build and run scripts
  https://github.com/btcpayserver/btcpayserver/pull/4655
* Fixed bug when using LndHub account as Lightning back-end
  https://github.com/btcpayserver/btcpayserver/issues/4658
2023-03-02 15:31:47 +08:00
Râu Cao
53f8a06e6f Add keysend support for Lightning Address 2023-03-02 13:32:07 +08:00
e9832551ac Merge pull request 'Write akkounts .env config, add config for lndhub admin UI' (#470) from feature/462_akkounts_config into master
Reviewed-on: #470
2023-02-14 13:11:49 +00:00
7549164a2e Merge branch 'master' into feature/462_akkounts_config 2023-02-14 13:04:00 +00:00
48f678148c Merge pull request 'Switch/migrate NBXplorer to PostgreSQL' (#468) from chore/nbxplorer_postgres into master
Reviewed-on: #468
2023-02-14 13:03:49 +00:00
544984abce Merge branch 'master' into chore/nbxplorer_postgres 2023-02-14 13:02:06 +00:00
643af4a4a2 Merge pull request 'Upgrade RSKj, fix and document test suite' (#465) from core/upgrade_rskj into master
Reviewed-on: #465
2023-02-14 13:01:55 +00:00
6209dcfc25 Merge branch 'master' into core/upgrade_rskj 2023-02-14 13:00:44 +00:00
Râu Cao
a1ec9b4d6a Write akkounts .env config, add config for lndhub admin UI
closes #462
2023-02-13 22:39:11 +08:00
Râu Cao
b762d70b43 Use service resource 2023-02-11 17:22:22 +08:00
Râu Cao
99e029a5ca Switch NBXplorer to Postgres 2023-02-08 15:30:44 +08:00
86d7514739 Merge pull request 'Upgrade bitcoind, NBXplorer, BTCPayServer' (#467) from chore/upgrade_btcpay into master
Reviewed-on: #467
2023-02-03 09:05:46 +00:00
Râu Cao
4c7a5f4db8 Upgrade bitcoind, NBXplorer, BTCPayServer 2023-02-03 17:04:16 +08:00
Râu Cao
5e709a3a4f Update node configs 2023-02-01 21:53:50 +08:00
Râu Cao
d04e2f4fd5 Bump cookbook version 2023-02-01 20:45:01 +08:00
Râu Cao
f9e7d98bf9 Document testing commands 2023-02-01 20:44:45 +08:00
Râu Cao
9c33fbda21 Bump rskj version 2023-02-01 20:44:07 +08:00
Râu Cao
a7b990c64f Update preseed syntax 2023-02-01 20:43:41 +08:00
Râu Cao
55e48cca86 Include nginx cookbook in local deps (for testing) 2023-02-01 20:43:07 +08:00
Râu Cao
063858f06c Install imagemagick for mediawiki thumbnail generation 2023-02-01 18:17:39 +08:00
Râu Cao
cd4d21efc8 Remove superfluous license header 2023-02-01 18:17:29 +08:00
Râu Cao
ad10e8cceb Fix up lndhub hook config, converge all relevant nodes 2023-01-25 13:02:09 +08:00
Râu Cao
3e79955261 Deploy akkounts from master again 2023-01-25 12:31:17 +08:00
Râu Cao
d3d046b0d0 Merge branch 'feature/libretranslate' 2023-01-25 12:28:33 +08:00
7447ba2842 Merge pull request 'Configuration for LndHub webhooks' (#461) from feature/lndhub_webhooks into master
Reviewed-on: #461
2023-01-17 13:45:00 +00:00
1a7fd5ac65 Merge branch 'master' into feature/lndhub_webhooks 2023-01-17 13:44:14 +00:00
cdb1213e1d Merge pull request 'Migrate Mastodon S3 from AWS to Garage' (#458) from feature/22-mastodon_s3 into master
Reviewed-on: #458
2023-01-17 13:42:28 +00:00
Râu Cao
03fa49ed0c Remove unused import 2023-01-17 17:15:16 +08:00
Râu Cao
ed0e030106 Set up libretranslate for kosmos.social 2023-01-17 17:12:22 +08:00
Râu Cao
3933e4c310 Fix endpoint URL 2023-01-17 15:36:42 +08:00
Râu Cao
f777af22b8 Finish up Garage S3 config for kosmos.social 2023-01-14 15:59:47 +08:00
Râu Cao
345ba14f0e Add garage S3 config for Mastodon 2023-01-14 15:03:38 +08:00
Râu Cao
89865bcd2a Allow send_message endpoint from akkounts 2023-01-12 15:37:08 +08:00
Râu Cao
62d1a86555 Configure Webhook URL for lndhub.go 2023-01-12 15:37:04 +08:00
Râu Cao
2eb0544ea9 Update README 2023-01-05 17:14:46 +08:00
2d50c7dfd6 Merge pull request 'Upgrade Gitea to 1.18.0' (#460) from chore/upgrade_gitea into master
Reviewed-on: #460
2022-12-30 16:08:18 +00:00
Râu Cao
e54112418e Upgrade Gitea 1.18.0
Requires some config changes for the mailer.
2022-12-30 23:05:40 +07:00
0c37504ac6 Merge pull request 'Set up lndhub.go' (#457) from feature/454-lndhub.go into master
Reviewed-on: #457
2022-12-27 06:29:09 +00:00
d8e0124c46 Merge pull request 'Set up PeerSwap for LND' (#459) from feature/peerswap into feature/454-lndhub.go
Reviewed-on: #459
2022-12-27 06:23:09 +00:00
Râu Cao
176dd64438 Remove peerswap policy file from recipe
This will be auto-created anyway, and we don't want to overwrite changes
added by the CLI.
2022-12-26 11:29:17 +07:00
Râu Cao
4f1b1aff30 Set up PeerSwap
Allows to swap sats in and out of Lightning channels without a 3rd party
(and their fees). Instead, swaps can be initiated directly with the
channel peer.

https://www.peerswap.dev/
2022-12-26 11:16:22 +07:00
Râu Cao
b3465e186f Fix comment 2022-12-26 11:16:01 +07:00
Râu Cao
ea635a52e9 Formatting 2022-12-26 11:14:40 +07:00
Râu Cao
90e17b0abc Rename bitcoind recipe
Was still using a name from when the cookbook didn't set up anything
else
2022-12-25 16:28:14 +07:00
Râu Cao
8c8e978ae9 Update node configs 2022-12-24 00:58:31 +07:00
Râu Cao
3d7b4df376 Add rate limit config for lndhub-go 2022-12-24 00:58:11 +07:00
Râu Cao
b738dc1e80 Add nginx proxy hosts for Garage Web access
The respective bucket needs to be configured with a domain alias. When a
new alias is added to the `s3_web_domains` config, a new nginx site can
then be deployed to the `nginx_proxy` hosts.
2022-12-23 18:07:39 +07:00
Râu Cao
3641ea7a60 Deploy lndhub.go branch of akkounts 2022-12-23 18:02:42 +07:00
Râu Cao
a7e04f4e63 Exclude lndhub backups in dev 2022-12-23 14:17:43 +07:00
Râu Cao
e0c400c007 Use correct asset URL for lndhub logo 2022-12-22 20:03:58 +07:00
Râu Cao
7802ea25e6 Ignore chef environment when looking up primary
We use mixed environments still, not everything is in "production" yet.
2022-12-22 19:45:45 +07:00
Râu Cao
fb1206d03f Refactor bitcoin-related roles and node config 2022-12-22 19:35:41 +07:00
Râu Cao
379a503dd0 Move lndhub nginx site to proxy
And configure for lndhub-go. Also configure branding for public lndhub
dashboard
2022-12-22 19:35:30 +07:00
Râu Cao
7d11450c4e Set up lndhub.go
closes #454
2022-12-11 14:30:27 +01:00
430f8b36b6 Merge pull request 'Set up LDAP/dirsrv replication' (#453) from feature/ldap_replication into master
Reviewed-on: #453
2022-12-08 13:12:22 +00:00
26a34a69d3 Merge branch 'master' into feature/ldap_replication 2022-12-08 13:08:00 +00:00
98785a1a86 Merge pull request 'Move Mastodon nginx to proxy/LB' (#452) from feature/mastodon_nginx into master
Reviewed-on: #452
2022-12-08 13:07:35 +00:00
66c91b5a7f Merge branch 'master' into feature/mastodon_nginx 2022-12-08 13:07:09 +00:00
Râu Cao
a460302728 Add missing sidekiq queue 2022-12-01 17:08:17 +01:00
f8fd10c4c2 Merge pull request 'Upgrade Mastodon to 4.0' (#456) from chore/upgrade_mastodon into feature/mastodon_nginx
Reviewed-on: #456
2022-12-01 14:33:20 +00:00
Râu Cao
2ecb4e2385 Upgrade Ruby to 3.0.4 2022-12-01 15:29:38 +01:00
Râu Cao
cdd3f026c4 Always use config for skipping post-deployment migrations 2022-12-01 15:05:24 +01:00
Râu Cao
5d05d5c187 Move Mastodon nginx to proxy/LB 2022-11-30 12:07:54 +01:00
Râu Cao
f3ca307e64 Fix Tor access
Configure alternate_domains for Rails app to re-enable Tor access (was
throwing 403s without this config)
2022-11-30 12:06:25 +01:00
Râu Cao
66f5217a41 Refactor Mastodon nginx recipe for proxy usage
Works both as local deployment and proxy (via roles and environments)

* Use upstreams for proxy_pass
* Access static assets from proxy, configure caching for them
* Move Tor config to environment, install via role
* ...
2022-11-30 12:02:17 +01:00
Râu Cao
83e55c84a2 Use domain name for log file paths 2022-11-30 12:00:01 +01:00
Râu Cao
83513dbd9d Remove request limits for ipfs proxy
In favor of fail2ban
2022-11-30 11:58:22 +01:00
Râu Cao
c4d43b7f4e Make Mastodon services listen on private IP in prod
And allow access to them from the private network
2022-11-30 11:57:51 +01:00
83fea1026c Merge pull request 'Install/configure Garage (S3-compatible object storage cluster)' (#450) from feature/garage into master
Reviewed-on: #450
2022-11-28 17:38:41 +00:00
3df9611a9d Merge pull request 'Store Gitea data (avatars, attachments, etc.) in Garage/S3' (#451) from feature/gitea_s3 into feature/garage
Reviewed-on: #451
2022-11-26 16:19:19 +00:00
Râu Cao
c3e98688fd Deploy second dirsrv supplier
Manually configured (once) to replicate data from and to the first
supplier on `ldap-3`.
2022-11-26 16:47:55 +01:00
Râu Cao
2958ba4b81 Use *.kosmos.local hostnames for LDAP nodes 2022-11-26 16:47:28 +01:00
Râu Cao
991458208d Use a role for configuring LDAP hostname on clients
This way it's also easy to converge all LDAP clients at once.
2022-11-26 16:45:45 +01:00
Râu Cao
8d4db7290e Rename dirsrv_primary role
The term used in 389 docs is "supplier" instead (ex "master")
2022-11-26 16:44:05 +01:00
Râu Cao
e0fb84e56c Store Gitea data (avatars, attachments, etc.) in Garage/S3
Also adds a new garage gateway role, which only allows RPC (inter-node)
traffic to Garage.
2022-11-26 13:05:07 +01:00
Râu Cao
9a89af0fe3 Add basic Garage doc 2022-11-25 10:56:22 +00:00
Râu Cao
20e6bdb7f9 Add production environment, replication for garage
Also deploy a third node in a different data center
2022-11-25 10:56:22 +00:00
Râu Cao
b5ff60214c Install/configure Garage
Add a garage cookbook that installs the garage binary distribution and
creates the necessary configuration and system service.

Also deploy two new VMs to act as storage nodes.

refs #428
2022-11-25 10:56:22 +00:00
34bd187e3e Merge pull request 'Set up fail2ban for nginx, move IPFS gateway to proxy role' (#449) from feature/fail2ban_nginx into master
Reviewed-on: #449
2022-11-24 15:09:05 +00:00
Râu Cao
d06f5d7723 Set up fail2ban for nginx, move IPFS gateway to proxy role 2022-11-24 14:02:43 +01:00
Râu Cao
7f545404b1 Update node info 2022-11-22 21:23:39 +01:00
9dc2b387d1 Merge pull request 'Upgrade kosmos.social to Mastodon 3.5.3' (#448) from chore/upgrade_mastodon into master
Reviewed-on: #448
2022-11-22 20:19:52 +00:00
Greg Karékinian
5a5f8425af Add missing postgresql-client package for backup gem 2022-11-07 16:30:45 +01:00
Greg Karékinian
97fe328312 Add missing pg_db recipe on postgresql_primary role 2022-11-07 16:30:02 +01:00
Greg Karékinian
ed04753318 Update mastodon-3 node after chef run 2022-11-07 16:28:09 +01:00
Greg Karékinian
4bfb7d5f5d Extract mastodon db backup to its own recipe 2022-11-07 16:22:15 +01:00
Râu Cao
4188b2976b Use Ruby 3.0.3, skip post-deployment migrations 2022-11-07 14:53:52 +01:00
Râu Cao
3620a43190 Upgrade Elasticsearch from 6.x to latest 7.x 2022-11-06 13:56:15 +01:00
5a94050555 Merge pull request 'Prune VM backups after every run' (#447) from feature/439-prune_backups into master
Reviewed-on: #447
2022-11-05 20:42:31 +00:00
Râu Cao
28454c0849 Change VM backup schedule for draco 2022-11-05 17:43:53 +01:00
Râu Cao
6df168f32f Prune VM backups after every run 2022-11-05 17:43:48 +01:00
9c0764a2eb Merge pull request 'Migrate hal8000 to new kredits and nodejs VM' (#445) from feature/migrate_hal8000 into master
Reviewed-on: #445
2022-11-04 18:14:17 +00:00
Râu Cao
65933bef4b Move hubot nginx sites to proxy role, deploy to fornax 2022-11-04 14:41:21 +01:00
Râu Cao
6cce1d9df8 Upgrade hal8000 setup for new hubot-kredits 2022-11-04 14:41:12 +01:00
Râu Cao
534f23eebc Remove obsolete recipes 2022-11-04 14:38:51 +01:00
Râu Cao
37710be28b Bundle main IPFS node recipes in a role
So we can find the VM/IP
2022-11-04 14:37:23 +01:00
1c17906a41 Merge pull request 'Deploy new kredits ipfs-pinner' (#444) from feature/deploy_new_kredits_pinner into master
Reviewed-on: #444
2022-11-03 13:17:47 +00:00
Râu Cao
76fd629e40 Deploy new kredits ipfs-pinner
refs kredits/meta#10
2022-11-03 14:16:37 +01:00
88fa0f12dd Merge pull request 'Upgrade LND to 0.15.4' (#443) from chore/upgrade_lnd into master
Reviewed-on: #443
2022-11-03 10:04:05 +00:00
Râu Cao
0297298ce0 Upgrade LND to 0.15.4
Fixes a critical issue that prevents block sync in production
2022-11-03 11:02:52 +01:00
08bcdcc395 Merge pull request 'Fix IPFS node connectivity from the outside as well as the private network' (#442) from bugfix/ipfs_connectivity into master
Reviewed-on: #442
2022-11-02 18:32:44 +00:00
Râu Cao
90b62e3fc1 Remove ufw logging for ipfs 2022-11-02 19:27:09 +01:00
c9a0310511 Merge branch 'master' into bugfix/ipfs_connectivity 2022-11-02 17:13:55 +00:00
b8d6ba4c89 Merge pull request 'Move block data to CIFS share, other data to VM's own storage' (#438) from feature/bitcoin_data_directories into master
Reviewed-on: #438
2022-11-02 17:13:37 +00:00
Râu Cao
b1922d26f6 Allow IPFS connections on private network
(HAProxy is now also using the private network.)

This fixes IPFS connections to Kosmos nodes from outside the network, as
well as in between nodes on the private network.
2022-11-02 14:06:07 +01:00
Râu Cao
f7ff1248fe Enable Web UI on private network 2022-11-02 14:05:43 +01:00
Râu Cao
bc11301782 Move bitcoind datadir from host to VM storage 2022-10-27 11:52:05 +02:00
Râu Cao
756382ec9f Move block data files to CIFS share
This is the vast majority of disk space used on the host currently.
2022-10-26 15:49:03 +02:00
Râu Cao
458558fb26 Deploy different content on kosmos.org for now 2022-10-24 15:13:18 +02:00
446148b28a Merge pull request 'Downgrade go-ipfs to 0.15' (#437) from chore/downgrade_ipfs into master
Reviewed-on: #437
2022-10-24 12:19:25 +00:00
Râu Cao
67f6e1b34a Downgrade go-ipfs to 0.15
Fixes #435
2022-10-24 14:18:19 +02:00
945283738a Merge pull request 'Set up live backups for all VMs' (#433) from feature/qemu_snapshots into master
Reviewed-on: #433
2022-10-22 11:52:26 +00:00
33ae6befaa Merge pull request 'Block outgoing traffic to local networks by default' (#434) from feature/block_outoing_local_traffic into feature/qemu_snapshots
Reviewed-on: #434
2022-10-22 11:50:28 +00:00
Râu Cao
58e6e7de03 Remove ufw logs
Just added them to check the blocking for a while
2022-10-22 13:03:16 +02:00
Râu Cao
1afc3a5de5 Block outgoing traffic to local networks by default
Some software, e.g. go-ipfs, is rather aggressive in scanning local
networks for peers, which can trigger abuse reports and IP locks in the
data center.
2022-10-21 13:37:38 +02:00
Râu Cao
61710aa4a4 Set up systemd service and timer for backups 2022-10-21 10:50:04 +02:00
Râu Cao
95941c830f Remove verbose stats outout from backup script 2022-10-21 10:49:30 +02:00
Râu Cao
a5b2eb5f97 Move borg credentials to a separate file
To be used from a service
2022-10-21 10:49:02 +02:00
Râu Cao
374654f8fd Update chef/ohai on hosts 2022-10-21 10:47:46 +02:00
Râu Cao
7051cc9da8 Update draco's main IP address 2022-10-21 10:47:17 +02:00
Râu Cao
51163ca3a3 Whitelist Chef attributes for newer client versions 2022-10-21 10:46:16 +02:00
Râu Cao
927bb63535 Add kvm_guest role to nodes 2022-10-19 16:28:07 +02:00
Râu Cao
34a57fa298 Merge branch 'lnd_tor_changes' into feature/qemu_snapshots 2022-10-19 15:23:39 +02:00
Râu Cao
6d765f959d Fix backup VM name for ldap-3
(and potentially other guests where the name differs from the libvirt
domain name)
2022-10-19 12:51:46 +02:00
Râu Cao
82f50b0caa Only back up domain-specific XML per archive 2022-10-19 12:24:10 +02:00
Râu Cao
6c8f9055c1 Create directories for KVM host backup files 2022-10-19 12:23:54 +02:00
Râu Cao
2e2ebbcc02 Fix filenames for guest agent sockets 2022-10-19 12:23:17 +02:00
Râu Cao
a3844b7ef6 WIP Add KVM host backup recipe
Add a recipe that configures scripts for live backups of VM images via
libvirt and borg.
2022-10-19 12:08:05 +02:00
Râu Cao
6d50a32aca Add FIXME note 2022-10-19 12:08:05 +02:00
Râu Cao
7848b4d365 Add jitsi-meet-1 VM 2022-10-19 12:08:04 +02:00
Râu Cao
063e9e070c Add borg credentials 2022-10-19 12:08:04 +02:00
Râu Cao
b78e6685ed Add kvm_guest role to VMs on fornax 2022-10-19 12:07:56 +02:00
Râu Cao
895d293899 Update RSKj version 2022-10-18 18:46:53 +02:00
11062f5180 Merge pull request 'Add guest agent device when creating VMs' (#431) from bugfix/qemu_guest_agent into master
Reviewed-on: #431
2022-10-12 14:34:06 +00:00
Râu Cao
315cd247e5 Enable qemu-guest-agent after install
This is actually automatically done for the service from the apt
package, but I like specifying it explicitly as well.
2022-10-12 15:55:08 +02:00
Râu Cao
e73b8fb01f Add guest agent device when creating VMs
This is necessary for qemu-guest-agent to actually work
2022-10-12 15:53:00 +02:00
d26ab2249c Merge pull request 'Deploy a Discourse instance for remoteStorage' (#430) from feature/discourse_wrappers into master
Reviewed-on: #430
2022-10-11 16:08:52 +00:00
Greg Karékinian
fe8e66fda3 Add the new rs-discourse-1 server 2022-10-11 18:00:48 +02:00
Greg Karékinian
410c238450 Update the discourse-2 and fornax nodes after Chef run 2022-10-11 18:00:31 +02:00
Greg Karékinian
378fee85ec Create a discourse cookbook that can be wrapped
It makes it possible to serve multiple Discord instances to different
hosts from a single nginx load balancer

Right now we run one for Kosmos and one for remoteStorage
2022-10-11 17:58:22 +02:00
Râu Cao
e90b265f7e Remove superfluous license headers 2022-10-10 15:29:17 +02:00
a5ac53caef Merge pull request 'Upgrade LND, bitcoind' (#429) from chore/upgrade_lnd into master
Reviewed-on: #429
2022-10-10 11:47:19 +00:00
Râu Cao
bec54e6ffb Upgrade LND, bitcoind
LND needs an emergency hotfix, released in 0.15.2, due to a subtle
Taproot transaction parsing limitation in a library it depends on.
2022-10-10 13:46:12 +02:00
Greg Karékinian
1270488ef9 Remove ldap-2 VM 2022-10-03 14:45:00 +02:00
7026e0e85b Merge pull request 'Upgrade Gitea to 1.17.2' (#427) from chore/upgrade_gitea into master
Reviewed-on: Kosmos/chef#427
2022-09-21 09:33:01 +00:00
Râu Cao
ff907384d9 Upgrade Gitea to 1.17.2 2022-09-21 11:32:20 +02:00
2360ad2ac0 Merge pull request 'Move LDAP server to new VM' (#426) from chore/new_ldap_vm into master
Reviewed-on: #426
2022-08-23 13:01:30 +00:00
Greg Karékinian
e4d4aa45f7 Use FQDN for hostname, add LDAP server 2022-08-22 16:16:01 +02:00
Greg Karékinian
85abfd4e5e Create the required groups and ACIs 2022-08-22 16:15:02 +02:00
Râu Cao
80c3e4e270 Create ldap-3 VM 2022-08-22 13:40:26 +01:00
Râu Cao
f17a420a64 Update VM base image 2022-08-22 13:40:07 +01:00
607466b1d2 Merge pull request 'Add KVM Guest role' (#409) from feature/kvm_guest_role into master
Reviewed-on: #409
2022-08-22 11:46:43 +00:00
d7aeb0e483 Merge pull request 'Upgrade Gitea to 1.17.0' (#424) from chore/upgrade_gitea into master
Reviewed-on: #424
2022-08-18 08:33:48 +00:00
Râu Cao
65adc84e5b Upgrade Gitea to 1.17.0
Also adds a new Nginx directive to allow larger uploads to the Docker
registry endpoints.

closes #422
2022-08-09 11:58:56 +02:00
fdb326b91a Merge pull request 'Move Zerotier controller' (#421) from chore/move_zerotier_controller into master
Reviewed-on: #421
2022-08-08 10:58:22 +00:00
Râu Cao
37b948cbe5 Remove custom cron job
refs #395
2022-08-08 12:57:30 +02:00
4adccb7411 Merge pull request 'Enable cron job to delete repo archives' (#423) from chore/395-gitea_cron into master
Reviewed-on: #423
2022-08-08 10:54:26 +00:00
Râu Cao
08b7c7a5ac Enable cron job to delete repo archives
closes #395
2022-08-08 12:51:26 +02:00
Râu Cao
206bb69100 Update node info 2022-07-31 13:05:59 +02:00
Râu Cao
41d4f87710 Move Zerotier controller
It's running on fornax now, and the VMs have been deleted. This way,
there's no internal routing needed for it to be publicly accessible by
any network member nodes.
2022-07-28 15:38:42 +02:00
8f43b34a86 Merge pull request 'Upgrade Gitea to 1.16.9' (#420) from chore/upgrade_gitea into master
Reviewed-on: #420
2022-07-16 14:43:02 +00:00
8d332e76f3 Upgrade Gitea to 1.16.9 2022-07-16 16:42:19 +02:00
3fb3fd0f11 Merge pull request 'Update root path for kosmos website' (#419) from chore/new_website into master
Reviewed-on: #419
2022-07-14 11:41:14 +00:00
562da400e3 Update root path for kosmos website 2022-07-11 13:31:31 +02:00
7de33b4e94 Merge pull request 'Fix VM base images being overwritten' (#417) from bugfix/vm_base_images into master
Reviewed-on: #417
2022-06-11 09:20:42 +00:00
a1db277f2f Merge branch 'master' into bugfix/vm_base_images 2022-06-11 09:20:09 +00:00
52d7fe52e5 Fix VM base images being overwritten
The base image is used as backing image for the VM images, so
overwriting it results in corrupt data after VM reboots.
2022-06-11 11:17:42 +02:00
7482283696 Merge pull request 'Fix MUC service/domains not being announced' (#416) from bugfix/muc_discovery into master
Reviewed-on: #416
2022-06-11 09:16:23 +00:00
a85415ef48 Fix MUC service/domains not being announced
Only subdomains of `hosts` are automatically announced, but other
domains have to be added manually via the `extra_domains` disco module
config.

fixes #413
2022-06-03 18:07:50 +02:00
9d61e28911 Merge pull request 'Upgrade ejabberd to 22.05' (#414) from chore/upgrade_ejabberd into master
Reviewed-on: #414
2022-05-31 15:08:36 +00:00
48cdd62973 Upgrade ejabberd to 22.05
Tested/running on all cluster nodes. Due to changes in the upstream
package we were able to remove some complexity from the recipe. Deleting
code FTW!

closes #334
2022-05-31 16:27:07 +02:00
e55805bc1b Update ejabberd node info 2022-05-31 11:33:52 +02:00
a1e2c21bcb Fix abuse address info in XMPP service discovery
It wasn't replacing the @HOST@ placeholder with the actual vhost domain.
2022-05-31 11:32:55 +02:00
24bc5bc4df Merge pull request 'Support multiple different VMs in Vagrant' (#411) from vagrant/dirsrv into master
Reviewed-on: #411
2022-05-27 13:41:28 +00:00
cae4547b12 Merge branch 'master' into vagrant/dirsrv 2022-05-27 13:41:06 +00:00
3261be556d Merge pull request 'Set up nginx proxy for akkounts/kredits API' (#412) from feature/kredits_api into master
Reviewed-on: #412
2022-05-27 13:30:40 +00:00
a93c5e5af6 Allow external HTTP requests to BTCPay
Limited to private network via firewall rule.
2022-05-24 15:10:24 +02:00
92d1bcd8c7 Add nginx proxy for akkounts/kredits API
closes #410
2022-05-24 15:03:51 +02:00
7a52f2bd89 Allow BTCPay API access over private network 2022-05-24 13:08:41 +02:00
d8781f7581 Finish multi-VM config 2022-05-24 12:46:37 +02:00
630ea5113e Support multiple VMs in Vagrant config 2022-05-24 12:43:16 +02:00
77e7eed795 Configure Vagrant for dirsrv 2022-05-23 12:47:17 +02:00
a0b64a709d Add KVM Guest role
Only installs qemu-guest-agent for now, for improving live VM backups.
2022-05-23 12:41:55 +02:00
6a85c2d5c6 Merge pull request 'Move dirsrv (LDAP) primary node to new VM' (#401) from new_ldap_server into master
Reviewed-on: #401
2022-05-11 14:55:05 +00:00
2d6cbd22e4 Add ejabberd-8 node config 2022-05-11 16:27:21 +02:00
48c3fef1a1 Remove TLS config for ejabberd LDAP 2022-05-11 16:27:21 +02:00
decd937d43 Remove superfluous license header 2022-05-11 16:27:21 +02:00
e89e0b3122 Fix letsencrypt bootstrap for ejabberd 2022-05-11 16:27:21 +02:00
b3f1a74cc2 Remove obsolete ejabberd backups 2022-05-11 16:27:21 +02:00
Greg Karékinian
32f620e95c Update the wiki-1 node after Chef run 2022-05-11 16:23:18 +02:00
Greg Karékinian
e766a96d3b Update the discourse-2 node after Chef run 2022-05-11 16:23:18 +02:00
Greg Karékinian
a14cd9a74f New config for LDAP in Discourse 2022-05-11 16:23:18 +02:00
Greg Karékinian
0d133de1b8 New config and credentials for LDAP connection in mediawiki 2022-05-11 16:23:17 +02:00
5c31531357 Merge pull request 'Configure STUN/TURN for ejabberd and nginx proxy' (#407) from feature/ejabberd_stun_n_turn into new_ldap_server
Reviewed-on: #407
2022-05-11 14:21:14 +00:00
Greg Karékinian
5c00e2d28a Add an attribute containing the LDAP server's address 2022-05-11 15:37:36 +02:00
c158f845f0 Configure STUN/TURN for ejabberd and nginx proxy 2022-05-11 15:27:49 +02:00
36e52a3cf1 Merge pull request 'Use the new LDAP server in the ejabberd configuration' (#406) from chore/ejabberd_new_ldap_server into new_ldap_server
Reviewed-on: #406
2022-05-11 12:57:24 +00:00
Greg Karékinian
c56870008e Use the new LDAP services application accounts 2022-05-11 14:49:28 +02:00
Greg Karékinian
e53e55cb2d Disable TLS for LDAP since we're using Zerotier networking 2022-05-11 14:49:00 +02:00
Greg Karékinian
ff7cb1ce4a Generate a hosts entry for the LDAP server 2022-05-11 14:48:30 +02:00
Greg Karékinian
1502d1956d Set new passwords for the LDAP service accounts 2022-05-11 14:47:32 +02:00
45218ed024 Merge pull request 'Update Gitea to 1.16.6' (#404) from chore/gitea_1.16.6_update into new_ldap_server
Reviewed-on: #404
2022-05-10 09:53:26 +00:00
Greg Karékinian
907706d1d2 Set up the hosts entry for the new LDAP server 2022-05-10 11:50:49 +02:00
Greg Karékinian
b869002c1a Update Gitea to 1.16.6 2022-05-10 11:50:35 +02:00
Greg Karékinian
7ffd3bbf73 Add LDAP's Zerotier IP to the akkount server's hosts 2022-04-28 12:12:10 +02:00
1da5ef4979 Merge branch 'master' into new_ldap_server 2022-04-28 09:23:18 +02:00
3cc11e58d3 Add ldap-2 node config 2022-04-26 20:11:17 +02:00
590366639e Fix fresh dirsrv installs on Ubuntu 20.04 2022-04-26 20:10:51 +02:00
8fe3670ce9 Remove ldap-1 node configs 2022-04-26 20:10:00 +02:00
71f9b06d28 Tor improvements for bitcoin cookbook 2022-04-19 14:08:02 +02:00
a633834a1b Change rate limit for LndHub API 2022-04-18 10:42:47 +02:00
ae342106c9 Merge pull request 'Upgrade Gitea to 1.16.5' (#400) from chore/upgrade_gitea into master
Reviewed-on: #400
2022-04-11 10:52:34 +00:00
994e5873d6 Upgrade Gitea to 1.16.5
Also add our hack-fix cron job to the recipe, so it doesn't get lost
when creating new VMs or otherwise.
2022-04-11 12:50:44 +02:00
8f4d11b317 Add cron job for deleting repo archives 2022-04-11 12:31:00 +02:00
5617591e1c Merge pull request 'Rebuild broken VMs, fix small issues in various cookbooks' (#399) from sheesh into master
Reviewed-on: #399
2022-04-03 13:47:08 +00:00
f758c74b5f Rebuild broken VMs on fornax 2022-03-22 16:25:50 -06:00
bb8467b6ab Switch Discourse deploy branch from master to main 2022-03-22 16:24:40 -06:00
ac1414e24e Open alternative SSH port on KVM hosts 2022-03-22 16:24:14 -06:00
eabb6ab404 Switch more cookbooks from kosmos-redis to redisio
refs #349
2022-03-22 16:23:26 -06:00
71dda86d94 Remove obsolete license header 2022-03-22 16:21:29 -06:00
b6bd8ee6cd Upgrade Sockethub to latest alpha 2022-03-18 11:47:51 -06:00
d5268167b5 Upgrade node.js from 12 to 14 everywhere 2022-03-18 11:47:23 -06:00
8e28d39acd Remove superfluous license header 2022-03-18 11:47:04 -06:00
e3d0f8f83f Merge pull request 'Move static sites from centaurus to fornax' (#398) from chore/move_static_sites into master
Reviewed-on: #398
2022-03-17 21:13:24 +00:00
f17dd53f69 Include Stream configs in Nginx config if missing 2022-03-17 14:28:13 -06:00
4cd0149f76 Move static sites from centaurus to fornax/LB 2022-03-17 14:27:50 -06:00
5e38edb57e Merge pull request 'Move Gitea and Drone CI to new VMs' (#396) from chore/move_gitea_and_drone into master
Reviewed-on: #396
2022-03-17 19:38:04 +00:00
9c34e82484 Remove obsolete hosts entries for Gitea and Drone
They should use normal DNS
2022-03-17 13:02:56 -06:00
e1560ba12a Fix copypasta 2022-03-12 15:40:22 -06:00
0a953070fe Create nginx_proxy role
Used to configure hosts entries in the Gitea and Drone VMs, as well as
the allowed webhooks config for Gitea.
2022-03-12 15:39:07 -06:00
b270a2c1fd Add database secret for Drone CI
closes #388
2022-03-12 15:05:16 -06:00
9187985acc Move Gitea and Drone to new VMs 2022-03-12 14:47:06 -06:00
f35fb638d1 Adapt Drone recipes for VM setup, use PostgreSQL 2022-03-12 14:46:48 -06:00
a1b07dfb9e Adapt Gitea recipes for new VM setup 2022-03-12 14:46:45 -06:00
23e49134e7 Remove superfluous license headers 2022-03-12 14:42:03 -06:00
f8a59b9720 WIP Use clearnet connections for clearnet LND nodes 2022-03-10 11:53:40 -06:00
c25e3632af Upgrade RTL 2022-03-03 21:42:35 -06:00
b0ff8ec2a4 Merge pull request 'Upgrade RSKj to 3.2.0' (#394) from chore/upgrade_rsk into master
Reviewed-on: #394
2022-03-03 15:29:57 +00:00
13c7774433 Upgrade RSKj to 3.2.0 2022-03-03 09:06:30 -06:00
8d7dacffd5 Merge pull request 'Fix Sockethub being offline due to missing HAProxy and UFW configs' (#392) from bugfix/sockethub_firewall into master
Reviewed-on: #392
2022-03-02 15:57:05 +00:00
5f94c9752d Merge pull request 'Deploy Kosmos LndHub fork with lnurl-pay additions' (#393) from chore/fork_lndhub into master
Reviewed-on: #393
2022-03-02 15:56:44 +00:00
a091e07c72 Deploy Kosmos LndHub fork with lnurl-pay additions 2022-03-02 09:54:01 -06:00
f50e7874ba Remove old sockethub firewall recipe 2022-02-27 16:08:40 -06:00
2e8004b37a Add sockethub::firewall to draco, update node info 2022-02-27 13:10:00 -06:00
b9775a26e4 Rename sockethub firewall recipe
Not just used internally anymore.
2022-02-27 13:09:42 -06:00
1586fd536a Remove superfluous license header 2022-02-27 13:09:17 -06:00
227e4a4665 Update node info 2022-02-26 09:47:31 -06:00
d7c5e40602 Merge pull request 'Deploy new akkounts' (#390) from chore/deploy_akkounts into master
Reviewed-on: #390
2022-02-19 17:53:36 +00:00
e9c5286b24 Deploy new akkounts
Requires a newer version of Ruby.
2022-02-19 11:52:48 -06:00
74083256f4 Update zerotier-2 host 2022-02-18 13:19:42 -06:00
dc5813a8bb Remove old zerotier VM config 2022-02-18 13:18:43 -06:00
203f89fe6b Merge pull request 'Migrate Discourse to new VM on fornax' (#389) from chore/migrate_discourse into master
Reviewed-on: #389
2022-02-18 19:02:49 +00:00
Greg Karékinian
ee6bde5b23 Update discourse-1 node after running Chef 2022-02-18 20:00:18 +01:00
Greg Karékinian
58f2544a9e Remove the discourse role from centaurus 2022-02-18 19:59:17 +01:00
Greg Karékinian
98547088f1 Add the zerotier IP for fornax 2022-02-18 19:58:59 +01:00
Greg Karékinian
7582cafb77 Explicitly install snapd package
It was not installed on fornax for example
2022-02-18 19:42:43 +01:00
Greg Karékinian
31631ddc4a Add missing recipe 2022-02-18 19:39:04 +01:00
5b2ae82ce6 Remove obsolete IP from nginx config 2022-02-18 12:23:37 -06:00
910817a7d4 Create certbot site before normal site 2022-02-18 12:23:14 -06:00
163b12efbc Add firewall rule for Discourse 2022-02-18 12:22:15 -06:00
Greg Karékinian
79f623de4e Prepare fornax and discourse-1 for the discourse migration 2022-02-18 18:15:33 +01:00
Greg Karékinian
e8f46db49c Extract the nginx config for discourse to a recipe
Get the upstream servers automatically from Chef nodes
2022-02-18 18:14:33 +01:00
7a8fb1bc78 Add new Discourse VM 2022-02-17 13:02:10 -06:00
e46c8b3e81 Put Vagrant IP in new VirtualBox default allowed range 2022-02-12 10:58:15 -06:00
3c7cc1a133 Update node status 2022-02-12 10:57:26 -06:00
28659665a0 Merge pull request 'Migrate nodejs-2 from centaurus to nodejs-3 on fornax' (#386) from chore/move_nodejs_vm into master
Reviewed-on: #386
2022-02-12 16:56:25 +00:00
6454c56b70 Merge pull request 'Fix Webhooks for Drone not working in Gitea 1.16' (#387) from bugfix/allow_drone_webhooks into master
Reviewed-on: #387
2022-02-12 16:56:01 +00:00
03c7940f1c Fix Webhooks for Drone not working in Gitea 1.16
By default, only external requests are allowed:

https://github.com/go-gitea/gitea/pull/17482
2022-02-12 10:53:45 -06:00
a710182c39 Add missing user recipe import to botka recipe 2022-02-10 17:00:19 -06:00
18161832ef Deploy new nodejs VM (nodejs-3) 2022-02-10 17:00:10 -06:00
a2f1b7ccc6 Merge pull request 'Deploy new Zerotier Controller VMs' (#385) from chore/move_zerotier into master
Reviewed-on: #385
2022-02-10 21:38:47 +00:00
935eff3b84 Deploy zerotier-3 on DO
Changes the firewall config to allow the control UI to be reached from
all connected networks.
2022-02-10 15:34:28 -06:00
a1f723d52e Deploy zerotier-2 VM on fornax 2022-02-10 15:34:12 -06:00
c337ad9e40 Remove obsolete node configs 2022-02-10 15:33:23 -06:00
04a036c2b8 Merge pull request 'Move Mastodon to new VM on fornax' (#383) from chore/mastodon_move into master
Reviewed-on: #383
2022-02-10 21:32:56 +00:00
a4b50d1643 Merge pull request 'Upgrade Gitea to 1.16.1' (#384) from chore/upgrade_gitea into master
Reviewed-on: #384
2022-02-10 21:32:51 +00:00
22f5b8a66c Upgrade Gitea to 1.16.1 2022-02-10 15:32:25 -06:00
b823ad5e59 Switch Mastodon cookbook to new Redis cookbook
Also add new node config.

refs #349

Co-authored-by Greg Karékinian <greg@karekinian.com>
2022-02-10 15:29:02 -06:00
341806ec8a Update jemalloc binary path
Co-authored-by Greg Karékinian <greg@karekinian.com>
2022-02-10 15:26:37 -06:00
abe0218998 Merge pull request 'Upgrade knife-zero for Ruby 3.0' (#381) from chore/upgrade_knife into master
Reviewed-on: #381
2022-02-02 23:32:26 +00:00
dace2ddf79 Upgrade knife-zero for Ruby 3.0
Was failing with latest Chef DK.
2022-02-02 17:31:13 -06:00
da1afcbf46 Merge pull request 'Upgrade Gitea to 1.15.11' (#380) from chore/upgrade_gitea into master
Reviewed-on: #380
2022-02-01 18:49:33 +00:00
4462975e51 Upgrade Gitea to 1.15.11 2022-02-01 12:47:37 -06:00
3c76a1e0ad Merge pull request 'Configure/install boltzd for Lightning/on-chain swaps' (#378) from feature/boltz-lnd into master
Reviewed-on: #378
2022-01-28 23:38:49 +00:00
471c23eb5b Update node config/state 2022-01-28 17:33:34 -06:00
90bd2dadb2 Configure boltzd access for RTL 2022-01-28 17:33:22 -06:00
87334de83a Configure/install boltzd 2022-01-28 17:33:10 -06:00
d9bb257f99 Move golang installation to own recipe
Needed by more than one in the bitcoin cookbook now.
2022-01-28 17:32:19 -06:00
13ae913668 Upgrade nbxplorer
Needed a newer version of the .NET SDK as well.
2022-01-28 17:31:14 -06:00
727210aa74 Merge pull request 'Add new ejabberd node, remove old ones' (#377) from chore/ejabberd_cluster_nodes into master
Reviewed-on: #377
2022-01-23 18:18:23 +00:00
8509e0af58 Add new ejabberd node 2022-01-23 12:15:14 -06:00
05dbf5211f Remove old ejabberd node 2022-01-23 12:15:04 -06:00
bf6a77e41a Merge pull request 'Use private IP for ejabberd TURN' (#376) from chore/ejabberd_stun into master
Reviewed-on: #376
2022-01-23 18:09:46 +00:00
622fabe151 Use private IP for ejabberd TURN 2022-01-19 14:38:53 -06:00
3c3ca3f24a Merge pull request 'Replace ejabberd cluster' (#375) from chore/ejabberd_cluster into master
Reviewed-on: #375
2022-01-19 19:35:04 +00:00
6c8a98c524 Run Chef with ejabberd role against new cluster nodes 2022-01-18 12:50:14 -06:00
58736f05ee Remove node configs for old ejabberd cluster 2022-01-18 12:50:14 -06:00
62c95175cc Only allow ZeroTier connections for ejabberd cluster 2022-01-18 12:50:13 -06:00
74dd59ad07 Write hostname-related configs for new ejabberd cluster 2022-01-18 12:50:10 -06:00
5b351036ba Remove superfluous license header 2022-01-18 11:19:20 -06:00
024b4bf164 Fix typo 2022-01-18 11:19:19 -06:00
14d83b4376 Add ejabberd-4 VM 2022-01-18 10:15:39 -06:00
a2c5295afd Create ejabberd-3 VM 2022-01-18 10:15:37 -06:00
eb7c245ea1 Merge pull request 'Upgrade nbxplorer, c-lightning, BTCPay' (#373) from chore/upgrade_bitcoin_software into master
Reviewed-on: #373
2022-01-08 23:19:23 +00:00
d53e1b538b Update nbxplorer to 2.2.18 2022-01-08 17:17:04 -06:00
0e9a657090 Upgrade BTCPay to 1.3.7 2022-01-08 16:48:58 -06:00
3d54f7052f Upgrade c-lightning to 0.10.2 2022-01-08 16:48:58 -06:00
ca79b6031a Merge pull request 'Fix LndHub balances for on-chain topups' (#372) from bugfix/lndhub_onchain_topups into master
Reviewed-on: #372
2022-01-08 22:48:09 +00:00
14cc2c0eb0 Fix lndhub balances with on-chain topups
Removes the bitcoind RPC config entirely, so lndhub only uses LND's
transaction monitoring. The bitcoind integration is broken as is.
2022-01-08 16:38:01 -06:00
ec10a0c120 Merge pull request 'Connect to IRC bouncer instead of directly' (#371) from chore/fix_botka_connection into master
Reviewed-on: #371
2022-01-06 14:15:36 +00:00
f6fe3bab0f Connect to IRC bouncer instead of directly
Changes botka on libera to connect to a bouncer, which also uses SASL,
in order to fix the connection issues and keep a stable connection with
minimal maintenance.
2022-01-06 08:12:42 -06:00
62ff4e51b7 Merge pull request 'Back up LND files and channels to S3' (#370) from feature/359-lnd_channel_backups into master
Reviewed-on: #370
2022-01-03 17:38:46 +00:00
31f4a547a9 Backup LND SCB to S3 on change
closes #359
2021-12-23 13:06:32 +01:00
56f58f3a1b Install/configure AWS client 2021-12-23 13:06:12 +01:00
57b5a244fa Remove superfluous license header 2021-12-23 13:05:44 +01:00
0b80d490a8 Back up LND dir to S3 2021-12-23 13:05:14 +01:00
7adee84adf Merge pull request 'Upgrade Mastodon to 3.4.4' (#368) from chore/upgrade_mastodon into master
Reviewed-on: #368
2021-12-09 13:32:21 +00:00
a0de016e1c Add single sidekiq process for new scheduler queue 2021-12-05 16:27:05 -06:00
38756fd296 Upgrade Mastodon to latest version
Using a new branch with freshly added Kosmos changes on top of the
upstream release code.
2021-12-05 16:11:09 -06:00
3d06300167 Merge pull request 'Upgrade LND to 0.14.1' (#367) from chore/upgrade_lnd into master
Reviewed-on: #367
2021-12-05 01:59:56 +00:00
bbef38b6d6 Update golang cookbook 2021-12-04 19:57:19 -06:00
a8948053d6 Update LND to 0.14.1
closes #351
2021-12-04 19:56:49 -06:00
da3a70ef4c WIP dirsrv changes 2021-12-02 13:56:23 -06:00
Greg Karékinian
685deea920 Simplify dirsrv setup
Connecting directly using zerotier, no more nginx
2021-12-02 19:08:27 +01:00
Greg Karékinian
d1d48cb749 Add role for ldap (dirsrv) 2021-12-02 19:08:16 +01:00
Greg Karékinian
067f5ba0d9 Add node config for ldap-1 2021-12-02 19:07:55 +01:00
a75237e0fb Merge pull request 'Set up public HTTPS endpoint for RSKj' (#337) from feature/rskj_public_endpoint into master
Reviewed-on: #337
2021-12-02 17:26:00 +00:00
5ac53633cd Merge branch 'master' into feature/rskj_public_endpoint 2021-12-02 17:07:47 +00:00
62d7998da8 Merge pull request 'Deploy/configure LndHub' (#350) from feature/lndhub into master
Reviewed-on: #350
2021-12-02 17:07:17 +00:00
6f29ede8d3 Merge branch 'master' into feature/lndhub 2021-12-02 16:59:46 +00:00
91905e0490 Merge pull request 'Fix backup email notifications' (#366) from bugfix/358-backups into master
Reviewed-on: #366
2021-12-01 22:52:58 +00:00
f7afc21f9e Use pbkdf2 for backup key derivation
Fixes a warning thrown by OpenSSL during backup runs, and makes it more
secure.
2021-11-30 13:38:34 -06:00
c30733e5aa Send backup notifiations when run ends with warning 2021-11-30 13:38:18 -06:00
e63cda3317 Use SMTP/Mailgun for backup notifications 2021-11-30 13:37:51 -06:00
3d1937823a Merge pull request 'Add documentation for backups/restores' (#365) from docs/backup into master
Reviewed-on: #365
2021-11-30 18:46:37 +00:00
172553ddb3 Add documentation for backups/restores 2021-11-30 12:45:52 -06:00
1a7f7fee45 Merge pull request 'Configure/deploy kosmos.org (with Lightning Address support)' (#360) from feature/kosmos_org_nginx into master
Reviewed-on: #360
2021-11-30 18:29:11 +00:00
9e94440975 Merge pull request 'Update kosmos postgres cookbook name in other cookbooks' (#364) from chore/postgres_cookbook_deps into master
Reviewed-on: #364
2021-11-30 15:19:43 +00:00
a184f27c96 Update kosmos postgres cookbook name in other cookbooks 2021-11-30 08:47:15 -06:00
584da20d3e Deploy nginx reverse proxy for RSK mainnet 2021-11-29 13:55:04 -06:00
0e1b362644 Fix nginx config, deploy LE cert 2021-11-29 13:33:43 -06:00
e414dfc23f Merge branch 'master' into feature/rskj_public_endpoint 2021-11-29 13:18:42 -06:00
70fe5f81a5 Merge pull request 'Rename postgres cookbook, deploy new replica' (#363) from chore/update_postgres_cookbook into master
Reviewed-on: #363
2021-11-29 19:15:52 +00:00
91ffe75bc1 Add missing files 2021-11-29 13:12:17 -06:00
ecdc41a54f Rename postgres cookbook, deploy new replica
fixes #361
closes #330
2021-11-29 13:09:13 -06:00
1d8af6e86f Merge pull request 'Fix custom resource not found in newer Chef versions' (#362) from chore/update_postgres_cookbook into master
Reviewed-on: #362
2021-11-29 19:06:54 +00:00
fa8cbac163 Fix custom resource not found in newer Chef versions
fixes #361
refs #337
2021-11-29 13:03:40 -06:00
cbf42b9414 Add node config for fornax 2021-11-29 11:23:17 -06:00
f68eceec4c Remove obsolete role 2021-11-28 10:08:39 -06:00
0628d091dc Update rsk-testnet-2 with new rskj-testnet role 2021-11-28 10:05:48 -06:00
c9d32e02aa Remove old RSK testnet node config 2021-11-28 10:02:28 -06:00
35115b7391 Merge branch 'master' into feature/rskj_public_endpoint 2021-11-28 10:02:06 -06:00
7e49dfd520 Merge pull request 'Deploy RSK mainnet node, and new testnet node' (#346) from feature/343-rsk_mainnet into master
Reviewed-on: #346
2021-11-28 16:01:04 +00:00
d14d109a00 Configure/deploy kosmos.org
Includes a new directive for Lightning Address resolution.
2021-11-26 14:10:39 -06:00
6b2e501c90 Add LndHub backups 2021-11-26 11:22:24 -06:00
3962666a39 Re-enable Tor recipe 2021-11-25 19:44:42 -06:00
1e6c40b136 Update README 2021-11-25 19:37:48 -06:00
5d8e98e4a9 Merge pull request 'Upgrade Drone CI from 1.0 to 2.5' (#357) from chore/upgrade_drone into master
Reviewed-on: #357
2021-11-25 23:29:23 +00:00
5717d11f7e Upgrade Drone CI to latest version
closes #356
2021-11-25 17:28:13 -06:00
9656399e9d Remove superfluous license header 2021-11-25 17:27:48 -06:00
11e9b569ae Merge pull request 'Upgrade Gitea to 1.15.6' (#354) from chore/upgrade_gitea into master
Reviewed-on: #354
2021-11-25 22:49:58 +00:00
24f94bdb02 Upgrade Gitea to 1.15.6
Configures the JWT signing algorithm to be the old, less secure
algorithm, until we update the token for Drone CI (and any other OAuth
apps).

closes #338
2021-11-25 16:44:48 -06:00
f93909da70 Update akkounts-1 node info 2021-11-22 23:46:36 -06:00
931a3a196f Add public HTTP reverse proxy for LndHub 2021-11-21 13:22:40 -06:00
e48cf04e6c Deploy LndHub to bitcoin-2
Update the node config
2021-11-17 11:11:45 -06:00
0481e42aa4 Install/configure LndHub 2021-11-16 16:03:46 -06:00
4b9183d78d Use older Redis cookbook, install on bitcoin-2 2021-11-16 14:11:42 -06:00
18f65c4fc5 Add new Redis cookbook 2021-11-16 13:25:30 -06:00
80ec84782b Berkshelf vendor changes 2021-11-16 13:25:08 -06:00
b911ec92c9 Update node info 2021-11-16 13:23:25 -06:00
65532836ff Merge pull request 'Improve botka IRC config' (#347) from chore/botka_config into master
Reviewed-on: #347
2021-10-23 09:29:36 +00:00
ca33dbe624 Improve botka IRC config
Use TLS, specify port.
2021-10-23 11:28:29 +02:00
e6ad9865bc Add roles for RSK testnet/mainnet 2021-10-22 14:02:56 +02:00
83202747cf Move RSKj firewall config to own recipe 2021-10-22 14:02:41 +02:00
ce7a7d5f83 Update RSKj version 2021-10-22 14:01:39 +02:00
5dd44fc283 Add new RSK VM node configs 2021-10-22 14:00:09 +02:00
ca13acb99f Remove obsolete Parity role 2021-10-22 13:59:42 +02:00
fc70895d9c Merge pull request 'Configure/deploy botka for libera.chat on nodejs-2 VM' (#341) from feature/upgrade_and_move_botka_irc into master
Reviewed-on: #341
2021-09-21 15:52:23 +00:00
ee0a587dad Upgrade botka, deploy for Libera.Chat to nodejs-2
Note: Temporarily disables wormhole, because it's still on Freenode,
where its credentials have been deleted by the new "management".
2021-09-13 18:21:46 +02:00
abec4be8ff Update Gemfile.lock 2021-09-03 10:29:32 +02:00
efda3f6fdb Merge pull request 'Update Sockethub to 4.1.0' (#339) from chore/update_sockethub into master
Reviewed-on: #339
2021-09-03 08:29:10 +00:00
2a5d68cda9 Update Sockethub to 4.1.0
Tested/running on `nodejs-2`.
2021-09-03 10:28:07 +02:00
483481b141 Merge pull request 'Deploy Sockethub from the npm package' (#146) from feature/145-sockethub_from_npm into master
Reviewed-on: #146
2021-08-31 09:00:07 +00:00
3817284566 Bump version 2021-08-09 19:12:45 +02:00
89e27a040f Set up public HTTPS endpoint for RSKj
refs #325
2021-08-09 19:02:14 +02:00
0ffddb9d0f Merge pull request 'Upgrade Gitea to 1.14.6' (#336) from chore/upgrade_gitea into master
Reviewed-on: #336
2021-08-09 14:11:33 +00:00
8bbb4deed7 Upgrade Gitea to 1.14.6 2021-08-09 16:10:40 +02:00
fe66092c26 Merge pull request 'Upgrade LND to 0.13.1' (#335) from chore/upgrade_lnd into master
Reviewed-on: #335
2021-08-09 14:01:19 +00:00
bf009d6822 Upgrade LND to 0.13.1 2021-08-09 16:00:19 +02:00
Greg Karékinian
e00d6c3a86 Use the sockethub role in the run list 2021-07-14 10:14:38 +02:00
Greg Karékinian
383a46676e Create a role for sockethub 2021-07-14 10:14:28 +02:00
Greg Karékinian
eed27713ff Add the sockethub firewall rule to centaurus 2021-07-14 10:14:07 +02:00
Greg Karékinian
b5e7e4ab85 Use DNS validation to generate/renew the TLS cert 2021-07-14 10:13:35 +02:00
Greg Karékinian
7c2aae6650 Add sockethub to nodejs-2's run list 2021-07-09 11:52:58 +02:00
Greg Karékinian
d135b3873c Switch to a systemd unit Chef resource 2021-07-09 11:32:33 +02:00
Greg Karékinian
e9c86081f7 Update sockethub to the latest npm release 2021-07-09 11:32:11 +02:00
Greg Karékinian
b8ac5e1c07 Merge branch 'master' into feature/145-sockethub_from_npm 2021-07-09 10:51:02 +02:00
7fc0a65a22 Merge pull request 'Upgrade all bitcoin software to latest versions' (#328) from chore/upgrade_bitcoin_software into master
Reviewed-on: #328
2021-07-07 09:42:33 +00:00
bb6394ab42 Merge pull request 'Add Tor support for LND' (#332) from feature/lnd_tor into chore/upgrade_bitcoin_software
Reviewed-on: #332
2021-07-07 09:40:37 +00:00
b17c81a1aa Merge branch 'chore/upgrade_bitcoin_software' into feature/lnd_tor 2021-07-07 09:36:11 +00:00
b7af04e8be Support Tor connections for LND
Adds basics for general Tor support in bitcoin recipes, and specific
support for Tor to the lnd recipe.
2021-07-01 15:34:06 +02:00
9f0b5f0e64 (tor) Add support for ControlPort and CookieAuthentication
Allow to configure Tor to be controlled by other applications, so they
can manage hidden services and such.
2021-07-01 15:32:28 +02:00
c60e65020b Merge pull request 'Auto-unlock LND wallet/node' (#331) from feature/auto_unlock_lnd into chore/upgrade_bitcoin_software
Reviewed-on: #331
2021-07-01 13:21:41 +00:00
37873fb881 Add data bag for LND credentials 2021-07-01 13:17:51 +02:00
4bda4d7857 Install LND with all subsystems enabled
This allows to run loopd and other tools.
2021-06-30 17:10:57 +02:00
2ca576468e Auto-unlock LND wallet/node
The latest release added a new config option for auto-unlocking the
wallet/node using a password file. This changeset adds support for just
that to the lnd recipe, so that nobody has to manually unlock it after
reboots or service restarts.
2021-06-30 17:09:31 +02:00
a65065c793 Upgrade all bitcoin software to latest versions 2021-06-29 15:55:20 +02:00
f095094cf7 Fix compilation issue with dotnet services
Compilation fails while the executable is running.
Fixed by stopping the services before upgrades.
2021-06-29 15:53:52 +02:00
3dcb9e76ce Update node info 2021-06-29 15:53:22 +02:00
aa98b07f33 Merge pull request 'Configure/deploy RSKj' (#326) from feature/deploy_rsk_testnet into master
Reviewed-on: #326
2021-06-21 16:38:55 +00:00
54274cef77 Merge branch 'master' into feature/deploy_rsk_testnet 2021-06-21 16:37:26 +00:00
65140f92ed Merge pull request 'Upgrade Gitea to 1.14.3' (#327) from chore/322-update_gitea into master
Reviewed-on: #327
2021-06-21 16:36:55 +00:00
b6d0bafce0 Remove license header, improve formatting 2021-06-21 17:50:23 +02:00
bbaeeb5099 Upgrade Gitea to 1.14.3
Adds a new config for the repository root directory.

closes #322
2021-06-21 17:47:30 +02:00
40a943354a Update generated docs 2021-06-16 11:35:40 +02:00
5bc4266857 Merge pull request 'Use Chef Workstation's ruby with rbenv' (#324) from chore/remove_bundler_version_lock into master
Reviewed-on: #324
2021-06-15 20:26:23 +00:00
Greg Karékinian
9a3565c11f Only keep the knife-zero gem in the Gemfile
The rest is already shipped with Chef Workstation
2021-06-15 22:21:04 +02:00
cbdbb9c2eb Switch to dokken for testing in kitchen 2021-06-13 17:50:32 +02:00
37787ce3e6 Specify package version for rskj 2021-06-13 17:50:25 +02:00
2063f5c953 WIP RSK cookbook 2021-06-13 16:58:53 +02:00
d7af1a57d1 Create RSK testnet VM 2021-06-12 14:52:36 +02:00
bda100313e Update README
Add some info about Chef Workstation and rbenv.
2021-05-28 14:51:42 +02:00
ec75f1446c Use chef-workstation Ruby with rbenv
See https://github.com/docwhat/rbenv-chef-workstation for painlessly
using Chef Workstation's Ruby with rbenv.
2021-05-28 14:40:02 +02:00
6bd76ebec6 Don't require old bundler version 2021-05-28 14:36:07 +02:00
dbdb803b7a Merge pull request 'Upgrade Gitea from 1.13.1 to 1.13.7' (#321) from chore/update_gitea into master
Reviewed-on: #321
2021-04-10 09:01:26 +00:00
7624bcec11 Upgrade Gitea from 1.13.1 to 1.13.7 2021-04-10 11:00:00 +02:00
18a5e0d5d0 Merge pull request 'Deploy hubots from Gitea repos' (#320) from chore/hubot_repos into master
Reviewed-on: #320
2021-04-09 20:03:21 +00:00
f9c992e48e Merge branch 'master' into chore/hubot_repos 2021-04-09 11:48:38 +00:00
Greg Karékinian
87d50d067c Add updated upstream nodejs cookbook
... and its new dependency, chocolatey
2021-04-09 13:18:35 +02:00
c99f82fcd4 Update cookbook version 2021-04-09 11:45:39 +02:00
29e1d64ae0 Remove superfluous license headers from recipe files 2021-04-09 11:44:36 +02:00
9939e4d993 Deploy hubots from Gitea repos
The repos have been moved over from GitHub.
2021-04-09 11:35:49 +02:00
18e45cdaab Merge pull request 'Upgrade nodejs to the latest version from the repo' (#319) from feature/upgrade_nodejs into master
Reviewed-on: #319
2021-03-30 12:02:31 +00:00
769843e6ab Merge branch 'master' into feature/upgrade_nodejs 2021-03-30 12:01:26 +00:00
Greg Karékinian
edf2e071e4 Upgrade nodejs to the latest version from the repo
This is possible in newer versions of the nodejs cookbook, by setting
the `node["nodejs"]["package_action"]["nodejs"]` attribute to `:upgrade`
2021-03-30 13:58:55 +02:00
aea5e07d2e Merge pull request 'Set the environment variables in the hubot-kredits dir' (#318) from feature/315-kredits_for_reviews_fix into master
Reviewed-on: #318
2021-03-30 11:58:26 +00:00
Greg Karékinian
f937e5dc68 Set the environment variables in the hubot-kredits dir
This is meant to be executed as a script manually, not as part of Hubot.

Example usage:

    cd /opt/hal8000_xmpp/node_modules/hubot-kredits
    ./scripts/review-kredits.js --start 2021-02-01 --end 2021-02-28T23:59:59Z --dry

Closes #315
2021-03-30 13:54:21 +02:00
9fc49deafe Merge pull request 'Fix an undefined variable' (#317) from bugfix/dirsrv_undefined_variable into master
Reviewed-on: #317
2021-03-30 10:33:47 +00:00
9b2ba2c714 Merge branch 'master' into bugfix/dirsrv_undefined_variable 2021-03-30 10:33:35 +00:00
0504001e31 Merge pull request 'Deploy hubot with new hubot-kredits' (#316) from feature/315-kredits_for_reviews into master
Reviewed-on: #316
2021-03-30 10:19:30 +00:00
Greg Karékinian
346b6540d1 Fix an undefined variable 2021-03-30 12:14:40 +02:00
Greg Karékinian
45817ba997 Update the barnard node file after running Chef 2021-03-30 12:12:27 +02:00
Greg Karékinian
9415b71965 Deploy hubot with new hubot-kredits
It includes a script for creating Kredits for reviews

Refs #135
2021-03-30 12:11:03 +02:00
3502fb0eec Merge pull request 'Tell browsers to cache Gitea avatars for 30 days' (#313) from bugfix/312-gitea_avatar_caching into master
Reviewed-on: #313
2021-02-26 21:25:41 +00:00
891b5f3fee Tell browsers to cache Gitea avatars for 30 days
fixes #312
2021-02-26 20:41:53 +01:00
ab515e2101 Merge pull request 'Use shared Kosmos webfont for Gitea' (#311) from feature/gitea_fonts into master
Reviewed-on: #311
2021-02-25 16:38:37 +00:00
5559ca41a7 Support IPv6 and CORS for font hosting 2021-02-25 17:38:11 +01:00
a96d29c716 Merge branch 'master' into feature/gitea_fonts 2021-02-25 15:38:06 +00:00
13ea0e3148 Merge pull request 'Set up assets.kosmos.org for shared static file/webfont hosting' (#309) from feature/static_assets into master
Reviewed-on: #309
2021-02-25 15:22:52 +00:00
474208ea8e Use shared Kosmos webfont for Gitea
Currently using a custom rule for system fonts. This change also adds a
missing new class to the custom rule to cover Markdown-generated content
like e.g. comments.
2021-02-25 14:29:41 +01:00
6109707f3c Host assets.kosmos.org on centaurus 2021-02-25 12:13:20 +01:00
1c47f9ab27 Add cookbook for static asset hosting
Configures assets.kosmos.org, only for webfont hosting for now.
2021-02-25 12:12:41 +01:00
09f0faadda Add missing header to recipe 2021-02-24 19:11:53 +01:00
26e8698e4f Merge pull request 'Replace expired Zoom authentication token for hal8000' (#308) from chore/update_zoom_jwt into master
Reviewed-on: #308
2021-02-18 18:53:45 +00:00
adc2ed895f Merge pull request 'Update node.js (apt repo)' (#307) from chore/update_nodejs_apt_repo into master
Reviewed-on: #307
2021-02-18 18:53:18 +00:00
fd901f6e64 Update Zoom JWT 2021-02-18 18:51:36 +01:00
f7d3736712 Update node details
Removes unused recipes from generated runlist
2021-02-18 18:51:11 +01:00
f3def7b71d Update node.js (apt repo) 2021-02-10 23:47:23 +01:00
bac66d4dba Merge pull request 'Configure/run Sidekiq for Akkounts' (#304) from feature/303-akkounts_sidekiq into master
Reviewed-on: #304
2021-02-08 21:17:54 +00:00
f88ccae8a6 Merge branch 'master' into feature/303-akkounts_sidekiq 2021-02-08 21:17:43 +00:00
25e3dae4d4 Merge pull request 'Set up Zerotier Controller UI' (#305) from feature/zncui into master
Reviewed-on: #305
2021-02-08 21:16:53 +00:00
9a54a7554f Use package resource instead of custom command 2021-02-08 20:01:22 +01:00
e1bcd5efa0 Set up Zerotier Control UI
Install/configure ztncui[1], with HTTP access allowed from within the
private network.

[1]: https://key-networks.com/ztncui/
2021-02-07 17:44:08 +01:00
1adf3281bf Configure/run Sidekiq for Akkounts 2021-02-03 19:53:13 +01:00
241f0807b3 Merge pull request 'Fix/refactor bitcoind recipe, upgrade bitcoind to 0.21' (#298) from chore/update_bitcoin-core into master
Reviewed-on: #298
2021-01-28 15:26:31 +00:00
fe0a955314 Merge pull request 'Update lnd to 0.12.0' (#299) from chore/update_lnd into chore/update_bitcoin-core
Reviewed-on: #299
2021-01-27 17:06:34 +00:00
65185b1a1b Update lnd to 0.12.0 2021-01-27 18:05:30 +01:00
0d2a04f8ba Refactor bitcoind recipe
Fixes various issues, like compilation not starting on subsequent
version updates, service not restarting after compilation, and a TODO
note on the compilation script itself.
2021-01-26 12:45:28 +01:00
152edbc958 Update bitcoind to 0.21 2021-01-26 12:45:17 +01:00
40fe403879 Stop c-lightning before compilation
See https://github.com/ElementsProject/lightning/issues/4346 for
potential issues with not doing that.
2021-01-26 12:33:09 +01:00
9023c14849 Merge pull request 'Update c-lightning to v0.9.3' (#297) from chore/update_c-lightning into master
Reviewed-on: #297
2021-01-26 11:07:21 +00:00
c3256a07cc Fix c-lightning configure not finding python
Broke in the latest release.
2021-01-26 12:05:29 +01:00
461af035ac Update c-lightning to 0.9.3 2021-01-26 12:05:19 +01:00
e3507879a1 Merge pull request 'BTCPay recipe fixes (compilation + PostgreSQL config)' (#296) from chore/btcpay_update_and_recipe_fix into master
Reviewed-on: #296
2021-01-26 10:52:03 +00:00
5a5db43de3 Use new postgres client role and config
Fixes btcpay having still used the old postgres master, and integrating
it into the global client config setup from here on out.
2021-01-26 11:49:20 +01:00
f7d3abc307 Stop BTCPay server before compilation
fixes #291
2021-01-26 11:48:41 +01:00
f1ff34d769 Merge pull request 'Add Onion-Location header for kosmos.social' (#295) from feature/mastodon_onion_header into master
Reviewed-on: #295
2021-01-25 11:14:38 +00:00
49c75bbb05 Add Onion-Location header for kosmos.social
Tells Tor Browser where to find the native onion site.

refs #201
2021-01-25 12:09:28 +01:00
0920803535 Merge pull request 'Add script for notifying Kosmos channels from Ruby' (#279) from feature/notify_xmpp_from_ruby into master
Reviewed-on: #279
2021-01-25 10:59:05 +00:00
ad271e55d4 Merge pull request 'Move PostgreSQL to VMs and access via Zerotier' (#282) from feature/postgres_vms into master
Reviewed-on: #282
2021-01-25 10:56:42 +00:00
a3136e820b Merge pull request 'Update Gitea to 1.13.1' (#293) from chore/253-gitea_1.13.1 into master
Reviewed-on: #293
2021-01-24 12:49:49 +00:00
c2f36c6f01 Merge pull request 'Update ejabberd to 20.12' (#294) from chore/ejabberd_20.12 into master
Reviewed-on: #294
2021-01-24 12:47:37 +00:00
Greg Karékinian
90ce664f2e Update ejabberd to 20.12
It fixes a bug that prevented the config to be reloaded for LDAP options
(https://github.com/processone/ejabberd/issues/3181) and more:
https://www.process-one.net/blog/ejabberd-20-12/
2021-01-24 10:14:29 +01:00
Greg Karékinian
0e5519a4b7 Update Gitea to 1.13.1
Running on centaurus

Closes #253
2021-01-24 10:12:37 +01:00
Greg Karékinian
1ad7a6936c Generate the hosts entry for the PostgreSQL replica 2021-01-24 10:11:17 +01:00
Greg Karékinian
b1fea4b09f Update the postgres-3 node after Chef run 2021-01-23 19:25:49 +01:00
Greg Karékinian
7ce8b7d461 Enable PostgreSQL service 2021-01-23 19:14:55 +01:00
Greg Karékinian
112eb903ec Add a script to switch the primary PostgreSQL server
Usage: scripts/postgresql/switch_primary.sh <old_primary_hostname> <new_primary_hostname>
2021-01-23 19:13:54 +01:00
Greg Karékinian
7e61e9cb45 Promote a new PostgreSQL primary: postgres-2 2021-01-23 19:09:41 +01:00
Greg Karékinian
a7116b8fe5 Switch the TLS mode to disabled for Gitea
We connect through a Zerotier private IP
2021-01-23 19:08:06 +01:00
Greg Karékinian
a4a35da0ff Replace the hardcoded primary pg IP with a hostname 2021-01-23 17:34:58 +01:00
Greg Karékinian
5cb390f340 Remove the postgresql_replica from centaurus, run Chef
I have also deleted the data directory (in /mnt/data)
2021-01-23 17:11:45 +01:00
Greg Karékinian
4e1bd458f3 Update the mastodon-1 node after Chef run 2021-01-23 17:11:45 +01:00
Greg Karékinian
40fde8a861 Update the ejabberd nodes after Chef run 2021-01-23 17:11:45 +01:00
Greg Karékinian
39d0304ab4 Update the akkounts-1 node after Chef run 2021-01-23 17:11:45 +01:00
Greg Karékinian
ee7b3626be Generate a host entry for the current PostgreSQL primary 2021-01-23 17:11:45 +01:00
Greg Karékinian
286cd2f2a3 Move the postgresql_client role to the top
We want the host file to be written before database connections happen
2021-01-23 17:11:45 +01:00
Greg Karékinian
1e3a2b40d4 Add the postgresql_client role to the akkounts role 2021-01-23 17:11:45 +01:00
Greg Karékinian
bb0e73d1b9 Switch ejabberd, mastodon and gitea to a hostname for Postgres 2021-01-23 17:11:45 +01:00
Greg Karékinian
fdd70d1872 Remove postgres-1 server
It was created with an encfs volume inside a VM, we want full disk encryption
instead. I have deleted the VM from centaurus as well as its disk and
have also unauthorized its id from the zerotier controller
2021-01-23 17:11:45 +01:00
bd48dab1d8 Set up postgres-3 VM 2021-01-23 17:06:15 +01:00
Greg Karékinian
41ca5938a2 Merge branch 'master' into feature/postgres_vms 2021-01-23 14:43:58 +01:00
e31f9ced96 Merge pull request 'Re-enable and improve Tor access for kosmos.social' (#292) from feature/mastodon_tor into master
Reviewed-on: #292
2021-01-23 13:32:57 +00:00
05cd38a5b9 Re-enable and improve Tor access for kosmos.social 2021-01-23 14:22:34 +01:00
d1929fcc9c Merge pull request 'Fix LN nodes not being accessible from the outside' (#289) from bugfix/lnd_externalip into master
Reviewed-on: #289
2021-01-23 11:07:38 +00:00
Greg Karékinian
6ec747d416 Add missing credentials for zerotier 2021-01-22 18:43:05 +01:00
Greg Karékinian
cbcb50bc86 Create a zerotier_controller role 2021-01-22 18:41:46 +01:00
Greg Karékinian
eba7d63b43 Delete the test-2 client and node file 2021-01-22 18:41:46 +01:00
Greg Karékinian
5fa23fe872 Remove the andromeda client and node files 2021-01-22 18:41:46 +01:00
Greg Karékinian
0e1a73b18f Set the private Zerotier IP for draco in the node file 2021-01-22 18:41:46 +01:00
Greg Karékinian
9b4756441a Add a recipe to join the private Zerotier network 2021-01-22 18:41:45 +01:00
Greg Karékinian
dd78b8cf7e Use the PG primary private Zerotier IP if it exists 2021-01-22 18:41:45 +01:00
Greg Karékinian
88e52607e3 Add a recipe to set up a hosts entry for the PG primary 2021-01-22 18:41:45 +01:00
Greg Karékinian
511400a7b8 Update hostsfile and add zerotier cookbook 2021-01-22 18:41:45 +01:00
Greg Karékinian
9a4420fc11 Add the ability to pass a disk size to the create_vm script
Defaults to 10GB
2021-01-22 18:41:45 +01:00
fd4844a012 Fix ejabberd API permission for akkounts VMs
It should have been using a /32, not a /8 subnet, in order to only allow
the akkounts VM(s) to use the API endpoints without further
authorization.
2021-01-22 18:41:45 +01:00
d018b6570d Use default Redis database now 2021-01-22 18:41:45 +01:00
69c1994840 Update node data 2021-01-22 18:41:45 +01:00
d121971cca Set up mastodon-1 VM 2021-01-22 18:41:45 +01:00
1403d91631 Remove extra license header 2021-01-22 18:41:45 +01:00
6da190b110 Don't configure HTTPS site when certs missing 2021-01-22 18:41:45 +01:00
8a870f6fd6 Don't fail on first run, when Tor hostname missing 2021-01-22 18:41:45 +01:00
ad64bfc0be Update system package dependencies for 20.04 2021-01-22 18:41:45 +01:00
971a3a25a1 Remove extra license headers
And update year in LICENSE file
2021-01-22 18:41:45 +01:00
Greg Karékinian
ab422155e4 Add the ability to pass a disk size to the create_vm script
Defaults to 10GB
2021-01-22 13:49:23 +01:00
775ec691ef Add firewall rules for LND and c-lightning 2021-01-14 21:25:35 +01:00
6c6026958b Fix typo in port number of externalip config 2021-01-14 21:23:03 +01:00
d1ab4c24ea Merge pull request 'Set up new Mastodon VM, fix/improve Chef recipes' (#284) from chore/move_mastodon_to_vm into master
Reviewed-on: #284
2021-01-14 15:17:19 +00:00
e7fbd57189 Merge branch 'master' into chore/move_mastodon_to_vm 2021-01-14 15:16:17 +00:00
12a3fa5b4e Use default Redis database now 2021-01-13 17:06:36 +01:00
9224aa9d97 Update node data 2021-01-13 17:06:25 +01:00
a27b6a1601 Merge pull request 'Fix ejabberd API permission for akkounts VMs' (#283) from bugfix/ejabberd_api_permission into master
Reviewed-on: #283
2021-01-13 10:40:29 +00:00
ab3ca92228 Merge branch 'master' into bugfix/ejabberd_api_permission 2021-01-13 10:40:06 +00:00
62320106cb Set up mastodon-1 VM 2021-01-13 09:50:37 +01:00
c622f81572 Remove extra license header 2021-01-13 09:50:10 +01:00
047526e0fc Don't configure HTTPS site when certs missing 2021-01-13 09:49:49 +01:00
9d13acd41a Don't fail on first run, when Tor hostname missing 2021-01-13 09:49:36 +01:00
4d0259493f Update system package dependencies for 20.04 2021-01-13 09:48:23 +01:00
c4fa9e6ec1 Remove extra license headers
And update year in LICENSE file
2021-01-12 18:42:14 +01:00
74cf26846e Fix ejabberd API permission for akkounts VMs
It should have been using a /32, not a /8 subnet, in order to only allow
the akkounts VM(s) to use the API endpoints without further
authorization.
2021-01-12 18:06:16 +01:00
4872677066 Configure postgres recipes for VMs and zerotier access
* Remove encfs (using encrypted volumes instead)
* Allow access without TLS from zerotier network
2021-01-07 13:53:30 +01:00
9d9907f0ed Remove extra license copy from recipe, update year 2021-01-07 12:53:44 +01:00
4309efd228 Add postgres-2 VM 2021-01-07 12:53:20 +01:00
4ca875a77b Merge pull request 'Create postgres-1 VM' (#281) from feature/280-postgres_vm into master
Reviewed-on: #281
2021-01-07 11:29:37 +00:00
Greg Karékinian
af54777250 Create postgresql-1 VM
Refs #280
2021-01-07 12:04:52 +01:00
Greg Karékinian
f6086e2f6a Add the firewall rules to the postgresql role 2021-01-07 12:02:35 +01:00
6db296a7f1 Merge pull request 'Move wormhole from barnard to nodejs-2' (#278) from chore/move_wormhole into master
Reviewed-on: #278
2021-01-07 10:42:41 +00:00
1eb73711a2 Remove application_javascript usage from wormhole recipe 2021-01-06 19:12:36 +01:00
eb4764026b Add script for notifying Kosmos channels from Ruby
An example for notifying Kosmos XMPP channels from plain Ruby, with no
dependencies.
2021-01-06 11:27:50 +01:00
fe63f01f7b Move wormhole from barnard to nodejs-2
Fixed two small bugs in the recipe:

* hubot user wasn't created when necessary
* systemd template always included redis service dependency
2021-01-05 18:03:15 +01:00
333a76f086 Merge pull request 'Configure and run LND and RTL' (#274) from feauture/lnd into master
Reviewed-on: #274
2021-01-05 10:33:37 +00:00
9ab097dd9a Merge pull request 'Configure local LND as Lightning node in BTCPay Server' (#275) from feature/btcpay_lnd_settings into feauture/lnd
Reviewed-on: #275
2021-01-05 10:33:01 +00:00
876d857dde Merge pull request 'Create new nodejs VM, move kredits-github to it' (#277) from chore/nodejs-2 into master
Reviewed-on: #277
2021-01-05 10:32:44 +00:00
ddded6fbae Create new nodejs VM, move kredits-github to it 2021-01-05 11:30:31 +01:00
adfd76aa64 Configure local LND as Lightning node in BTCPay Server 2021-01-02 09:59:50 +01:00
2b765e744a Configure and run RTL
Ride The Lightning is a Web UI for Lightning Network nodes. It is
accessible via the bitcoin VM's private zerotier IP on port 3000.
2021-01-01 17:42:57 +01:00
19e3dfa7b9 Remove obsolete non-standard RPC and REST ports
We'll just run those on default ports without custom config.
2021-01-01 14:14:59 +01:00
37f1fa79e7 Use standard Lightning Network port for LND
Only use the non-standard one internally, so we can run both c-lightning
and lnd on the same machine.
2021-01-01 14:13:58 +01:00
f5f234c0fd Use name of existing node
Migrated from andromeda to bitcoin-2.
2021-01-01 14:13:17 +01:00
5a8d780d37 Merge pull request 'Fix a syntax error in certbot dirsrv hook' (#273) from bugfix/272-certbot_dirsrv into master
Reviewed-on: #273
2020-12-31 11:54:17 +00:00
bf3bb3ed97 Merge branch 'master' into bugfix/272-certbot_dirsrv 2020-12-31 10:41:06 +00:00
Greg Karékinian
456639bdf8 Fix a syntax error in certbot dirsrv hook
The newline was not escaped and rendered as an actual newline

Fixes #272
2020-12-31 11:38:49 +01:00
1360836377 Merge pull request 'Set up NBXplorer, BTCPay Server, and C-Lightning with Chef' (#270) from feature/btcpay_server into master
Reviewed-on: #270
2020-12-31 10:25:08 +00:00
8a6b81485a Merge branch 'master' into feature/btcpay_server 2020-12-31 10:20:28 +00:00
3fcdc8b056 Configure and run LND 2020-12-31 10:10:22 +01:00
61accc05c2 Add nginx proxy for BTCPay 2020-12-29 15:56:53 +01:00
c71d243c40 Merge pull request 'Add a firewall rule to allow PostgreSQL clients to connect' (#269) from bugfix/postgresql_client_firewall into master
Reviewed-on: #269
2020-12-22 22:15:06 +00:00
7d0490f3da Merge branch 'master' into bugfix/postgresql_client_firewall 2020-12-22 17:16:49 +00:00
5892e3c0ab Configure and run c-lightning daemon 2020-12-22 12:28:29 +01:00
f88354c67c Compile and install c-lightning 2020-12-21 16:53:22 +01:00
bbd5500982 Configure and run BTCPay Server 2020-12-21 13:50:28 +01:00
ca373a1503 Don't require auth cookie for nbxplorer API 2020-12-21 12:25:13 +01:00
570a692bb2 Configure and run nbxplorer 2020-12-21 12:19:30 +01:00
5277bce20b Formatting 2020-12-21 11:14:19 +01:00
aa2aa59e28 Download and build NBXplorer and BTCPay 2020-12-21 11:12:14 +01:00
a2b76c7d76 New recipe: Install .NET Core SDK 2020-12-21 11:01:20 +01:00
bb4b919548 Merge pull request 'Always set the promote trigger file config' (#267) from bugfix/pg_promote_trigger_file into master
Reviewed-on: #267
2020-12-18 21:23:11 +00:00
Greg Karékinian
87388ac69d Add the postgresql_client role to the mastodon role
This will add the firewall rule and pg_hba access rule on the PostgreSQL
servers
2020-12-18 17:54:31 +01:00
Greg Karékinian
c700f98976 Add a firewall rule to allow clients to connect
Previously it was not an issue because services that connected to the
PostgreSQL primary were also on the same server as a standby server.
2020-12-18 17:53:28 +01:00
Greg Karékinian
f75aeaf9b5 Always set the promote trigger file config
Only setting it for standby servers isn't useful, as we need to be able
to touch this file to trigger the promotion of a new primary server
after running Chef on it.
2020-12-18 17:02:13 +01:00
4be542670b Merge pull request 'Add new Zoom meeting ID to hubot-kredits whitelist' (#266) from chore/zoom_meeting_id into master
Reviewed-on: #266
2020-12-17 16:40:24 +00:00
db51f1f332 Add new Zoom meeting ID to whitelist 2020-12-17 14:09:41 +01:00
95c8b9fea9 Merge pull request 'Migrate to self-hosted zerotier network' (#265) from chore/zerotier_migration into master
Reviewed-on: #265
2020-12-13 12:39:14 +00:00
84fdcc4760 Merge pull request 'Fix zerotier network creation' (#262) from bugfix/zerotier_default_rules into master
Reviewed-on: #262
2020-12-13 12:38:59 +00:00
Greg Karékinian
1551fe6d1b Update the ipfs-1 node file after running chef 2020-12-11 19:29:56 +01:00
Greg Karékinian
83736d2a85 Update the bitcoin-2 node file after running chef 2020-12-11 19:28:34 +01:00
4b9dfd9c60 Update node configs 2020-12-11 19:24:12 +01:00
fb996e9abf Join new zerotier network on VM creation 2020-12-11 19:07:11 +01:00
396fe6e714 Whitelist ejabberd custom node attributes
fixes #256
2020-12-11 19:07:06 +01:00
Greg Karékinian
ebfd36bab8 Add nodejs-1 client and node file
Refs #259
2020-12-11 19:02:04 +01:00
c4dbed8d65 Fix zerotier network creation
Using outdated/invalid rules syntax. Remove the property entirely, so
the API will create the default rule (which is the same) on creation.

Co-authored-by: Greg Karékinian <greg@karekinian.com>
2020-12-11 17:42:25 +01:00
2de9d5fe17 Fix typo 2020-12-11 17:40:40 +01:00
8896beab67 Merge pull request 'Configure a zerotier-one network controller' (#260) from feature/zerotier_controller into master
Reviewed-on: #260
2020-12-11 10:42:40 +00:00
8b624b666a Merge branch 'master' into feature/zerotier_controller 2020-12-11 10:39:20 +00:00
ba4e3fdd6f Merge pull request 'Document commands for running Chef against VMs' (#261) from docs/update_readme into master
Reviewed-on: #261
2020-12-11 10:39:08 +00:00
1cb366a160 Add commands for running Chef against VMs 2020-12-10 23:39:59 +01:00
cb8fc25fc8 Configure a zerotier-one network controller 2020-12-10 22:51:35 +01:00
f66f6e2969 Merge pull request 'Add hosts entries for ejabberd private IPs' (#257) from feature/akkounts_xmpp_host into master
Reviewed-on: #257
2020-12-10 13:28:46 +00:00
a06223d764 Merge branch 'master' into feature/akkounts_xmpp_host 2020-12-10 13:27:37 +00:00
0c537d04ef Merge pull request 'Add ejabberd HTTP API permissions for akkounts' (#255) from feature/api_permissions into master
Reviewed-on: #255
2020-12-10 13:27:19 +00:00
f1c8faff85 Merge branch 'master' into feature/api_permissions 2020-12-10 13:26:48 +00:00
623bb1e153 Merge pull request 'Script creating new VMs' (#252) from feature/244-new_vm_script into master
Reviewed-on: #252
2020-12-09 15:33:08 +00:00
Greg Karékinian
a92205bd65 Fix the VM creation script
Also join the zerotier network
2020-12-09 16:29:15 +01:00
Greg Karékinian
77ab77afe8 Update the centaurus and draco nodes after Chef run 2020-12-09 15:42:49 +01:00
Greg Karékinian
6273271d40 Remove kosmos-bitcoin::source from draco
Bitcoind runs inside a VM, not directly on the host
2020-12-09 15:42:19 +01:00
742dc6ff7f Merge branch 'master' into feature/244-new_vm_script 2020-12-09 13:59:52 +00:00
f540661de4 Merge pull request 'Update ejabberd doc' (#254) from docs/ejabberd into master
Reviewed-on: #254
2020-12-09 12:12:51 +00:00
Greg Karékinian
7ceb9af3ed Rename the kosmos_kvm default recipe to host
It makes it clear it is meant for KVM hosts
2020-12-09 11:19:13 +01:00
12125bf0b2 Add hosts entries for ejabberd private IPs 2020-12-08 20:31:01 +01:00
Greg Karékinian
6c907419aa Set the VM name from the script argument 2020-12-08 17:10:40 +01:00
Greg Karékinian
8f304d00ce Remove unused kitchen.yml files 2020-12-08 16:34:24 +01:00
Greg Karékinian
94a34e4758 Add arguments for RAM and number of CPUs 2020-12-08 16:33:27 +01:00
Greg Karékinian
b3c1f81ec6 Set the description of the kosmos_zerotier cookbook 2020-12-08 16:26:14 +01:00
Greg Karékinian
6f7b493173 Create the base Ubuntu 20.04 cloud image with code 2020-12-08 16:25:32 +01:00
Greg Karékinian
176083497c Install the libvirt-daemon-system package
It creates the libvirt-qemu user
2020-12-08 16:25:04 +01:00
Greg Karékinian
89c8f42a46 Set the description for the kosmos_kvm cookbook 2020-12-08 16:03:18 +01:00
02239dd9a8 Update ejabberd doc 2020-12-08 13:13:05 +01:00
Greg Karékinian
1837285b79 Add the kosmos_kvm recipe and the firewall rules
... to the KVM hosts, centaurus and draco

Refs #244
2020-12-04 16:33:18 +01:00
Greg Karékinian
ee7a117d63 Add initial kosmos_zerotier cookbook
For now it only includes the firewall rule

Refs #244
2020-12-04 16:29:22 +01:00
Greg Karékinian
e6b7794e20 Extract firewall definitions to their own recipe
This allows us to use them for KVM hosts as well. Until now we had set
up ufw rules manually on the two KVM hosts (draco and centaurus)

Refs #244
2020-12-04 16:27:42 +01:00
Greg Karékinian
9dbe5bcfcb Deploy a script to create new VMs
It uses `virt-install` with the official Ubuntu 20.04 cloud image as a
starting point, with cloud-init to add our SSH keys to the ubuntu user
and set up Zerotier.

USAGE: create_vm VMNAME

Closes #244
2020-12-04 16:21:52 +01:00
Greg Karékinian
43736cd8e9 Move the debug logs env variable to an attribute
Set it to 'sockethub*' for now as Nick advised, see
#91
2020-03-25 17:51:28 +01:00
Greg Karékinian
29a5947d18 Deploy Sockethub from the npm package
This is currently 3.1.4 and is set as an attribute. The recipe is very
simple now, it installs the npm package, and the systemd service runs
/usr/bin/sockethub and sets the environment variables

Closes #145
2020-03-25 12:43:39 +01:00
1424 changed files with 40826 additions and 44852 deletions

View File

@@ -25,6 +25,8 @@ knife[:automatic_attribute_whitelist] = %w[
cloud_v2 cloud_v2
chef_packages chef_packages
] ]
knife[:default_attribute_whitelist] = []
knife[:normal_attribute_whitelist] = ['knife_zero'] # Added to /etc/chef/client.rb on node bootstrap
knife[:override_attribute_whitelist] = [] # https://docs.chef.io/attribute_persistence/
knife[:normal_attribute_allowlist] = ['knife_zero', 'kosmos_kvm', 'kosmos-ejabberd', 'openresty']
knife[:allowed_normal_attributes] = ['knife_zero', 'kosmos_kvm', 'kosmos-ejabberd', 'openresty']

2
.gitignore vendored
View File

@@ -1,4 +1,6 @@
/.chef/encrypted_data_bag_secret /.chef/encrypted_data_bag_secret
.chef/chef_guid
/.bundle/ /.bundle/
/.vagrant/ /.vagrant/
/.kitchen
/nodes/vagrant-node.json /nodes/vagrant-node.json

9
.gitmodules vendored
View File

@@ -1,3 +1,12 @@
[submodule "site-cookbooks/postgresql"] [submodule "site-cookbooks/postgresql"]
path = site-cookbooks/postgresql path = site-cookbooks/postgresql
url = git@github.com:67P/postgresql.git url = git@github.com:67P/postgresql.git
[submodule "site-cookbooks/openresty"]
path = site-cookbooks/openresty
url = https://github.com/67P/chef-openresty.git
[submodule "site-cookbooks/strfry"]
path = site-cookbooks/strfry
url = git@gitea.kosmos.org:kosmos/strfry-cookbook.git
[submodule "site-cookbooks/deno"]
path = site-cookbooks/deno
url = git@gitea.kosmos.org:kosmos/deno-cookbook.git

1
.ruby-version Normal file
View File

@@ -0,0 +1 @@
chef-workstation

View File

@@ -2,53 +2,45 @@
source 'https://supermarket.chef.io' source 'https://supermarket.chef.io'
cookbook 'mediawiki', cookbook 'elasticsearch', '~> 5.1.3'
git: 'https://github.com/67P/mediawiki-cookbook.git', cookbook 'firewall', '~> 6.2.16'
ref: 'nginx' cookbook 'redisio', '~> 6.4.1'
cookbook 'redis', cookbook 'ruby_build', '~> 2.5.0'
git: 'https://github.com/phlipper/chef-redis.git',
ref: 'v0.5.6'
cookbook 'postfix', '= 5.0.2'
cookbook 'php', '~> 8.0.0'
cookbook 'composer', '~> 2.7.0'
cookbook 'poise-ruby-build', '~> 1.1.0'
cookbook 'application', '~> 5.2.0'
cookbook 'application_javascript', '~> 1.0.0'
cookbook 'application_git', '= 1.1.0' # 1.2.0 doesn't work with knife-solo
cookbook 'poise', '~> 2.8.2'
cookbook 'poise-languages', '~> 2.1.1'
cookbook 'poise-javascript', git: 'https://github.com/67p/poise-javascript.git',
ref: 'e5fff15'
cookbook 'poise-archive', '~> 1.5.0'
cookbook 'poise-service', '~> 1.5.2'
cookbook 'users', '~> 5.3.1'
cookbook 'hostname', '= 0.4.2'
cookbook 'firewall', '~> 2.6.3'
cookbook 'nginx', '= 9.0.0'
# Remove when cookbooks stop depending on it, the build_essential resource is
# part of Chef 14 (https://docs.chef.io/resource_build_essential.html)
cookbook 'build-essential', '~> 8.2.1'
cookbook 'mysql', '~> 8.7.3'
# cookbook 'postgresql', '= 7.1.8'
cookbook 'apt', '~> 7.3.0'
cookbook 'git', '~> 10.0.0'
cookbook 'hostsfile', '= 2.4.5'
cookbook 'ohai', '~> 5.2.5'
cookbook 'nodejs', '~> 5.0.0'
cookbook 'timezone_iii', '= 1.0.4'
cookbook 'ark', '>= 5.0.0'
cookbook 'logrotate', '= 2.2.0'
cookbook 'openssl', '~> 8.5.5'
cookbook 'ntp', '= 3.4.0'
cookbook 'apache2', '= 3.3.0'
cookbook 'chef-sugar', '= 3.3.0'
cookbook 'compat_resource', '= 12.19.0'
cookbook 'homebrew', '= 3.0.0'
cookbook 'mariadb', '= 0.3.1'
cookbook 'ipfs', cookbook 'ipfs',
git: 'https://gitea.kosmos.org/kosmos/ipfs-cookbook.git', git: 'https://gitea.kosmos.org/kosmos/ipfs-cookbook.git',
ref: 'v0.7.0' ref: 'v0.7.0'
cookbook 'elasticsearch', '= 4.2.0' cookbook 'mediawiki',
git: 'https://github.com/67P/mediawiki-cookbook.git',
ref: 'nginx'
cookbook 'postfix',
git: 'https://gitea.kosmos.org/kosmos/postfix-cookbook.git',
ref: 'bugfix/sasl_attributes'
cookbook 'apache2', '= 3.3.0'
cookbook 'apt', '~> 7.3.0'
cookbook 'ark', '>= 5.0.0'
cookbook 'composer', '~> 2.7.0'
cookbook 'fail2ban', '~> 7.0.4'
cookbook 'git', '~> 10.0.0'
cookbook 'golang', '~> 5.3.1'
cookbook 'hostname', '= 0.4.2'
cookbook 'hostsfile', '~> 3.0.1'
cookbook 'java', '~> 4.3.0' cookbook 'java', '~> 4.3.0'
cookbook 'logrotate', '= 2.2.0'
cookbook 'mysql', '~> 8.7.3'
cookbook 'nginx', '= 9.0.0'
cookbook 'nodejs', '~> 7.3.1'
cookbook 'ntp', '= 3.4.0'
cookbook 'ohai', '~> 5.2.5'
cookbook 'openssl', '~> 8.5.5'
cookbook 'php', '~> 8.0.0'
cookbook 'timezone_iii', '= 1.0.4'
cookbook 'ulimit', '~> 1.0.0' cookbook 'ulimit', '~> 1.0.0'
cookbook 'golang', '~> 4.1.0' cookbook 'users', '~> 5.3.1'
cookbook 'zerotier', '~> 1.0.7'
cookbook 'unbound', '~> 3.0.2'
# openresty dependency
cookbook 'jemalloc', '~> 0.1.7'
cookbook 'yum'

View File

@@ -1,158 +1,112 @@
DEPENDENCIES DEPENDENCIES
apache2 (= 3.3.0) apache2 (= 3.3.0)
application (~> 5.2.0)
application_git (= 1.1.0)
application_javascript (~> 1.0.0)
apt (~> 7.3.0) apt (~> 7.3.0)
ark (>= 5.0.0) ark (>= 5.0.0)
build-essential (~> 8.2.1)
chef-sugar (= 3.3.0)
compat_resource (= 12.19.0)
composer (~> 2.7.0) composer (~> 2.7.0)
elasticsearch (= 4.2.0) elasticsearch (~> 5.1.3)
firewall (~> 2.6.3) fail2ban (~> 7.0.4)
firewall (~> 6.2.16)
git (~> 10.0.0) git (~> 10.0.0)
golang (~> 4.1.0) golang (~> 5.3.1)
homebrew (= 3.0.0)
hostname (= 0.4.2) hostname (= 0.4.2)
hostsfile (= 2.4.5) hostsfile (~> 3.0.1)
ipfs ipfs
git: https://gitea.kosmos.org/kosmos/ipfs-cookbook.git git: https://gitea.kosmos.org/kosmos/ipfs-cookbook.git
revision: d7c25b6ce5fa490b6de3529fdc163fb64f1ece8a revision: d7c25b6ce5fa490b6de3529fdc163fb64f1ece8a
ref: v0.7.0 ref: v0.7.0
java (~> 4.3.0) java (~> 4.3.0)
jemalloc (~> 0.1.7)
logrotate (= 2.2.0) logrotate (= 2.2.0)
mariadb (= 0.3.1)
mediawiki mediawiki
git: https://github.com/67P/mediawiki-cookbook.git git: https://github.com/67P/mediawiki-cookbook.git
revision: 78641e53635ba6cbd4a2a51fd597adb8fef1e8ad revision: 78641e53635ba6cbd4a2a51fd597adb8fef1e8ad
ref: nginx ref: nginx
mysql (~> 8.7.3) mysql (~> 8.7.3)
nginx (= 9.0.0) nginx (= 9.0.0)
nodejs (~> 5.0.0) nodejs (~> 7.3.1)
ntp (= 3.4.0) ntp (= 3.4.0)
ohai (~> 5.2.5) ohai (~> 5.2.5)
openssl (~> 8.5.5) openssl (~> 8.5.5)
php (~> 8.0.0) php (~> 8.0.0)
poise (~> 2.8.2) postfix
poise-archive (~> 1.5.0) git: https://gitea.kosmos.org/kosmos/postfix-cookbook.git
poise-javascript revision: dd6598572a775ae73f17527260ec8097b52d385b
git: https://github.com/67p/poise-javascript.git ref: bugfix/
revision: e5fff15098ac80c2a625b8d77d4eaf39d48f7ba7 redisio (~> 6.4.1)
ref: e5fff15 ruby_build (~> 2.5.0)
poise-languages (~> 2.1.1)
poise-ruby-build (~> 1.1.0)
poise-service (~> 1.5.2)
postfix (= 5.0.2)
redis
git: https://github.com/phlipper/chef-redis.git
revision: 7476279fc9c8727f082b8d77b5e1922dc2ef437b
ref: v0.5.6
timezone_iii (= 1.0.4) timezone_iii (= 1.0.4)
ulimit (~> 1.0.0) ulimit (~> 1.0.0)
unbound (~> 3.0.2)
users (~> 5.3.1) users (~> 5.3.1)
yum
zerotier (~> 1.0.7)
GRAPH GRAPH
apache2 (3.3.0) apache2 (3.3.0)
application (5.2.0)
poise (~> 2.4)
poise-service (~> 1.0)
application_git (1.1.0)
application (~> 5.0)
git (>= 0.0.0)
poise (~> 2.0)
application_javascript (1.0.0)
application (~> 5.0)
poise (~> 2.0)
poise-javascript (~> 1.0)
poise-service (~> 1.0)
apt (7.3.0) apt (7.3.0)
ark (5.0.0) ark (6.0.3)
seven_zip (>= 0.0.0) seven_zip (>= 3.1)
build-essential (8.2.1) build-essential (8.2.1)
mingw (>= 1.1) mingw (>= 1.1)
seven_zip (>= 0.0.0) seven_zip (>= 0.0.0)
chef-sugar (3.3.0) chocolatey (3.0.0)
compat_resource (12.19.0)
composer (2.7.0) composer (2.7.0)
apt (>= 0.0.0) apt (>= 0.0.0)
php (>= 0.0.0) php (>= 0.0.0)
windows (>= 0.0.0) windows (>= 0.0.0)
elasticsearch (4.2.0) elasticsearch (5.1.3)
apt (>= 0.0.0)
ark (>= 0.0.0) ark (>= 0.0.0)
chef-sugar (>= 0.0.0) fail2ban (7.0.4)
yum (>= 0.0.0) yum-epel (>= 0.0.0)
firewall (2.6.5) firewall (6.2.16)
chef-sugar (>= 0.0.0)
git (10.0.0) git (10.0.0)
golang (4.1.0) golang (5.3.1)
ark (~> 5.0) ark (>= 6.0)
homebrew (3.0.0) homebrew (5.4.1)
hostname (0.4.2) hostname (0.4.2)
hostsfile (>= 0.0.0) hostsfile (>= 0.0.0)
hostsfile (2.4.5) hostsfile (3.0.1)
ipfs (0.7.0) ipfs (0.7.0)
ark (>= 0.0.0) ark (>= 0.0.0)
java (4.3.0) java (4.3.0)
homebrew (>= 0.0.0) homebrew (>= 0.0.0)
windows (>= 0.0.0) windows (>= 0.0.0)
jemalloc (0.1.7)
build-essential (>= 0.0.0)
logrotate (2.2.0) logrotate (2.2.0)
mariadb (0.3.1)
apt (>= 0.0.0)
yum (>= 0.0.0)
yum-epel (>= 0.0.0)
mediawiki (0.5.0) mediawiki (0.5.0)
apache2 (>= 0.0.0) apache2 (>= 0.0.0)
nginx (>= 0.0.0) nginx (>= 0.0.0)
php (>= 0.0.0) php (>= 0.0.0)
mingw (2.1.0) mingw (2.1.7)
seven_zip (>= 0.0.0) seven_zip (>= 0.0.0)
mysql (8.7.3) mysql (8.7.4)
nginx (9.0.0) nginx (9.0.0)
build-essential (>= 5.0) build-essential (>= 5.0)
ohai (>= 4.1.0) ohai (>= 4.1.0)
yum-epel (>= 0.0.0) yum-epel (>= 0.0.0)
nodejs (5.0.0) nodejs (7.3.3)
ark (>= 2.0.2) ark (>= 2.0.2)
build-essential (>= 0.0.0) chocolatey (>= 3.0)
ntp (3.4.0) ntp (3.4.0)
ohai (5.2.5) ohai (5.2.5)
openssl (8.5.5) openssl (8.5.5)
php (8.0.0) php (8.0.1)
yum-epel (>= 0.0.0) yum-epel (>= 0.0.0)
poise (2.8.2) postfix (6.4.1)
poise-archive (1.5.0) redisio (6.4.1)
poise (~> 2.6) selinux (>= 0.0.0)
poise-build-essential (1.0.0) ruby_build (2.5.0)
poise (~> 2.6) homebrew (>= 0.0.0)
poise-git (1.0.0) yum-epel (>= 0.0.0)
poise (~> 2.6) selinux (6.1.12)
poise-languages (~> 2.1) seven_zip (4.2.2)
poise-javascript (1.2.1)
poise (~> 2.0)
poise-languages (~> 2.0)
poise-languages (2.1.2)
poise (~> 2.5)
poise-archive (~> 1.0)
poise-ruby (2.4.0)
poise (~> 2.0)
poise-languages (~> 2.0)
poise-ruby-build (1.1.0)
poise (~> 2.0)
poise-build-essential (~> 1.0)
poise-git (~> 1.0)
poise-ruby (~> 2.1)
poise-service (1.5.2)
poise (~> 2.0)
postfix (5.0.2)
redis (0.5.6)
apt (>= 0.0.0)
seven_zip (3.1.1)
windows (>= 0.0.0)
timezone_iii (1.0.4) timezone_iii (1.0.4)
ulimit (1.0.0) ulimit (1.0.0)
unbound (3.0.2)
users (5.3.1) users (5.3.1)
windows (6.0.0) windows (7.0.2)
yum (5.1.0) yum (7.4.13)
yum-epel (3.3.0) yum-epel (4.2.3)
zerotier (1.0.7)
ohai (>= 0.0.0)

View File

@@ -1,7 +1,3 @@
source 'https://rubygems.org' source 'https://rubygems.org'
gem 'chef', '~> 15.3.14' gem 'knife-zero', '>= 2.4.2'
gem 'berkshelf', '~> 7.0'
gem 'knife-zero'
gem 'cookstyle'
gem 'test-kitchen'

View File

@@ -1,255 +1,316 @@
GEM GEM
remote: https://rubygems.org/ remote: https://rubygems.org/
specs: specs:
addressable (2.7.0) addressable (2.8.0)
public_suffix (>= 2.0.2, < 5.0) public_suffix (>= 2.0.2, < 5.0)
ast (2.4.0) aws-eventstream (1.2.0)
bcrypt_pbkdf (1.0.1) aws-partitions (1.551.0)
berkshelf (7.0.8) aws-sdk-core (3.125.6)
chef (>= 13.6.52) aws-eventstream (~> 1, >= 1.0.2)
chef-config aws-partitions (~> 1, >= 1.525.0)
cleanroom (~> 1.0) aws-sigv4 (~> 1.1)
concurrent-ruby (~> 1.0) jmespath (~> 1.0)
minitar (>= 0.6) aws-sdk-kms (1.53.0)
mixlib-archive (>= 0.4, < 2.0) aws-sdk-core (~> 3, >= 3.125.0)
mixlib-config (>= 2.2.5) aws-sigv4 (~> 1.1)
mixlib-shellout (>= 2.0, < 4.0) aws-sdk-s3 (1.111.3)
octokit (~> 4.0) aws-sdk-core (~> 3, >= 3.125.0)
retryable (>= 2.0, < 4.0) aws-sdk-kms (~> 1)
solve (~> 4.0) aws-sigv4 (~> 1.4)
thor (>= 0.20) aws-sdk-secretsmanager (1.56.0)
builder (3.2.3) aws-sdk-core (~> 3, >= 3.125.0)
chef (15.3.14) aws-sigv4 (~> 1.1)
aws-sigv4 (1.4.0)
aws-eventstream (~> 1, >= 1.0.2)
bcrypt_pbkdf (1.1.0)
builder (3.2.4)
chef (17.9.42)
addressable addressable
bcrypt_pbkdf (~> 1.0) aws-sdk-s3 (~> 1.91)
bundler (>= 1.10) aws-sdk-secretsmanager (~> 1.46)
chef-config (= 15.3.14) chef-config (= 17.9.42)
chef-utils (= 17.9.42)
chef-vault
chef-zero (>= 14.0.11) chef-zero (>= 14.0.11)
diff-lcs (~> 1.2, >= 1.2.4) corefoundation (~> 0.3.4)
ed25519 (~> 1.2) diff-lcs (>= 1.2.4, < 1.4.0)
erubis (~> 2.7) erubis (~> 2.7)
ffi (~> 1.9, >= 1.9.25) ffi (>= 1.5.0)
ffi-libarchive ffi-libarchive (~> 1.0, >= 1.0.3)
ffi-yajl (~> 2.2) ffi-yajl (~> 2.2)
highline (>= 1.6.9, < 2)
iniparse (~> 1.4) iniparse (~> 1.4)
license-acceptance (~> 1.0, >= 1.0.5) inspec-core (~> 4.23)
license-acceptance (>= 1.0.5, < 3)
mixlib-archive (>= 0.4, < 2.0) mixlib-archive (>= 0.4, < 2.0)
mixlib-authentication (~> 2.1) mixlib-authentication (>= 2.1, < 4)
mixlib-cli (>= 2.1.1, < 3.0) mixlib-cli (>= 2.1.1, < 3.0)
mixlib-log (>= 2.0.3, < 4.0) mixlib-log (>= 2.0.3, < 4.0)
mixlib-shellout (>= 3.0.3, < 4.0) mixlib-shellout (>= 3.1.1, < 4.0)
net-sftp (~> 2.1, >= 2.1.2) net-sftp (>= 2.1.2, < 4.0)
net-ssh (>= 4.2, < 6) ohai (~> 17.0)
net-ssh-multi (~> 1.2, >= 1.2.1)
ohai (~> 15.0)
plist (~> 3.2) plist (~> 3.2)
proxifier (~> 1.0) proxifier (~> 1.0)
syslog-logger (~> 1.6) syslog-logger (~> 1.6)
train-core (~> 3.0) train-core (~> 3.2, >= 3.2.28)
train-winrm train-winrm (>= 0.2.5)
tty-screen (~> 0.6) uuidtools (>= 2.1.5, < 3.0)
uuidtools (~> 2.1.5) vault (~> 0.16)
chef-config (15.3.14) chef-config (17.9.42)
addressable addressable
chef-utils (= 17.9.42)
fuzzyurl fuzzyurl
mixlib-config (>= 2.2.12, < 4.0) mixlib-config (>= 2.2.12, < 4.0)
mixlib-shellout (>= 2.0, < 4.0) mixlib-shellout (>= 2.0, < 4.0)
tomlrb (~> 1.2) tomlrb (~> 1.2)
chef-zero (14.0.13) chef-telemetry (1.1.1)
chef-config
concurrent-ruby (~> 1.0)
chef-utils (17.9.42)
concurrent-ruby
chef-vault (4.1.5)
chef-zero (15.0.11)
ffi-yajl (~> 2.2) ffi-yajl (~> 2.2)
hashie (>= 2.0, < 4.0) hashie (>= 2.0, < 5.0)
mixlib-log (>= 2.0, < 4.0) mixlib-log (>= 2.0, < 4.0)
rack (~> 2.0, >= 2.0.6) rack (~> 2.0, >= 2.0.6)
uuidtools (~> 2.1) uuidtools (~> 2.1)
cleanroom (1.0.0) webrick
concurrent-ruby (1.1.5) coderay (1.1.3)
cookstyle (5.7.0) concurrent-ruby (1.1.9)
rubocop (= 0.72.0) corefoundation (0.3.10)
ffi (>= 1.15.0)
diff-lcs (1.3) diff-lcs (1.3)
ed25519 (1.2.4) erubi (1.10.0)
equatable (0.6.1)
erubis (2.7.0) erubis (2.7.0)
faraday (0.17.0) faraday (1.4.3)
faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0)
faraday-excon (~> 1.1)
faraday-net_http (~> 1.0)
faraday-net_http_persistent (~> 1.1)
multipart-post (>= 1.2, < 3) multipart-post (>= 1.2, < 3)
ffi (1.11.1) ruby2_keywords (>= 0.0.4)
ffi-libarchive (0.4.10) faraday-em_http (1.0.0)
faraday-em_synchrony (1.0.0)
faraday-excon (1.1.0)
faraday-net_http (1.0.1)
faraday-net_http_persistent (1.2.0)
faraday_middleware (1.2.0)
faraday (~> 1.0)
ffi (1.15.5)
ffi-libarchive (1.1.3)
ffi (~> 1.0) ffi (~> 1.0)
ffi-yajl (2.3.1) ffi-yajl (2.4.0)
libyajl2 (~> 1.2) libyajl2 (>= 1.2)
fuzzyurl (0.9.0) fuzzyurl (0.9.0)
gssapi (1.3.0) gssapi (1.3.1)
ffi (>= 1.0.1) ffi (>= 1.0.1)
gyoku (1.3.1) gyoku (1.3.1)
builder (>= 2.1.2) builder (>= 2.1.2)
hashie (3.6.0) hashie (4.1.0)
highline (1.7.10) highline (2.0.3)
httpclient (2.8.3) httpclient (2.8.3)
iniparse (1.4.4) iniparse (1.5.0)
inspec-core (4.52.9)
addressable (~> 2.4)
chef-telemetry (~> 1.0, >= 1.0.8)
faraday (>= 0.9.0, < 1.5)
faraday_middleware (~> 1.0)
hashie (>= 3.4, < 5.0)
license-acceptance (>= 0.2.13, < 3.0)
method_source (>= 0.8, < 2.0)
mixlib-log (~> 3.0)
multipart-post (~> 2.0)
parallel (~> 1.9)
parslet (>= 1.5, < 2.0)
pry (~> 0.13)
rspec (>= 3.9, < 3.11)
rspec-its (~> 1.2)
rubyzip (>= 1.2.2, < 3.0)
semverse (~> 3.0)
sslshake (~> 1.2)
thor (>= 0.20, < 2.0)
tomlrb (>= 1.2, < 2.1)
train-core (~> 3.0)
tty-prompt (~> 0.17)
tty-table (~> 0.10)
ipaddress (0.8.3) ipaddress (0.8.3)
jaro_winkler (1.5.3) jmespath (1.5.0)
json (2.2.0) json (2.6.1)
knife-zero (2.1.0) knife (17.9.26)
bcrypt_pbkdf (~> 1.1)
chef (>= 17)
chef-config (>= 17)
chef-utils (>= 17)
chef-vault
erubis (~> 2.7)
ffi (>= 1.15)
ffi-yajl (~> 2.2)
highline (>= 1.6.9, < 3)
license-acceptance (>= 1.0.5, < 3)
mixlib-archive (>= 0.4, < 2.0)
mixlib-cli (>= 2.1.1, < 3.0)
net-ssh (>= 5.1, < 7)
net-ssh-multi (~> 1.2, >= 1.2.1)
ohai (~> 17.0)
pastel
train-core (~> 3.2, >= 3.2.28)
train-winrm (>= 0.2.5)
tty-prompt (~> 0.21)
tty-screen (~> 0.6)
tty-table (~> 0.11)
knife-zero (2.4.2)
chef (>= 15.0) chef (>= 15.0)
libyajl2 (1.2.0) knife (>= 17.0)
license-acceptance (1.0.13) libyajl2 (2.1.0)
license-acceptance (2.1.13)
pastel (~> 0.7) pastel (~> 0.7)
tomlrb (~> 1.2) tomlrb (>= 1.2, < 3.0)
tty-box (~> 0.3) tty-box (~> 0.6)
tty-prompt (~> 0.18) tty-prompt (~> 0.20)
little-plugger (1.1.4) little-plugger (1.1.4)
logging (2.2.2) logging (2.3.0)
little-plugger (~> 1.1) little-plugger (~> 1.1)
multi_json (~> 1.10) multi_json (~> 1.14)
minitar (0.9) method_source (1.0.0)
mixlib-archive (1.0.1) mixlib-archive (1.1.7)
mixlib-log mixlib-log
mixlib-authentication (2.1.1) mixlib-authentication (3.0.10)
mixlib-cli (2.1.1) mixlib-cli (2.1.8)
mixlib-config (3.0.1) mixlib-config (3.0.9)
tomlrb tomlrb
mixlib-install (3.11.21) mixlib-log (3.0.9)
mixlib-shellout mixlib-shellout (3.2.5)
mixlib-versioning chef-utils
thor multi_json (1.15.0)
mixlib-log (3.0.1)
mixlib-shellout (3.0.7)
mixlib-versioning (1.2.7)
molinillo (0.6.6)
multi_json (1.13.1)
multipart-post (2.1.1) multipart-post (2.1.1)
necromancer (0.5.0) net-scp (3.0.0)
net-scp (2.0.0) net-ssh (>= 2.6.5, < 7.0.0)
net-ssh (>= 2.6.5, < 6.0.0) net-sftp (3.0.0)
net-sftp (2.1.2) net-ssh (>= 5.0.0, < 7.0.0)
net-ssh (>= 2.6.5) net-ssh (6.1.0)
net-ssh (5.2.0)
net-ssh-gateway (2.0.0) net-ssh-gateway (2.0.0)
net-ssh (>= 4.0.0) net-ssh (>= 4.0.0)
net-ssh-multi (1.2.1) net-ssh-multi (1.2.1)
net-ssh (>= 2.6.5) net-ssh (>= 2.6.5)
net-ssh-gateway (>= 1.2.0) net-ssh-gateway (>= 1.2.0)
nori (2.6.0) nori (2.6.0)
octokit (4.14.0) ohai (17.9.0)
sawyer (~> 0.8.0, >= 0.5.3) chef-config (>= 14.12, < 18)
ohai (15.3.1) chef-utils (>= 16.0, < 18)
chef-config (>= 12.8, < 16)
ffi (~> 1.9) ffi (~> 1.9)
ffi-yajl (~> 2.2) ffi-yajl (~> 2.2)
ipaddress ipaddress
mixlib-cli (>= 1.7.0) mixlib-cli (>= 1.7.0)
mixlib-config (>= 2.0, < 4.0) mixlib-config (>= 2.0, < 4.0)
mixlib-log (>= 2.0.1, < 4.0) mixlib-log (>= 2.0.1, < 4.0)
mixlib-shellout (>= 2.0, < 4.0) mixlib-shellout (~> 3.2, >= 3.2.5)
plist (~> 3.1) plist (~> 3.1)
systemu (~> 2.6.4) train-core
wmi-lite (~> 1.0) wmi-lite (~> 1.0)
parallel (1.18.0) parallel (1.21.0)
parser (2.6.5.0) parslet (1.8.2)
ast (~> 2.4.0) pastel (0.8.0)
pastel (0.7.3)
equatable (~> 0.6)
tty-color (~> 0.5) tty-color (~> 0.5)
plist (3.5.0) plist (3.6.0)
proxifier (1.0.3) proxifier (1.0.3)
public_suffix (4.0.1) pry (0.14.1)
rack (2.0.7) coderay (~> 1.1)
rainbow (3.0.0) method_source (~> 1.0)
retryable (3.0.4) public_suffix (4.0.6)
rubocop (0.72.0) rack (2.2.3)
jaro_winkler (~> 1.5.1) rspec (3.10.0)
parallel (~> 1.10) rspec-core (~> 3.10.0)
parser (>= 2.6) rspec-expectations (~> 3.10.0)
rainbow (>= 2.2.2, < 4.0) rspec-mocks (~> 3.10.0)
ruby-progressbar (~> 1.7) rspec-core (3.10.2)
unicode-display_width (>= 1.4.0, < 1.7) rspec-support (~> 3.10.0)
ruby-progressbar (1.10.1) rspec-expectations (3.10.2)
rubyntlm (0.6.2) diff-lcs (>= 1.2.0, < 2.0)
rubyzip (1.3.0) rspec-support (~> 3.10.0)
sawyer (0.8.2) rspec-its (1.3.0)
addressable (>= 2.3.5) rspec-core (>= 3.0.0)
faraday (> 0.8, < 2.0) rspec-expectations (>= 3.0.0)
rspec-mocks (3.10.3)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.10.0)
rspec-support (3.10.3)
ruby2_keywords (0.0.5)
rubyntlm (0.6.3)
rubyzip (2.3.2)
semverse (3.0.0) semverse (3.0.0)
solve (4.0.2) sslshake (1.3.1)
molinillo (~> 0.6) strings (0.2.1)
semverse (>= 1.1, < 4.0) strings-ansi (~> 0.2)
strings (0.1.6) unicode-display_width (>= 1.5, < 3.0)
strings-ansi (~> 0.1)
unicode-display_width (~> 1.5)
unicode_utils (~> 1.4) unicode_utils (~> 1.4)
strings-ansi (0.1.0) strings-ansi (0.2.0)
syslog-logger (1.6.8) syslog-logger (1.6.8)
systemu (2.6.5) thor (1.2.1)
test-kitchen (2.3.3) tomlrb (1.3.0)
bcrypt_pbkdf (~> 1.0) train-core (3.8.7)
ed25519 (~> 1.2) addressable (~> 2.5)
license-acceptance (~> 1.0, >= 1.0.11) ffi (!= 1.13.0)
mixlib-install (~> 3.6)
mixlib-shellout (>= 1.2, < 4.0)
net-scp (>= 1.1, < 3.0)
net-ssh (>= 2.9, < 6.0)
net-ssh-gateway (>= 1.2, < 3.0)
thor (~> 0.19)
winrm (~> 2.0)
winrm-elevated (~> 1.0)
winrm-fs (~> 1.1)
thor (0.20.3)
tomlrb (1.2.8)
train-core (3.1.3)
json (>= 1.8, < 3.0) json (>= 1.8, < 3.0)
mixlib-shellout (>= 2.0, < 4.0) mixlib-shellout (>= 2.0, < 4.0)
net-scp (>= 1.2, < 3.0) net-scp (>= 1.2, < 4.0)
net-ssh (>= 2.9, < 6.0) net-ssh (>= 2.9, < 7.0)
train-winrm (0.2.5) train-winrm (0.2.12)
winrm (~> 2.0) winrm (>= 2.3.6, < 3.0)
winrm-elevated (~> 1.2.2)
winrm-fs (~> 1.0) winrm-fs (~> 1.0)
tty-box (0.4.1) tty-box (0.7.0)
pastel (~> 0.7.2) pastel (~> 0.8)
strings (~> 0.1.6) strings (~> 0.2.0)
tty-cursor (~> 0.7) tty-cursor (~> 0.7)
tty-color (0.5.0) tty-color (0.6.0)
tty-cursor (0.7.0) tty-cursor (0.7.1)
tty-prompt (0.19.0) tty-prompt (0.23.1)
necromancer (~> 0.5.0) pastel (~> 0.8)
pastel (~> 0.7.0) tty-reader (~> 0.8)
tty-reader (~> 0.6.0) tty-reader (0.9.0)
tty-reader (0.6.0)
tty-cursor (~> 0.7) tty-cursor (~> 0.7)
tty-screen (~> 0.7) tty-screen (~> 0.8)
wisper (~> 2.0.0) wisper (~> 2.0)
tty-screen (0.7.0) tty-screen (0.8.1)
unicode-display_width (1.6.0) tty-table (0.12.0)
pastel (~> 0.8)
strings (~> 0.2.0)
tty-screen (~> 0.8)
unicode-display_width (2.1.0)
unicode_utils (1.4.0) unicode_utils (1.4.0)
uuidtools (2.1.5) uuidtools (2.2.0)
winrm (2.3.2) vault (0.16.0)
aws-sigv4
webrick (1.7.0)
winrm (2.3.6)
builder (>= 2.1.2) builder (>= 2.1.2)
erubis (~> 2.7) erubi (~> 1.8)
gssapi (~> 1.2) gssapi (~> 1.2)
gyoku (~> 1.0) gyoku (~> 1.0)
httpclient (~> 2.2, >= 2.2.0.2) httpclient (~> 2.2, >= 2.2.0.2)
logging (>= 1.6.1, < 3.0) logging (>= 1.6.1, < 3.0)
nori (~> 2.0) nori (~> 2.0)
rubyntlm (~> 0.6.0, >= 0.6.1) rubyntlm (~> 0.6.0, >= 0.6.3)
winrm-elevated (1.1.1) winrm-elevated (1.2.3)
erubi (~> 1.8)
winrm (~> 2.0) winrm (~> 2.0)
winrm-fs (~> 1.0) winrm-fs (~> 1.0)
winrm-fs (1.3.2) winrm-fs (1.3.5)
erubis (~> 2.7) erubi (~> 1.8)
logging (>= 1.6.1, < 3.0) logging (>= 1.6.1, < 3.0)
rubyzip (~> 1.1) rubyzip (~> 2.0)
winrm (~> 2.0) winrm (~> 2.0)
wisper (2.0.0) wisper (2.0.1)
wmi-lite (1.0.2) wmi-lite (1.0.5)
PLATFORMS PLATFORMS
ruby x86_64-darwin-18
x86_64-darwin-19
x86_64-linux
DEPENDENCIES DEPENDENCIES
berkshelf (~> 7.0) knife-zero (>= 2.4.2)
chef (~> 15.3.14)
cookstyle
knife-zero
test-kitchen
BUNDLED WITH BUNDLED WITH
1.17.3 2.2.15

View File

@@ -1,20 +1,60 @@
### Install dependencies This repository contains all infrastructure automation code that we use to set
up and configure servers, virtual machines, and applications for Kosmos hosted
services.
Chef cookbooks are written in Ruby, and based on [Chef Infra
resources](https://docs.chef.io/resources/). Some cookbooks contain integration
test suites based on [Test Kitchen](https://docs.chef.io/workstation/kitchen/).
Note: Manual configuration of servers and applications is highly discouraged,
and can be overwritten or lost without notice!
## Setup
### Install Chef Workstation
* macOS, Windows, RHEL, Ubuntu: https://docs.chef.io/workstation/install_workstation/
* Arch Linux: https://aur.archlinux.org/packages/chef-workstation
#### rbenv
If you use rbenv to manage Ruby versions on your system, install the
[rbenv-chef-workstation](https://github.com/docwhat/rbenv-chef-workstation)
plugin.
### Install gem dependencies
Clone this repository, `cd` into it, and run:
bundle install bundle install
### Run Chef Solo ## Common tasks
knife zero converge name:dev.kosmos.org ### Bootstrap a new host server
knife zero bootstrap root@server-name.kosmos.org --run-list "role[base],role[kvm_host]" --secret-file .chef/encrypted_data_bag_secret
### Bootstrap a new VM
knife zero bootstrap ubuntu@zerotier-ip-address -x ubuntu --sudo --run-list "role[base],role[kvm_guest]" --secret-file .chef/encrypted_data_bag_secret
### Bootstrap a new VM with environment and role/app (postgres replica as example)
knife zero bootstrap ubuntu@10.1.1.134 -x ubuntu --sudo --environment production --run-list "role[base],role[kvm_guest],role[postgresql_replica]" --secret-file .chef/encrypted_data_bag_secret
### Run Chef Zero on a host server
knife zero converge -p2222 name:server-name.kosmos.org
### Run Chef Zero on a VM
knife zero converge -a knife_zero.host name:vm-name-23
### Update Chef Client on a server: ### Update Chef Client on a server:
knife zero converge name:dev.kosmos.org --client-version 15.3.14 knife zero converge name:dev.kosmos.org --client-version 15.3.14
### Bootstrap a new server ## Managing cookbooks
knife zero bootstrap root@dev.kosmos.org --run-list "recipe[kosmos-base],..." -j '{"example_cookbook":{"memory_max":"256M"}}' --secret-file .chef/encrypted_data_bag_secret
### Managing cookbooks
Cookbooks are managed via Berkshelf. Run `berks --help` for command help. Cookbooks are managed via Berkshelf. Run `berks --help` for command help.
@@ -25,3 +65,14 @@ Install cookbooks listed in Berksfile:
Vendor installed cookbooks to the `cookbooks/` dir: Vendor installed cookbooks to the `cookbooks/` dir:
berks vendor cookbooks/ --delete berks vendor cookbooks/ --delete
## "Expired" TLS certificates
If you encounter expired TLS certificates during a Chef run (e.g. for remote
files), the issue is likely that the certificate has been issued by Let's
Encrypt and Chef is still using its own, outdated CA cert store (see
[here](https://github.com/chef/chef/issues/12126#issuecomment-932067530) for
example).
As a hotfix, you can manually remove the "DST Root CA X3" cert from
`/opt/chef/embedded/ssl/cert.pem` on the machine you're trying to converge.

171
Vagrantfile vendored
View File

@@ -2,110 +2,91 @@
# vi: set ft=ruby : # vi: set ft=ruby :
# All Vagrant configuration is done below. The "2" in Vagrant.configure # All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for # configures the configuration version.
# backwards compatibility). Please don't change it unless you know what #
# you're doing. # Documentation for all configuration options can be found here:
# https://www.vagrantup.com/docs/vagrantfile
Vagrant.configure(2) do |config| Vagrant.configure(2) do |config|
# The most common configuration options are documented and commented below.
# For a complete reference, please see the online documentation at
# https://docs.vagrantup.com.
# Every Vagrant development environment requires a box. You can search for
# boxes at https://atlas.hashicorp.com/search.
config.vm.box = "bento/ubuntu-18.04"
config.vm.provider :virtualbox do |vb| config.vm.provider :virtualbox do |vb|
# Customize the amount of memory on the VM:
vb.memory = "1024" vb.memory = "1024"
vb.cpus = 2 vb.cpus = 2
end end
config.vm.provider :docker do |d, override| # config.vm.provider :docker do |d, override|
d.image = "nishidayuya/docker-vagrant-ubuntu:xenial" # d.image = "nishidayuya/docker-vagrant-ubuntu:xenial"
d.has_ssh = true # d.has_ssh = true
override.vm.box = nil # override.vm.box = nil
override.ssh.port = 22 # override.ssh.port = 22
end
# Disable automatic box update checking. If you disable this, then
# boxes will only be checked for updates when the user runs
# `vagrant box outdated`. This is not recommended.
# config.vm.box_check_update = false
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine. In the example below,
# accessing "localhost:8080" will access port 80 on the guest machine.
# config.vm.network "forwarded_port", guest: 80, host: 8080
# Create a private network, which allows host-only access to the machine
# using a specific IP.
# config.vm.network "private_network", ip: "192.168.33.10"
# Create a public network, which generally matched to bridged network.
# Bridged networks make the machine appear as another physical device on
# your network.
# config.vm.network "public_network"
# Share an additional folder to the guest VM. The first argument is
# the path on the host to the actual folder. The second argument is
# the path on the guest to mount the folder. And the optional third
# argument is a set of non-required options.
# config.vm.synced_folder "../data", "/vagrant_data"
# Provider-specific configuration so you can fine-tune various
# backing providers for Vagrant. These expose provider-specific options.
# Example for VirtualBox:
#
# config.vm.provider "virtualbox" do |vb|
# # Display the VirtualBox GUI when booting the machine
# vb.gui = true
#
# # Customize the amount of memory on the VM:
# vb.memory = "1024"
# end
#
# View the documentation for the provider you are using for more
# information on available options.
# Define a Vagrant Push strategy for pushing to Atlas. Other push strategies
# such as FTP and Heroku are also available. See the documentation at
# https://docs.vagrantup.com/v2/push/atlas.html for more information.
# config.push.define "atlas" do |push|
# push.app = "YOUR_ATLAS_USERNAME/YOUR_APPLICATION_NAME"
# end # end
# Enable provisioning with a shell script. Additional provisioners such as config.vm.define "ldap" do |ldap|
# Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the ldap.vm.box = "bento/ubuntu-18.04"
# documentation for more information about their specific syntax and use. ldap.vm.network "forwarded_port", guest: 389, host: 389
# config.vm.provision "shell", inline: <<-SHELL ldap.vm.network "private_network", ip: "192.168.56.5"
# sudo apt-get update
# sudo apt-get install -y apache2
# SHELL
config.vm.provision :chef_zero do |chef| ldap.vm.provision :chef_zero do |chef|
chef.version = '15.3.14' chef.version = "18.2.7"
chef.arguments = "--chef-license accept" chef.node_name = "vagrant-node-ldap"
chef.cookbooks_path = ['cookbooks', 'site-cookbooks'] chef.arguments = "--chef-license accept"
chef.data_bags_path = 'data_bags' chef.cookbooks_path = ["cookbooks", "site-cookbooks"]
chef.roles_path = 'roles' chef.data_bags_path = "data_bags"
chef.node_name = "vagrant-node" chef.roles_path = "roles"
chef.nodes_path = 'nodes' chef.nodes_path = "nodes"
chef.environments_path = 'environments' chef.environments_path = "environments"
chef.encrypted_data_bag_secret_key_path = '.chef/encrypted_data_bag_secret' chef.encrypted_data_bag_secret_key_path = ".chef/encrypted_data_bag_secret"
chef.environment = 'development' chef.environment = "development"
chef.add_recipe 'kosmos-base'
chef.add_recipe 'kosmos_encfs' chef.add_recipe "kosmos-base"
# chef.add_recipe 'kosmos-bitcoin::source' chef.add_recipe "kosmos-dirsrv"
# chef.add_recipe 'kosmos-mediawiki' end
# chef.add_recipe 'kosmos-wordpress'
# chef.add_recipe 'kosmos-ejabberd'
# chef.add_recipe 'kosmos-hubot::botka_freenode'
# chef.add_recipe 'ipfs'
# chef.add_recipe 'kredits-github'
# chef.add_recipe 'sockethub'
# chef.add_recipe 'kosmos-mastodon'
# chef.add_recipe 'kosmos-mastodon::nginx'
# chef.add_recipe '5apps-hubot::xmpp_botka'
# chef.add_recipe 'kosmos-hubot'
end end
config.vm.define "bitcoin" do |bitcoin|
bitcoin.vm.box = "generic/ubuntu2004"
bitcoin.vm.network "forwarded_port", guest: 4201, host: 4201
bitcoin.vm.network "private_network", ip: "192.168.56.6"
# bitcoin.vm.synced_folder "../kredits/yap/", "/opt/yap"
bitcoin.vm.provision :chef_zero do |chef|
chef.version = "18.2.7"
chef.node_name = "vagrant-node-bitcoin"
chef.arguments = "--chef-license accept"
chef.cookbooks_path = ["cookbooks", "site-cookbooks"]
chef.data_bags_path = "data_bags"
chef.roles_path = "roles"
chef.nodes_path = "nodes"
chef.environments_path = "environments"
chef.encrypted_data_bag_secret_key_path = ".chef/encrypted_data_bag_secret"
chef.environment = "development"
chef.add_recipe "kosmos-base"
chef.add_recipe "kosmos-bitcoin::source"
# chef.add_recipe "kosmos-bitcoin::foo"
end
end
config.vm.define "openresty" do |openresty|
openresty.vm.box = "bento/ubuntu-20.04"
openresty.vm.network "forwarded_port", guest: 6379, host: 6379
openresty.vm.network "private_network", ip: "192.168.56.7"
openresty.vm.provision :chef_zero do |chef|
chef.version = "18.2.7"
chef.node_name = "vagrant-openresty"
chef.arguments = "--chef-license accept"
chef.cookbooks_path = ["cookbooks", "site-cookbooks"]
chef.data_bags_path = "data_bags"
chef.roles_path = "roles"
chef.nodes_path = "nodes"
chef.environments_path = "environments"
chef.encrypted_data_bag_secret_key_path = ".chef/encrypted_data_bag_secret"
chef.environment = "development"
chef.add_recipe "kosmos-base"
chef.add_role "openresty"
chef.add_role "openresty_proxy"
end
end
end end

View File

@@ -1,4 +0,0 @@
{
"name": "andromeda.kosmos.org",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuAI/4XcdJQ4rL3JtQ86Q\nUtdFSBdMnSPxUoHbhXXTaFEB2D0hqyCjfGmt8JqoBaRmj0zNHQvOMixe+SeyfyDs\nDPHQZ5E45f0eBYPchvOjNOZTP6RYhfa1pBRW6D6JJ+2bYW1jfnTur1Tkeg0ZL6zg\nybmcsYeDYeNXEsAGQIz+zqgNHPsTLL7U+eY9u3AYhOPaBXSnaqxPxvYx9fBRWbrx\ntFz/oXjurvLS5rMhts0s6AyMKEs+5bLhSreqGsh+1CfAt2qGNPPY7J5VL1B+cAfk\nFWYD5uWo2NvYKm94UpKsmZgFKFQBglFYpMidYdbl/NNJFq3EJDRyRlzDB8VliOuG\nnwIDAQAB\n-----END PUBLIC KEY-----\n"
}

View File

@@ -1,4 +0,0 @@
{
"name": "barnard.kosmos.org",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5Rr+3giLkr0xqZPRPn9Z\ngxvmAaUo6VSs1qnMfznNNN/CGCYett0ndEJp4wI8xp2fq75b2TSm4jqhqjtgYVVD\nEeSOKTZEnoE7YSssodGTAK5YnrVIPNyWd61Ih/NkHzCjlcuVX6sJD7z/pgK+WMao\nAAxzMrefvHALFBmJIxbugakru/nvDcQeV8DOF+UjzsO5CTC0BUzCFeXBG7HD3W+6\nP2wQlMKteM9uQU6Agx7XegeWS2Lfnxg1em5TNbw1PbLofROwr1pCUPfVzQ0CAVxm\nXLzmA2xtMqCT2j83DU9WleZPYiS0rg+r9T1jsDX0TyH4NTV8gO2SJ9BMUNcX+3Ox\nmQIDAQAB\n-----END PUBLIC KEY-----\n"
}

View File

@@ -1,4 +0,0 @@
{
"name": "centaurus.kosmos.org",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsVV0j8DQSlefAAAmafjx\nyT1j1idLQF0oltTp2p4jFEsnEdFeP4Plpluy+detra1gM9sBBBuvRKGt8NP+Yoc7\nbnn7qU13E/nWUQh9n15+jjgUirXg7CxluKfj2VvsdchJRIvzDwwZz5sqITiGG7/S\n2r2KBBBnuGlGShQJZhhcLW4P+3YgxW8DUgUsRdvreVuvF1hcnaSymldfos1CqYL8\nawtsZ2rtdZHmZxfguXl91WBCu2OxsT13i3kInnDQsFB0tYKq+TFSLAHxneKTYPRW\ngYgP9RSBZ51iQ+6R1CenYsr4SePVCmwaZGb8bmd0QLvGKlBhjX29a5bE5tjzeoBD\nuwIDAQAB\n-----END PUBLIC KEY-----\n"
}

4
clients/discourse-2.json Normal file
View File

@@ -0,0 +1,4 @@
{
"name": "discourse-2",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwinJNGMUzUdrZwx/ZCkU\nxZRnuWqZHXHdZtkEG6beMY1sB/PpGknLgcfTjhh4FR/5hIXqBcVdUj3DZiTmhd8o\n0QpEkJPNKd08PN12CyShPwCcIA1KTqsCsNys+bp6Wff84JClAe/Oza6DonoRmhqO\ncFxSQcscuv8a6Gc/1X/aySmS01hwL+r9p0VZBEPNKEObgJXHsGIIbajlxgq037X/\n2/IsIk2etXTUSWPJLxNKSXzxC3l4Izw4NfvUgipByPTeJQ2YAVxbvrDEqquBGk5S\nll/mlF+fKX0QvUhm7sdLiSy++rHc8R1ny+4LnR1gAOscYMuLbDbpJnW0Rc0GEJOL\nVwIDAQAB\n-----END PUBLIC KEY-----\n"
}

4
clients/drone-1.json Normal file
View File

@@ -0,0 +1,4 @@
{
"name": "drone-1",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0DLEt7jfKPH7X7pBknG3\nWoB6Q6Vffl6Q0GRxQiMJ1uRC79dulKH097CYfLzIXFZD9gRRP4K78vW5BA2spXVV\nn3qrak9JT6BGgdFrkBEdMNGZyz814aMiyhPZrQUrmIzyH8R04xZgv7UH86qdNQ5p\nPeIXS7gU7/0PmwRgEBiM1KLq+Kba6pYdGefKqxx5D59xweH+yE+rbd5ac9xn2GP7\nyOiZoG2sMuksq7d3O4SeTS2lBAmG5IeiP2iWvHWpZD48PTr78ItkTgIbaqZU2PXV\ng+2OcJPTel5xISooe5FvW8gdpC9SYoBPvgJuJ6czc1+LdUSK7pE7577eAJNDlh+H\nRwIDAQAB\n-----END PUBLIC KEY-----\n"
}

View File

@@ -1,4 +0,0 @@
{
"name": "ejabberd-1",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtoVmQAEmmAWjjzi5X8Ia\n9sl2aH8Lh0AsckM0aE3hvw9lGfbNCPpYWrr0uh7R6/+13Z0OghrT3yDAZ+XfH39Y\nuGomazTzSMMOEofjepo+nXSgq4meFfX5vobYG7rpBdz1EsIT1bElHduItA2zsw9J\nFpXtGd4BjumMq1VykSTA+QaEE8byes/+groQTtXPqXf5gJMxyGlh4SU0MzmkGHaW\n8c9BPCQrV0CMiuGOGJ5mZ28HajbvSg3+bpgwThh3M5uQaQ6on1N2pvJuBypUySS6\nyc4TauocUcUsULYXq9wM8/rqDYsUah0PR0WSiOi90m5thGeBchFAmhdCvrS34FlR\nVQIDAQAB\n-----END PUBLIC KEY-----\n"
}

View File

@@ -1,4 +0,0 @@
{
"name": "ejabberd-2",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAudueTsPYnRXRu/rmMGZe\nI7LdyrWKdY9FJaRhkXR5J9Yb8QnIcDS7ZXDJsVhyQW8pZ2DuaIs5dmGYvRtmx0ol\nqHTEel01Q3/xI1blJoq4uRm639PB5M9dSJ0w+s6P5zj7rbFKpvMBYxBSK6z+gXIc\n/L1ayJ6JOssX5/tEvcvx/d4GIxof/Q+puACAXawx7W88Wl7yYWdBQ78uTPHzuMyB\n8BRYz24tki/O1fa9JijW32d3EELD0EccI3iJ+/CR4BFEEM2QdDczY/Q6Ny7h7inH\n/TdU246nvtJIx7bAZHmDIDva8YPtL27RIOQ3JqBBe7prQP5Q9MBGPyCXWAglj99a\n6QIDAQAB\n-----END PUBLIC KEY-----\n"
}

4
clients/ejabberd-4.json Normal file
View File

@@ -0,0 +1,4 @@
{
"name": "ejabberd-4",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6FuI13W2sft83OIWe59/\nYTfpTfKcYTCq5zAQEu87OYHHQeBAYo0W/g/qICh3qw0ie2QMPyggAezoeR5VQdLt\nkJq1X9AHqyX59YThzj7dLCCEKq+mAdriuKzNGu8eml4DRM3m+xw7jFzcwwrD8ECZ\nY+Kn7bcOtozx0mXpEm+cO2cOKmRQn0VJwAQSe6eW301iGmpR9et4hDqMjhiUiwaU\nWAqpsmP/JQMLAX2gLzwilD63VCQlcQCDq/D1m/N6bWb1L47zNAzwOCSYV92bGNDe\nRe+4gCVVLpfGWKbkjQFDraCmME7+O50WpbfowylF8gOzgl3AvnpC/LOSzT8VtMPr\nZQIDAQAB\n-----END PUBLIC KEY-----\n"
}

4
clients/ejabberd-8.json Normal file
View File

@@ -0,0 +1,4 @@
{
"name": "ejabberd-8",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2r+emfhx7bl7MxEeIDGY\nKnj3xEyFvVgXL7GwOsbKszFVgZ17yuPwa6vuiJsZsbcFC/nXgGNH2WF5FEv7XhOi\nwE8KMeNrR4xQ9BEANRlRgUTfrkhZG1NCy7PpVBb7L2r36STBuFSdQJmruJAfvTHm\na4hhmfaSIJ0Wa+Q24gL1GNwkSRdOhXRYxB4OvNIJzzuC3XqgugQVG5xzZh0kULQs\nkZVvkL5dM0FEZzBn8aK2sohTFDivvYJy7PAogC9Z5M1nPatZBowruUZvCym3Wh1J\nRtBwsS9SsTcsUqaT9FpEa7vYUney1/R8G2FAFufTyztjgBQzh78GhU+dek+ycIf1\nVQIDAQAB\n-----END PUBLIC KEY-----\n"
}

4
clients/email-1.json Normal file
View File

@@ -0,0 +1,4 @@
{
"name": "email-1",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxDRdvMYKRjejoFsOxS6s\n4gj0Gsaxk/j25A5VPHBcEhr+NOh8W/6NnTTHuFMaorEIl/2kscgrcwriDN7xIFmO\nz/C1+spDLPMGSWd+422KSS3fjVfByLlMwxh171RDZBlZVze7H7CIV/rxCG7Ri85y\nPvyp2rT4ioyVGyYK3e8CiXwQckpFC1ex9VRk/GR8zbCYUIw+qbTFRcl/mQuxKqWK\n22vrgAR+6OL8lcyhssmKiQ1r3GtxwJusgffw4/5S8sRR1z8OB4wiwgOWR1E36EbF\nhTBjFzPiKVjVjP/TQpUoYdnBhuD223M8nPWJl1HMVQPMjL6R2BBOF+iK0Wx9SiFD\nJwIDAQAB\n-----END PUBLIC KEY-----\n"
}

4
clients/garage-10.json Normal file
View File

@@ -0,0 +1,4 @@
{
"name": "garage-10",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAw2+3Wo+KkXVJCOX1SxT9\nSdwKXgPbCDM3EI9uwoxhMxQfRyN53dxIsBDsQUVOIe1Z8yqm4FenMQlNmeDR+QLE\nvNFf1fisinW+D9VVRm+CjcJy96i/Dyt786Z6YRrDlB860HxCbfTL2Zv5BRtbyIKg\nhz5gO+9PMEpPVR2ij9iue4K6jbM1AAL2ia/P6zDWLJqeIzUocCeHV5N0Z3jXH6qr\nf444v78x35MMJ+3tg5h95SU1/PDCpdSTct4uHEuKIosiN7p4DlYMoM5iSyvVoujr\nflRQPEpGzS9qEt3rDo/F4ltzYMx6bf1tB/0QaBKD+zwPZWTTwf61tSBo5/NkGvJc\nFQIDAQAB\n-----END PUBLIC KEY-----\n"
}

4
clients/garage-11.json Normal file
View File

@@ -0,0 +1,4 @@
{
"name": "garage-11",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzfZcNEQojtmaogd9vGP/\nMsVPhAOlQ4kxKgrUas+p+XT7lXRan6b3M8UZEleIaL1HWsjSVwtFWRnNl8kg8rF8\nNEkLeOX8kHf7IoXDFOQa2TXanY8tSqrfh9/heFunt4Q3DluVt7S3bBdwukbDXm/n\nXJS2EQP33eJT4reL6FpVR0oVlFCzI3Vmf7ieSHIBXrbXy7AIvGC2+NVXvQle6pqp\nx0rqU6Wc6ef/VtIv+vK3YFnt9ue3tC63mexyeNKgRYf1YjDx61wo2bOY2t8rqN8y\nHeZ3dmAN8/Vwjk5VGnZqK7kRQ92G4IcE+mEp7MuwXcLqQ9WB960o+evay+o1R5JS\nhwIDAQAB\n-----END PUBLIC KEY-----\n"
}

4
clients/garage-12.json Normal file
View File

@@ -0,0 +1,4 @@
{
"name": "garage-12",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA9GtHHi298BjiIqpZ3WkT\nkYAPfWD60hFe/8icYcq/F/6cHLYKZQ4chek9X/hDCMq4tHEN6Oh58T5x/nuNdPrK\nIAMGyVAGk6ekWlmD4jwdEf6TGb/J3ffJTRDvwX/I8xD/DW3wtXsN+X24T59ByGTm\nrnwRmmmwHF3otRx9wnCsIgDQ0AjiUujsfNNv1FcLXD/WJLys9lEeU5aJ4XtHTwDv\ntJM8YyVEFhEnuvgdKmzn5+F5k9VGdUwForlFOBfvzbCnTZMDMmDVeiUtAUv/7xWQ\nQl2mLUGCtgWuYJYXsQacAJ6pa3h+7cQyshC6w3dwUG+1fS9lNO0Yp1GGX1AGYKpp\nPQIDAQAB\n-----END PUBLIC KEY-----\n"
}

4
clients/garage-13.json Normal file
View File

@@ -0,0 +1,4 @@
{
"name": "garage-13",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvbqWc6OwRxgHfsQuTNL4\naxeVvNen5d9srYpZSHjuBB/k9NHB+9P6vU5qF37XHkw1lVUGeYbPHzhYsx3O0/kZ\nH5f4+4SMy/P9jc6SE7AJF4qtYKgJ88koZdqCww07c6K9g+BnEGFFZui/h3hUBxWj\nTfhBHEWPyQ2bl/lr9sIJwsEz+EN0isGn/eIXkmw9J6LdLJ5Q0LLks33K28FNOU7q\nfeAN4MiBVMUtgCGyT2Voe6WrOXwQLSDXQONOp3sfSfFExsIJ1s24xdd7AMD7/9a7\n4sFDZ4swhqAWgWmW2giR7Kb8wTvGQLO/O/uUbmKz3DZXgkOKXHdHCEB/PZx1mRNM\nEwIDAQAB\n-----END PUBLIC KEY-----\n"
}

4
clients/garage-2.json Normal file
View File

@@ -0,0 +1,4 @@
{
"name": "garage-2",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwuZbclnx/1Oas1+q5vUz\nsvCpTwKBrb3dah2YoZfZg0K15+MZshSyCZxo5T+SGp2OwhV65UptMJZbeyhVtzEp\ncN62G7exf65rNesXOL82PNQC6iInxNvyOgzdTOo7tdQ2ln/3QRpZOtUOB9PEkK17\nNmHfVIWKEc9YajRff5zE1LzSWulTNJ3D4GAIhsli//Rv45MhjyYoQKf1AXtqI72A\n2FE2YWXOjjSHJIPRfcUrmBOmEt/gkWySxGAs8Dg112vOC1ftk0KiQFWKVydMicIj\nyySQH1/neQFSq2HLNajDc9S2l7cjhPEjov7taS9LkXfPtnfN8ajEEP0S2MgZnf4N\ngwIDAQAB\n-----END PUBLIC KEY-----\n"
}

4
clients/garage-7.json Normal file
View File

@@ -0,0 +1,4 @@
{
"name": "garage-7",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwoAigZUSwsfbBHx2PQ6W\n38Ght6eCvbpW1lsS58hTieRmRn+pgZVjvixhsBh57rUasCjaBywXk9BpNj2Foxck\nReHeoDI0RHsgniClyMrYj80y2NhoB6J8NB+cHkhdzIKplm6AH6M5xaAedtZU639a\n1nHMtpDlJhzgIYsiq1q06Aqd1w0Z9tf1RXQ1WvMDhTY4wlE5RZ2epBb6Usnlbjo2\nSqCIGIjRLmZxdsSWoiUUTlVPdUCzTNsN5G/ZVdRswhgseDmVJCIkK2Aji/XzhIrR\nh4RvUv9dhFemOVsFctJ/dQILXz5MZLUgakKf970M5R/Zggv//pqRSsYcB2UfaBpV\nLQIDAQAB\n-----END PUBLIC KEY-----\n"
}

4
clients/garage-8.json Normal file
View File

@@ -0,0 +1,4 @@
{
"name": "garage-8",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAt4hXODzgHsIeWxXJm/F6\nSTFJ8JC89mWru7pOFzPWenOVMHgp4UpUB4rDTwQqojsWTDiq0x3ckUyOPw3Nj0jv\nxP4MMGS4SI0oRSJKzrYYss0hgUDTOBBd+Wxn0UiNEpN/PfQo9VZj9v/jak57cz7z\n5+rpl5v27fhgUIChjsHxdy+EamvCrYc+1JhyrLOlwlt8JxkZ8UPhoeZLWAbDgGLS\nEzHWSSVtBUPK+KYmVb2OK4lB56zPfek0U3gKN+04a1650jzOit8LzE6NaT180QDv\nX+gG6tk53vSXDmkBXsQ1mtB8aF+HaEG2Pra5HyihlweCPYdJT+e28wpq6+P5l3YR\ndQIDAQAB\n-----END PUBLIC KEY-----\n"
}

4
clients/garage-9.json Normal file
View File

@@ -0,0 +1,4 @@
{
"name": "garage-9",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnMHzKE8JBrsQkmRDeMjX\n71mBzvRzNM90cwA8xtvIkXesdTyGqohX9k/PJbCY5ySGK9PpMaYDPVAnwnUP8LFQ\n3G98aSbLxUjqU/PBzRsnWpihehr05uz9zYcNFzr4LTNvGQZsq47nN9Tk+LG3zHP7\nAZViv2mJ4ZRnukXf6KHlyoVvhuTu+tiBM8QzjTF97iP/aguNPzYHmrecy9Uf5bSA\nZrbNZT+ayxtgswC2OclhRucx7XLSuHXtpwFqsQzSAhiX1aQ3wwCyH9WJtVwpfUsE\nlxTjcQiSM9aPZ8iSC0shpBaKD1j3iF/2K2Jk+88++zMhJJPLermvaJxzsdePgvyk\nKQIDAQAB\n-----END PUBLIC KEY-----\n"
}

4
clients/gitea-2.json Normal file
View File

@@ -0,0 +1,4 @@
{
"name": "gitea-2",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7MKbO2vvX7TD1cFKjITh\ntvsf6hgAQRcu7F0kiekx15aC3VLnRgsB9A6SXySVrqvhq/vOSTXZsIC62IQi4Oks\nhhtAA/uvwcOmZ7JkMi0vJ3Ary94dTsg/L8i/0/k2V/D4FRKTV4414wSkpglFGLhl\nvbZ6P17LrqfyAzNJwIDzwd9d6cvt4a0qxvuxbTOHkBuY8tpyGdNzhg6fATadxbBa\nRASEVFb+xqxG3K+8zRmaCFyYqmSPS/8liVVbLPAeUlK6pDyQ5g4T37E5o+CpWfPF\nkBgYw/hHQe6zt1Z4wNJ6mb8YIN/l9kFF3EE99laYxp9Ua7ffrZkRgw12C5Yrn3N6\noQIDAQAB\n-----END PUBLIC KEY-----\n"
}

4
clients/her.json Normal file
View File

@@ -0,0 +1,4 @@
{
"name": "her",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsuj7OCWX2qz/WbsjMgpi\nI4CM13Pxrj+8Enrl4IorkK6O338rhdtfXmOJt2AuDuj6u12Xtnk0LN2n01hffXNu\nU0Hwy+szavnbjiqC8jw1nyCFwYgdy8lCj3WV4t/gRWFhiHZGkhBKaksAoo8jJqZv\nXi/4ZuRov01HJgT6CJBEfR5TUaRCHM4hz2Y60mmegmUNLTRUNIDy6rg5W8JplMlJ\ny0dJc6uEp8asKhPnEfMz1kXukjnsBLXZmxglqdAQeaZ1I78QvRV3rYh0Ge2ZPF8t\nv2c+mUMbH7e80lJPgp7rwqjKrjLfaYo/1ZqTqr3ArWw3253ttLp8KX1ltX69nIHq\nMwIDAQAB\n-----END PUBLIC KEY-----\n"
}

4
clients/ldap-3.json Normal file
View File

@@ -0,0 +1,4 @@
{
"name": "ldap-3",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzLndVZtKubbJf2izx6vN\ntU0gwZUhcCz4Dq+Ilu9D8tPVEWUqKp9RyPkSO8iIxdLXJ8ZjtG3oBVPFGka/fW1a\n/SSf4Yn6ArkNhP9dmDKzrOYOuoPF+h+Fa9Jecy2PtNzhGdBdynIK4ezJIdq5vPEG\nAsJf/Ad9EIU8D4Aj/nhNUwfUwsFTTE++LL9yCzRiDHg6pjNToM75V/+fFPk0UL1/\neLcaJzqi5WeXhfq7DbjMtqnt/+vUxO2YAk9MDb3U15hnH4xkxtDfRth1UGkpR/PK\naLn/RTS9sqk3oMZVzDSioXO0TGp00sWDmvpBvEBwlYgWnx1o8JQnkClvn2OSo6va\nzQIDAQAB\n-----END PUBLIC KEY-----\n"
}

4
clients/ldap-4.json Normal file
View File

@@ -0,0 +1,4 @@
{
"name": "ldap-4",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmzFyZh5/J2BsKRunghis\nwUGbv4j/ynAF7QY+CYoOwDBcbLHk6odn1JyUqCgfhCIX0mh8F/fDKyU9Aw6+HHZ/\nX0DTt/enLTaWc2vxRfyJLRXP7/ymHOr4u6HYEINMdVJp4yQ9XLcWpuRHfA+fHrZ7\n9fI8sCMSEawvVpEKytYdVnm3VCjfIVrfCAkY0lP0mNG908edX2ZuJ4GS1UwADUZX\nLZuMhbGX9JqIQYWCyiMDakD7P7PlEDf/JVkvkao4HQatkqJGmGDhvfIPodIo8JC0\n6FsYxWtvrLJBArYjnVBKRuxIlBqq/7Yx0gj09kGf84aSXvkMDgio7AO4xSp9GJTJ\n4wIDAQAB\n-----END PUBLIC KEY-----\n"
}

4
clients/lq-1.json Normal file
View File

@@ -0,0 +1,4 @@
{
"name": "lq-1",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6mrJdvfx2pvuYIOCwDe4\nXJ4NJSEq+9oyqW/JWNDnUN/GAZLCfTOa+qu1nA8sOspWWpaikHpo2meYlzA1HCPh\nF4LX7C83dA9CXB8BDCddmkAxhPPXIeFM3AmaEwfv+dLYNuO6bWvOKcHjJdw7Mp4W\nrdg9MsIh28W9jf7KehvPWx3ZvrJm2vyiFGQNBDWGdkVq40P2lhvCISvWb+Ugpjos\nJzq/HZNFq6Fc72jWfwwGcDgwfc1/jmWJlz2J5v8xHwwhVtcWTg1AWqfcVQZ6OKtf\nwP6s/pAK4dAXqPz8OE17GPJ42r94AeWr39Cn5b8EzrVhKOeODlpihfzIaa/sfb44\n6wIDAQAB\n-----END PUBLIC KEY-----\n"
}

4
clients/lq-2.json Normal file
View File

@@ -0,0 +1,4 @@
{
"name": "lq-2",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzyquIPPckL4Bybw4H0t6\nHexR7u97//eXBGpN+PJcp3PAUTJVWr1m7uDnpD9JAP370Cp05Tz0ydYXk/2NTpFf\nvRu20401VWTWbClIdN7n89edtER/XX90KrcKplV4bZcFN0UC2Il6SGH0uvUYzZRr\nPV2eXftDvu7Mhl1xlmeJ0S6bH95v1G2k6TrTLAOBs6gpqiCWyjrNB9AY3SpEv9Ya\nK8T0M10LAY0UwKccSp/eTZzCfbmzvNIyyRlJbzEAsHmoDPyR2/4LB1ndtbkTszmk\noHvpBJu3noKXo0SW/WqhSvwxBVV0bZUYjgH3Bx8nudNkHgL6ZH6FVQ6ED+70jWiq\ngwIDAQAB\n-----END PUBLIC KEY-----\n"
}

4
clients/mastodon-3.json Normal file
View File

@@ -0,0 +1,4 @@
{
"name": "mastodon-3",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArBsrwKV1RtDfw/5y/L2N\n/x7UL2q6G4JypcD5Q8/aDQOTaGuTR+4RCup+Zcn2wzpdGnX6IzS7cy4/LqMoR2pB\nq8K1FZOXvcCtwsBqsyGWiFdy5aLXy2CkHhTRbkwOLPyb1rBy+qPCBdr055BPZUWm\nTfJaxTmph+Z1J+INz0YndYxz3iKET2V99OP27D7tUdZ7yPgMDbDJWqVxPdYrmAUr\n3QLpmYWsYlmPKhpTAXlvbvzE5vgh5EC8RGfhfYRpacc6QdwbahtxMQAV9+1S2+Vj\nntHfB6PSnYwewUHs9MMn8e33KmNlOZdMAVlyJymBZ4pNceC44vxvZYElp077A6tN\nFwIDAQAB\n-----END PUBLIC KEY-----\n"
}

4
clients/nodejs-4.json Normal file
View File

@@ -0,0 +1,4 @@
{
"name": "nodejs-4",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwIlB6swdT/Z7tRx/Sm24\n/ro3Jotpsi0DiNS6i7BA1fH0OdbX5CRel62jGC1Nja9QCY8aBd00E8u7KPCuK3iY\n5aA7v91sxWZ7nbXdSwBawaNsTZAe4rMaEkA74INpq7TOvLzHcmDcgRbo+MC2Nw3T\nl0mCOaWkUWFaukTLN8zBldzEbYxztKsaL+b2TbevnSCaPkdD9WmDbmjrUiWTlnpE\nDidMjZ9rp+PcODyjlvwka1yJCoPFoN/+ZL4yXxo49tJ2kbrxSh4tdDZqiZwnajRb\n4SAuRCaHTASDSmZ1Dj0ET/miXuvy6Jgvt06eSMPDKvb+84Dk8zLf4CW6DaE2TfX4\nzwIDAQAB\n-----END PUBLIC KEY-----\n"
}

4
clients/postgres-6.json Normal file
View File

@@ -0,0 +1,4 @@
{
"name": "postgres-6",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtVzM0fwlimmq11jTGTko\nK87LRYSar61tNF3qVWp9axNSMa6BSxVark9eYOqY4eLh/5vJVDqXDFq30/IUWg40\nH8hHWaOEvQrP2dm/XFw1RmunfbfN9gN07TuhaT3xFD5t+jFBuOSoJ4cPnFIABuVt\nFLrjgtYYjtZe5hGE9ZPmS7o2ATM5EU9mxeQ+TkgDbr8StvSPGdZ1ykhagf1pegGU\nRIfZ+4ZKzyDUAq+fYNhIbmlm5h2gP+XdtakPy43j7n0iN1vwDgBqJ2pdaVs/GcFf\nvaztoltguoknI2NPSez1N217asTTLuth0nHxVXiKCVXnqwDjxgWmuP6X2B7VYjyc\nxQIDAQAB\n-----END PUBLIC KEY-----\n"
}

4
clients/postgres-7.json Normal file
View File

@@ -0,0 +1,4 @@
{
"name": "postgres-7",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArraIm6mXi0qgK4oWDs2I\nOIx+g/LPnfRd5aBXhoHcekGiJKttQTi5dRdN4+T6qVEC2h4Cc9qN47h2TZPLDh/M\neIZvu0AyicpectzXf6DtDZh0hFCnv47RDi9927op9tjMXk0SV1tLel7MN0dawATw\ny0vQkkr/5a3ZdiP4dFv+bdfVrj+Tuh85BYPVyX2mxq9F7Efxrt6rzVBiqr6uJLUY\nStpeB3CCalC4zQApKX2xrdtr2k8aJbqC6C//LiKbb7VKn+ZuZJ32L/+9HDEzQoFC\no0ZZPMhfnjcU+iSHYZuPMTJTNbwgRuOgpn9O8kZ239qYc59z7HEXwwWiYPDevbiM\nCQIDAQAB\n-----END PUBLIC KEY-----\n"
}

4
clients/postgres-8.json Normal file
View File

@@ -0,0 +1,4 @@
{
"name": "postgres-8",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx88DgM/x1UbKRzgPexXE\nSyfrAsqaDVjqZz7yF3tqAc9A52Ol0KOM6NESoPWBVMbS86WtAjBcMHcOoQBJ+ovp\nXcjNlRtO1Il6/d4uCRr4CEDX+yeS0Qrt0SOORnoTbVlkq9VlVljyCmxk8VBCILzk\ndHvFr62mahMy6vOEcpCQgCwYE3ISH2jlTDz2agoK/CjIyyqFTlB1N7mJVGLrJdcA\nA2JOxDRE8HqOdpY7bHcHj4uyMWaKuM3zxXK04lhrvuPRfJUhXgsK9r5jeTEa8407\nqV9K+mB17R1dBeHmWEPDRt02HELe2SUjYmlmyVX73H2mWKDLBFpAFjOfz86CJ6jf\nDQIDAQAB\n-----END PUBLIC KEY-----\n"
}

4
clients/redis-1.json Normal file
View File

@@ -0,0 +1,4 @@
{
"name": "redis-1",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7J/jWx6xCoz3ECDA9gr6\nAVVjd3MhE9LmE/bFLdQLariJjyNxJ1qLp/SN1P/H/aBS9YP6HEGkkTekRkWrHkDr\n5pliR9lmdS7c1W2pRKOaBm8r3pl98fBcFtxrkEhlULX5XMUCeGqANjDYeswaKYGb\nYF/OPsL2ZyIzUiejIVoPR9kuCWA8DNa1whgO84r2gMkBSzGu8hAhBoAlXQAoZWWj\nem3sNNwA9X+0WVGuG0X+RxdzNnZ6o28f5UZuDTCuMjJubKM4qg5uuwFtSXHoW8nU\nGl6Y7Owmqsdkh8ZCM8gA4lPu5Kh6XatqQ6Gzq0PXFyCykuXzJRwW4ZVCKC+UyhA0\nQQIDAQAB\n-----END PUBLIC KEY-----\n"
}

4
clients/redis-2.json Normal file
View File

@@ -0,0 +1,4 @@
{
"name": "redis-2",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzjHtl5iChC5+uxr9YrQu\n3x4zihlVZGk+fYlpbHg2hV880NslRb1MJYFTaKcJrYmgVAnMaKZjfA4fGsWQ3tDl\n/2JcA95U0Soj9BMwr1EUfvna587xS5DnYNCd+OkVtNwqujdoU8Use13UcpwnaN4V\n/9bslQdw2qDeVmeqx7bfTvsATIedWt9eseMR/qnsMd9Rkz/Q3xJ9NgIdQL6cC7uf\nN6H/B+Y+qV5Kv84nwrkTGPyzNOt21mfzeYOiAMGUTUoS+l38hA4ehfVxb8dWTmNa\n8QENbx6DKP5xUEyCiluzFp5jiGJu9xSDngndLVsQ7de5+KvxTjfipczmrWSjPuYB\nXQIDAQAB\n-----END PUBLIC KEY-----\n"
}

View File

@@ -0,0 +1,4 @@
{
"name": "rs-discourse-1",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApJquhCuRRN/O3rh2QShw\nYxGkEIoBImpVv8uF+VmdPLGQ3fYCO20OSr3y+yk1zGN1aQTEgD7LeCd+U2vBUPAh\nwr2uNkZotIsemkWZIMAPLb9d/2uv/GxBqku0L8JRAxGleHVO5eKsi6w1XdwO00dw\nwgEJa+mju86Vz6hzRzW+KzkdpkcfowH2+BVUV+zuzaR9/mPUiuQXZwSnR+Li4S6j\nR4x/AkRsN/43gzgiBwZz1UdAy6r6ZbUBPm4lZT/QKbURJ+x15swbFHKvR34GvdbT\n2mI15VFvLxr+h4bH5CCswcV4eThzISHGbiN3LZQVpneoWP8BjerFVqx0NfbKDu9t\nsQIDAQAB\n-----END PUBLIC KEY-----\n"
}

View File

@@ -0,0 +1,4 @@
{
"name": "rsk-mainnet-3",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwdrYfy0Spmt8VETCdUgW\nHbxV3uYA3kn2swvOdIjIR29gNO+t6wWv6FHnV/pfefIweIPaNlr9VMoUejUKX809\ngzdsiVWh1T6s4Yzbbt+O8mF3my5RXiSvizda8c6U65vofBSL2WVzE1AW9v7lXRHX\nJ4auKrpgKWkNLU52QLIP9/X5YLUHQtpTnplO31eb+jSD185aN1qoIxugunxnWSgm\n2NgUPlVbNCFrhv0PVv4Ts10eX6smRX3LKyNBtRRXM3GIrQHlAYRohIpy3lt8tKm4\nE/v9qpXQHvqEmX9FH1/Sonea849cWX3LuxUYLT2XFpaNwUxJK56Ef0HsgZESaxL+\n3QIDAQAB\n-----END PUBLIC KEY-----\n"
}

View File

@@ -0,0 +1,4 @@
{
"name": "rsk-testnet-4",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1NgmlPomxGRtu5oyro+m\ndQwBXwrhEuE73aLrUsqGOVSezph6LnETiEMFUIe1weoG+xdcykcUUMt7o1+nKs+E\nl8dxMIgbXAxdpI4n8gOpii70Sh30BDbh8+qZHsKBq32UmkCpz2ViVe/Vb3ViqB3e\n0GIkknPle5G4IC612O8EUkCenwcD1jSXYyug5zWI2T/TwnTuw4JdxfhkMgBM7Y2n\nR1YY6GwAMkK97wE/yBM74+Tiv/6lDy/JDbYmUVcQ55C937oodSWLAEM24EcOOtMA\nKfGumnthbdHzmHjONmLIegD3OJGYC2ulcB9qmaL/7cyIRhf6fEQrBolCH5881fxl\nxwIDAQAB\n-----END PUBLIC KEY-----\n"
}

View File

@@ -0,0 +1,4 @@
{
"name": "rsk-testnet-5",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx/UHlgcSeh9Do7CTCKXC\n/4/aO2OvT+ijDVmrMYCNtE4sMeuFqKPnV1zxJZmRm4VNhkSQDkdWYD+6XvuFYW60\nyjB/N6D5lLlyjG4HD6fTkfh0K6f7t5mOYV7o4T59OoA3cBZuSROjtWmJ8jEFJ+k9\nII2kcyhPQcFN01ckzvZKRSPbVRccMoc+AKTjB3ZUfs/ERtlVoDrK4jEHluXOxUJO\nBKCcLonjJuLlpRLh7QfKrKFcR4idn5Ir43R6aSUesI/ipKwKsXnR3Bu7vXp74VF3\nMJ3EkdSBG+qJzy51fbRfQiUPAr/vSoVQZwW7FkIhIqqLkMaYCymn7qKfTGujoNU7\nlwIDAQAB\n-----END PUBLIC KEY-----\n"
}

4
clients/sentry-1.json Normal file
View File

@@ -0,0 +1,4 @@
{
"name": "sentry-1",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtZFwP58ym+92YFa0adU3\nVGEJW13NkfaHChx+akB3IioSPKyJ9eOXEI8pOmU3QyqOUKSbqth78DY84hobXlqs\n4O0A7TV029uepcj5zPN047gDsV1TJ6Dakma5eH+Pe5kP/TigCEOF0Cgo+fqtEBEJ\nT/rhSs3zHD1EfBnZdyj/7YyeDv1XLWI8dXoizDUAoBSCDeJ5d7fG56zmFYLV05Ex\nMrjJuHitEmeJXTZABKstRbEd+3Rld+gfJZ/jI4djEW2j1EKAYMT1SxoXdjKlCrpQ\nGux2RSe+Gspt1hyp/flU5gHGO+qLDNSU9tZInClToyFMVBfoW8kWg28Gm2kGkIvr\npQIDAQAB\n-----END PUBLIC KEY-----\n"
}

4
clients/strfry-1.json Normal file
View File

@@ -0,0 +1,4 @@
{
"name": "strfry-1",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzDV/RMGMXVDbvoA6PNh8\nQzhtHwYDCFcUSkbrwP6tzh6GpVunGEOdOdhj2V63T2tF1H+lujxQXh5pK7C0D6VZ\niO04ftJlo7/svyxUcwWr+znyN5sFdQRh3cBZiGSBYolizwoqgtPFlbNhmWAzV0Du\n9t8mhz70IK3B+UdwWyHtoK0NNsJGnQ9YzAvcjyDmEO/3sCjAhNnxVpmXftpcSmd9\nMonzFtIDBbRRll4AHZYRbmXCzx63+VmelvdnufnbY82liol0zzBwJaBD1wyNlG0y\ni96p3Kx03bLNlIaYVGbjZeJi+6oo2VDWJ4OloLLAYoHDSipeHT9qWfUdnE6ge4Lm\nywIDAQAB\n-----END PUBLIC KEY-----\n"
}

View File

@@ -1,4 +0,0 @@
{
"name": "test-2",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyU+Pg4svFeiLc4/OogiZ\n45MgXWMT7/S28R5lDQ3QwCc4c3mGEfkoiOzBmPpf/JuTIRO6W8hsXQNm5Wr3jGYa\nIKHtfSqNufLievLxymR781Grkzxsy8GefeUajNn0Nypjs4ACso2rdX3KmQ/xJr4n\nFKk6Jj08Fp/7i7kzgC8WA6ZeuVPRw9PODTof7x1BMoTfUXaGPPEIVxtv7cZBdkp1\nQK3F2A8nokqDo3630iOq/P29h80STGmeH8hjpICTGxYDOR/vvp7Zs7z8aueZ6iUT\n3oit8w+gAI4RTgu4bgPbwsh5nfIXZaJeSVrV6zpPO5usMbWWDJgdbhwbAGGYVSFp\nEQIDAQAB\n-----END PUBLIC KEY-----\n"
}

View File

@@ -1,101 +0,0 @@
# Application Changelog
## v5.2.0
* Add `application_directory` resource.
* Chef 13 compatibility.
## v5.1.0
* Add `application_cookbook_file`, `application_file`, and `application_template` resources.
## v5.0.0
* Massive rewrite on top of newer Chef patterns. See the 5.0 README for details.
## v4.1.6
* Support for Chef 12.
* Add `strict_ssh` option to enable host key checking.
* Add `keep_releases` option to control number of releases to keep.
* Allow passing a path to a file for `deploy_key`.
## v4.1.4
* [COOK-3343](https://tickets.opscode.com/browse/COOK-3343) - Can't parse release candidate version number.
## v4.1.2
* [COOK-3343](https://tickets.opscode.com/browse/COOK-3343) - Can't parse release candidate version number.
## v4.1.0
* [COOK-3343] - Can't parse release candidate version number.
## v4.0.0
* Removes compatability with Chef 10.
* [COOK-3564](https://tickets.opscode.com/browse/COOK-3564) - Replace calls to `Chef::Mixin::RecipeDefinitionDSLCore`.
## v3.0.0
* [COOK-3306]: Multiple Memory Leaks in Application Cookbook.
## v2.0.4
* [COOK-2812]: application cookbook doesn't allow to specify a block as `restart_command`.
## v2.0.2
* [COOK-2537]: Provide proper `respond_to` behavior when using `method_missing`.
* [COOK-2713]: application resource should Allow sub-resource attributes to propogate up.
### Improvement
* [COOK-2597]: Allow customization for `shallow_clone` when doing a git deploy.
## v2.0.0
This release is incompatible with previous releases (hence major version change). The recipes used in older versions are deprecated and completely removed. See README.md for further detail.
* [COOK-1673] - `deploy_revision` in the application cookbook gives an argument error.
* [COOK-1820] - Application cookbook: remove deprecated recipes.
## v1.0.4
* [COOK-1567] - Add git submodules to application cookbook.
## v1.0.2
* [COOK-1312] - string callbacks fail with method not found (really included this time).
* [COOK-1332] - add `release_path` and `shared_path` methods.
* [COOK-1333] - add example for running migrations.
* [COOK-1360] - fix minor typos in README.
* [COOK-1374] - use runit attributes in unicorn run script.
## v1.0.0
This release introduces the LWRP for application deployment, as well as other improvements. The recipes will be deprecated in August 2012 as indicated by their warning messages and in the README.md.
* [COOK-634] - Implement LWRP for application deployment.
* [COOK-1116] - use other SCMs than git.
* [COOK-1252] - add `:force_deploy` that maps to corresponding action of deploy resource.
* [COOK-1253] - fix rollback error.
* [COOK-1312] - string callbacks fail with method not found.
* [COOK-1313] - implicit file based hooks aren't invoked.
* [COOK-1318] - Create `to_ary` method to resolve issue in resources() lookup on "application[foo]" resources.
## v0.99.14
* [COOK-1065] - use pip in virtualenv during deploy.
## v0.99.12
* [COOK-606] application cookbook deployment recipes should use ipaddress instead of fqdn.
## v0.99.11
* make the `_default` `chef_environment` look like production rails env.
## v0.99.10
* Use Chef 0.10's `node.chef_environment` instead of `node['app_environment']`.

View File

@@ -1,260 +0,0 @@
# Application cookbook
[![Build Status](https://img.shields.io/travis/poise/application.svg)](https://travis-ci.org/poise/application)
[![Gem Version](https://img.shields.io/gem/v/poise-application.svg)](https://rubygems.org/gems/poise-application)
[![Cookbook Version](https://img.shields.io/cookbook/v/application.svg)](https://supermarket.chef.io/cookbooks/application)
[![Coverage](https://img.shields.io/codeclimate/coverage/github/poise/application.svg)](https://codeclimate.com/github/poise/application)
[![Gemnasium](https://img.shields.io/gemnasium/poise/application.svg)](https://gemnasium.com/poise/application)
[![License](https://img.shields.io/badge/license-Apache_2-blue.svg)](https://www.apache.org/licenses/LICENSE-2.0)
A [Chef](https://www.chef.io/) cookbook to deploy applications.
## Getting Started
The application cookbook provides a central framework to deploy applications
using Chef. Generally this will be web applications using things like Rails,
Django, or NodeJS, but the framework makes no specific assumptions. The core
`application` resource provides DSL support and helpers, but the heavy lifting
is all done in specific plugins detailed below. Each deployment starts with
an `application` resource:
```ruby
application '/path/to/deploy' do
owner 'root'
group 'root'
# ...
end
```
The `application` resource uses the Poise subresource system for plugins. This
means you configure the steps of the deployment like normal recipe code inside
the `application` resource, with a few special additions:
```ruby
application '/path/to/deploy' do
# Application resource properties.
owner 'root'
group 'root'
# Subresources, like normal recipe code.
package 'ruby'
git '/path/to/deploy' do
repository 'https://github.com/example/myapp.git'
end
application_rails '/path/to/deploy' do
database 'mysql://dbhost/myapp'
end
end
```
When evaluating the recipe inside the `application` resource, it first checks
for `application_#{resource}`, as well as looking for an LWRP of the same name
in any cookbook starting with `application_`. This means that a resource named
`application_foo` can be used as `foo` inside the `application` resource:
```ruby
application '/path/to/deploy' do
owner 'root'
group 'root'
rails '/path/to/deploy' do
database 'mysql://dbhost/myapp'
end
end
```
Additionally if a resource inside the `application` block doesn't have a name,
it uses the same name as the application resource itself:
```ruby
application '/path/to/deploy' do
owner 'root'
group 'root'
rails do
database 'mysql://dbhost/myapp'
end
end
```
Other than those two special features, the recipe code inside the `application`
resource is processed just like any other recipe.
## Available Plugins
* [`application_git`](https://github.com/poise/application_git) Deploy
application code from a git repository.
* [`application_ruby`](https://github.com/poise/application_ruby) Manage Ruby
deployments, such as Rails or Sinatra applications.
* [`application_python`](https://github.com/poise/application_python) Manage
Python deployments, such as Django or Flask applications.
* [`application_javascript`](https://github.com/poise/application_javascript)
Manage server-side JavaScript deployments using Node.js or io.js.
* `application_java` *Coming soon!*
* `application_go` *Coming soon!*
* `application_erlang` *Coming soon!*
## Requirements
Chef 12 or newer is required.
## Resources
### `application`
The `application` resource has top-level configuration properties for each
deployment and acts as a container for other deployment plugin resources.
```ruby
application '/opt/test_sinatra' do
git 'https://github.com/example/my_sinatra_app.git'
bundle_install do
deployment true
end
unicorn do
port 9000
end
end
```
#### Actions
* `:deploy` Deploy the application. *(default)*
* `:start` - Run `:start` on all subresources that support it.
* `:stop` - Run `:stop` on all subresources that support it.
* `:restart` - Run `:restart` on all subresources that support it.
* `:reload` - Run `:reload` on all subresources that support it.
#### Properties
* `path` Path to deploy the application to. *(name attribute)*
* `environment` Environment variables for all application deployment steps.
* `group` System group to deploy the application as.
* `owner` System user to deploy the application as.
* `action_on_update` Action to run on the application resource when any
subresource is updated. *(default: restart)*
* `action_on_update_immediately` Run the `action_on_update` notification with
`:immediately`. *(default: false)*
### `application_cookbook_file`, `application_directory`, `application_file`, `application_template`
The `application_cookbook_file`, `application_directory`, `application_file`, and `application_template`
resources extend the core Chef resources to take some application-level
configuration in to account:
```ruby
application '/opt/myapp' do
template 'myapp.conf' do
source 'myapp.conf.erb'
end
directory 'logs'
end
```
If the resource name is a relative path, it will be expanded relative to the
application path. If an owner or group is declared for the application, those
will be the default user and group for the resource.
All other actions and properties are the same as the similar resource in core Chef.
## Examples
Some test recipes are available as examples for common application frameworks:
* [Sinatra](https://github.com/poise/application_ruby/blob/master/test/cookbooks/application_ruby_test/recipes/sinatra.rb)
* [Rails](https://github.com/poise/application_ruby/blob/master/test/cookbooks/application_ruby_test/recipes/rails.rb)
* [Flask](https://github.com/poise/application_python/blob/master/test/cookbook/recipes/flask.rb)
* [Django](https://github.com/poise/application_python/blob/master/test/cookbook/recipes/django.rb)
* [Express](https://github.com/poise/application_javascript/blob/master/test/cookbook/recipes/express.rb)
## Upgrading From 4.x
While the overall design of the revamped application resource is similar to the
4.x version, some changes will need to be made. The `name` property no longer
exists, with the name attribute being used as the path to the deployment.
The `packages` property has been removed as this is more easily handled via
normal recipe code.
The SCM-related properties like `repository` and `revision` are now handled by
normal plugins. If you were deploying from a private git repository you will
likely want to use the `application_git` cookbook, otherwise just use the
built-in `git` or `svn` resources as per normal.
The properties related to the `deploy` resource like `strategy` and `symlinks`
have been removed. The `deploy` resource is no longer used so these aren't
relevant. As a side effect of this, you'll likely want to point the upgraded
deployment at a new folder or manually clean the `current` and `shared` folders
from the existing folder. The pseudo-Capistrano layout used by the `deploy`
resource has few benefits in a config-managed world and introduced a lot of
complexity and moving pieces that are no longer required.
With the removal of the `deploy` resource, the callback properties and commands
are no longer used as well. Subresources no longer use the complex
actions-as-callbacks arrangement as existed before, instead following normal
Chef recipe flow. Individual subresources may need to be tweaked to work with
newer versions of the cookbooks they come from, though most have stayed similar
in overall approach.
## Database Migrations and Chef
Several of the web application deployment plugins include optional support to
run database migrations from Chef. For "toy" applications where the app and
database run together on a single machine, this is fine and is a nice time
saver. For anything more complex I highly recommend not running database
migrations from Chef. Some initial operations like creating the database and/or
database user are more reasonable as they tend to be done only once and by their
nature the application does not yet have users so some level of eventual
consistency is more acceptable. With migrations on a production application, I
encourage using Chef and the application cookbooks to handle deploying the code
and writing configuration files, but use something more specific to run the
actual migration task. [Fabric](http://www.fabfile.org/),
[Capistrano](http://capistranorb.com/), and [Rundeck](http://rundeck.org/) are
all good choices for this orchestration tooling.
Migrations can generally be applied idempotently but they have unique
constraints (pun definitely intended) that make them tricky in a Chef-like,
convergence-based system. First and foremost is that many table alterations
lock the table for updating for at least some period of time. That can mean that
while staging the new code or configuration data can happen within a window, the
migration itself needs to be run in careful lockstep with the rest of the
deployment process (eg. moving things in and out of load balancers). Beyond
that, while most web frameworks have internal idempotence checks for migrations,
running the process on two servers at the same time can have unexpected effects.
Overall migrations are best thought of as a procedural step rather than a
declaratively modeled piece of the system.
## Application Signals and Updates
The `application` resource exposes `start`, `stop`, `restart`, and `reload`
actions which will dispatch to any subresources attached to the application.
This allows for generic application-level restart or reload signals that will
work with any type of deployment.
Additionally the `action_on_update` property is used to set a default
notification so any subresource that updates will trigger an application
restart or reload. This can be disabled by setting `action_on_update false` if
you want to take manual control of service restarts.
## Sponsors
Development sponsored by [Chef Software](https://www.chef.io/), [Symonds & Son](http://symondsandson.com/), and [Orion](https://www.orionlabs.co/).
The Poise test server infrastructure is sponsored by [Rackspace](https://rackspace.com/).
## License
Copyright 2015-2016, Noah Kantrowitz
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

View File

@@ -1,25 +0,0 @@
#
# Copyright 2015-2016, Noah Kantrowitz
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
module PoiseApplication
autoload :AppMixin, 'poise_application/app_mixin'
autoload :Error, 'poise_application/error'
autoload :Resources, 'poise_application/resources'
autoload :ServiceMixin, 'poise_application/service_mixin'
autoload :Utils, 'poise_application/utils'
autoload :VERSION, 'poise_application/version'
end

View File

@@ -1,64 +0,0 @@
#
# Copyright 2015-2016, Noah Kantrowitz
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
require 'poise/utils'
require 'poise_application/app_mixin'
module PoiseApplication
# A helper mixin for `file`-like resources to make them take application
# resource data. Relative paths are expanded against the application path and
# the app owner/group are the default user/group for the resource.
#
# @api private
# @since 5.1.0
module AppFileMixin
include Poise::Utils::ResourceProviderMixin
module Resource
include PoiseApplication::AppMixin
def initialize(*)
super
# So our lazy default below can work. Not needed on 12.7+.
remove_instance_variable(:@path) if instance_variable_defined?(:@path)
end
# @!attribute path
# Override the default path to be relative to the app path.
# @return [String]
attribute(:path, kind_of: String, default: lazy { parent ? ::File.expand_path(name, parent.path) : name })
# @!attribute group
# Override the default group to be the app group if unspecified.
# @return [String, Integer]
attribute(:group, kind_of: [String, Integer, NilClass], default: lazy { parent && parent.group })
# @!attribute owner
# Override the default user to be the app owner if unspecified.
# @return [String, Integer]
attribute(:owner, kind_of: [String, Integer, NilClass], default: lazy { parent && parent.owner })
# For the forgetful.
alias_method :user, :owner
end
module Provider
include PoiseApplication::AppMixin
end
end
end

View File

@@ -1,69 +0,0 @@
#
# Copyright 2015-2016, Noah Kantrowitz
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
require 'chef/mash'
require 'poise/provider'
require 'poise/resource'
require 'poise/utils'
module PoiseApplication
# A helper mixin for application resources and providers. These are things
# intended to be used as subresources of the `application` resource.
#
# @since 5.0.0
module AppMixin
include Poise::Utils::ResourceProviderMixin
# A helper mixin for application resources.
module Resource
include Poise::Resource
# Set the parent type and optional flag.
poise_subresource(:application, true)
# @!attribute path
# Base path for the application.
# @return [String]
attribute(:path, kind_of: String, name_attribute: true)
# A delegator for accessing the application state. If no application
# parent is found, the state will be tracked internally within the
# resource.
#
# @return [Hash<Symbol, Object>]
def app_state
if parent
parent.app_state
else
# If there isn't a parent, just track within the resource.
@local_app_state ||= Mash.new
end
end
# Environment variables stored in the application state.
#
# @return [Hash<String, String>]
def app_state_environment
app_state[:environment] ||= Mash.new
end
end
module Provider
include Poise::Provider
end
end
end

View File

@@ -1,17 +0,0 @@
#
# Copyright 2015-2016, Noah Kantrowitz
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
require 'poise_application/resources'

View File

@@ -1,24 +0,0 @@
#
# Copyright 2015-2016, Noah Kantrowitz
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
module PoiseApplication
# Base exception class for poise-application errors.
#
# @since 5.0.0
class Error < Exception
end
end

View File

@@ -1,30 +0,0 @@
#
# Copyright 2015-2016, Noah Kantrowitz
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
require 'poise_application/resources/application'
require 'poise_application/resources/application_cookbook_file'
require 'poise_application/resources/application_directory'
require 'poise_application/resources/application_file'
require 'poise_application/resources/application_template'
module PoiseApplication
# Chef resources and providers for poise-application.
#
# @since 5.0.0
module Resources
end
end

View File

@@ -1,259 +0,0 @@
#
# Copyright 2015-2016, Noah Kantrowitz
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
require 'chef/dsl/recipe' # On 12.4+ this will pull in chef/dsl/resources.
require 'chef/resource'
require 'chef/provider'
require 'poise'
module PoiseApplication
module Resources
# (see Application::Resource)
# @since 5.0.0
module Application
# An `application` resource to manage application deployment.
#
# @since 5.0.0
# @provides application
# @action deploy
# @action start
# @action stop
# @action restart
# @action reload
# @example
# application '/srv/myapp' do
# git '...'
# poise_service 'myapp' do
# command '/srv/myapp/main'
# end
# end
class Resource < Chef::Resource
include Poise(container: true, container_namespace: false)
provides(:application)
actions(:deploy, :start, :stop, :restart, :reload)
# @!attribute path
# Application base path.
# @return [String]
attribute(:path, kind_of: String, name_attribute: true)
# @!attribute environment
# Environment variables to set for the whole application.
# @return [Hash<String, String>]
attribute(:environment, kind_of: Hash, default: lazy { Mash.new })
# @!attribute owner
# System user that will own the application. This can be overriden in
# individual subresources.
# @return [String]
attribute(:owner, kind_of: String)
# @!attribute group
# System group that will own the application. This can be overriden in
# individual subresources.
# @return [String]
attribute(:group, kind_of: String)
# @!attribute action_on_update
# Action to run when any subresource is updated. Defaults to `:restart`.
# @return [String, Symbol, nil, false]
attribute(:action_on_update, kind_of: [Symbol, String, NilClass, FalseClass], default: :restart)
# @!attribute action_on_update_immediately
# Run the {#action_on_update} notification with `:immediately`.
# @return [Boolean]
attribute(:action_on_update_immediately, equal_to: [true, false], default: false)
# Run the DSL rewire when the resource object is created.
# @api private
def initialize(*args)
super
_rewire_dsl! if node
end
# Application-specific state values used as a way to communicate between
# subresources.
#
# @return [Mash]
# @example
# if new_resource.parent && new_resource.parent.app_state['gemfile_path']
def app_state
@app_state ||= Mash.new(environment: environment)
end
# Override Container#register_subresource to add our action_on_update.
#
# @api private
def register_subresource(resource)
super.tap do |added|
if added && action_on_update
Chef::Log.debug("[#{self}] Registering #{action_on_update_immediately ? 'immediate ' : ''}#{action_on_update} notification from #{resource}")
resource.notifies action_on_update.to_sym, self, (action_on_update_immediately ? :immediately : :delayed)
end
end
end
private
# Find all resources that need to be rewired. This is anything with a
# name starting with application_.
#
# @return [Array<String>]
def _rewire_resources
if defined?(Chef::DSL::Resources)
# Chef >= 12.4.
Chef::DSL::Resources.instance_methods
else
# Chef < 12.4 >= 12.0.
Chef::Resource.descendants.map do |klass|
klass.node_map.instance_variable_get(:@map).keys + if klass.dsl_name.include?('::')
# Probably not valid.
# :nocov:
[]
# :nocov:
else
# Needed for things that don't call provides().
[klass.dsl_name]
end
end.flatten
end.map {|name| name.to_s }.select {|name| name.start_with?('application_') }.uniq
end
# Find all cookbooks that might contain LWRPs matching our name scheme.
#
# @return [Array<String>]
def _rewire_cookbooks
# Run context might be unset during test setup.
if run_context
run_context.cookbook_collection.keys.select {|cookbook_name| cookbook_name.start_with?('application_') }
else
[]
end
end
# Build the mapping of new_name => old_name for each resource to rewire.
#
# @return [Hash<String, String>]
def _rewire_map
application_cookbooks = _rewire_cookbooks
_rewire_resources.inject({}) do |memo, name|
# Grab the resource class to check if it is an LWRP.
klass = Chef::Resource.resource_for_node(name.to_sym, node)
# Find the part to trim. Check for LWRP first, then just application_.
trim = if klass < Chef::Resource::LWRPBase
application_cookbooks.find {|cookbook_name| name.start_with?(cookbook_name) && name != cookbook_name } || 'application'
else
# Non-LWRPs are assumed to have a better name.
'application'
end
# Map trimmed to untrimmed.
memo[name[trim.length+1..-1]] = name
memo
end
end
# Build new DSL methods to implement the foo -> application_foo behavior.
#
# @return [void]
def _rewire_dsl!
# Generate stub methods for all the rewiring.
_rewire_map.each do |new_name, old_name|
# This is defined as a singleton method on self so it looks like
# the DSL but is scoped to just this context.
define_singleton_method(new_name) do |name=nil, *args, &block|
# Store the caller to correct the source_line.
created_at = caller[0]
public_send(old_name, name, *args) do
# Set the declared type to be the native name.
self.declared_type = self.class.resource_name
# Fix the source location. For Chef 12.4 we could do this with the
# declared_at parameter on the initial send.
self.source_line = created_at
# Run the original block.
instance_exec(&block) if block
end
end
end
end
end
# Provider for `application`.
#
# @since 5.0.0
# @see Resource
# @provides application
class Provider < Chef::Provider
include Poise
provides(:application)
# `deploy` action for `application`. Creates the application base folder.
#
# @return [void]
def action_deploy
notifying_block do
directory new_resource.path do
owner new_resource.owner
group new_resource.group
mode '755'
end
end
end
# `start` action for `application`. Proxies to subresources.
#
# @return [void]
def action_start
proxy_action(:start)
end
# `stop` action for `application`. Proxies to subresources.
#
# @return [void]
def action_stop
proxy_action(:stop)
end
# `restart` action for `application`. Proxies to subresources.
#
# @return [void]
def action_restart
proxy_action(:restart)
end
# `reload` action for `application`. Proxies to subresources.
#
# @return [void]
def action_reload
proxy_action(:reload)
end
private
# Proxy an action to any subresources that support it.
#
# @param action [Symbol] Action to proxy.
# @return [void]
def proxy_action(action)
Chef::Log.debug("[#{new_resource} Running proxied #{action} action")
new_resource.subresources.each do |r|
begin
r.run_action(action) if r.allowed_actions.include?(action)
rescue Chef::Exceptions::UnsupportedAction
# Don't care, just move on.
end
end
end
end
end
end
end

View File

@@ -1,54 +0,0 @@
#
# Copyright 2015-2016, Noah Kantrowitz
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
require 'poise_application/app_file_mixin'
module PoiseApplication
module Resources
# (see ApplicationCookbookFile::Resource)
# @since 5.1.0
module ApplicationCookbookFile
# An `application_cookbook_file` resource to manage Chef cookbook_files inside and
# Application cookbook deployment.
#
# @provides application_cookbook_file
# @action create
# @action create_if_missing
# @action delete
# @action touch
# @example
# application '/srv/myapp' do
# cookbook_file 'myapp.conf' do
# source 'myapp.conf'
# end
# end
class Resource < Chef::Resource::CookbookFile
include PoiseApplication::AppFileMixin
provides(:application_cookbook_file)
actions(:create, :create_if_missing, :delete, :touch)
subclass_providers!
def initialize(*args)
super
# For older Chef.
@resource_name = :application_cookbook_file
end
end
end
end
end

View File

@@ -1,50 +0,0 @@
#
# Copyright 2015-2016, Noah Kantrowitz
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
require 'poise_application/app_file_mixin'
module PoiseApplication
module Resources
# (see ApplicationDirectory::Resource)
# @since 5.1.0
module ApplicationDirectory
# An `application_directory` resource to manage Chef files inside and
# Application cookbook deployment.
#
# @provides application_directory
# @action create
# @action delete
# @example
# application '/srv/myapp' do
# directory 'logs'
# end
class Resource < Chef::Resource::Directory
include PoiseApplication::AppFileMixin
provides(:application_directory)
actions(:create, :delete)
subclass_providers!
def initialize(*args)
super
# For older Chef.
@resource_name = :application_directory
end
end
end
end
end

View File

@@ -1,54 +0,0 @@
#
# Copyright 2015-2016, Noah Kantrowitz
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
require 'poise_application/app_file_mixin'
module PoiseApplication
module Resources
# (see ApplicationFile::Resource)
# @since 5.1.0
module ApplicationFile
# An `application_file` resource to manage Chef files inside and
# Application cookbook deployment.
#
# @provides application_file
# @action create
# @action create_if_missing
# @action delete
# @action touch
# @example
# application '/srv/myapp' do
# file 'myapp.conf' do
# source 'myapp.conf.erb'
# end
# end
class Resource < Chef::Resource::File
include PoiseApplication::AppFileMixin
provides(:application_file)
actions(:create, :create_if_missing, :delete, :touch)
subclass_providers!
def initialize(*args)
super
# For older Chef.
@resource_name = :application_file
end
end
end
end
end

View File

@@ -1,54 +0,0 @@
#
# Copyright 2015-2016, Noah Kantrowitz
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
require 'poise_application/app_file_mixin'
module PoiseApplication
module Resources
# (see ApplicationTemplate::Resource)
# @since 5.1.0
module ApplicationTemplate
# An `application_template` resource to manage Chef templates inside and
# Application cookbook deployment.
#
# @provides application_template
# @action create
# @action create_if_missing
# @action delete
# @action touch
# @example
# application '/srv/myapp' do
# template 'myapp.conf' do
# source 'myapp.conf.erb'
# end
# end
class Resource < Chef::Resource::Template
include PoiseApplication::AppFileMixin
provides(:application_template)
actions(:create, :create_if_missing, :delete, :touch)
subclass_providers!
def initialize(*args)
super
# For older Chef.
@resource_name = :application_template
end
end
end
end
end

View File

@@ -1,116 +0,0 @@
#
# Copyright 2015-2016, Noah Kantrowitz
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
require 'chef/resource'
require 'chef/provider'
require 'poise/utils'
require 'poise_service/service_mixin'
require 'poise_service/utils'
require 'poise_application/app_mixin'
require 'poise_application/utils'
module PoiseApplication
# Mixin for application services. This is any resource that will be part of
# an application deployment and involves running a persistent service.
#
# @api public
# @since 5.0.0
# @example
# module MyApp
# class Resource < Chef::Resource
# include Poise
# provides(:my_app)
# include PoiseApplication::ServiceMixin
# end
#
# class Provider < Chef::Provider
# include Poise
# provides(:my_app)
# include PoiseApplication::ServiceMixin
#
# def action_enable
# notifying_block do
# template '/etc/myapp.conf' do
# # ...
# end
# end
# super
# end
#
# def service_options(r)
# super
# r.command('myapp --serve')
# end
# end
# end
module ServiceMixin
include Poise::Utils::ResourceProviderMixin
# Mixin for application service resources.
#
# @see ServiceMixin
module Resource
include PoiseService::ServiceMixin::Resource
include PoiseApplication::AppMixin::Resource
module ClassMethods
# @api private
def included(klass)
super
klass.extend(ClassMethods)
klass.class_exec do
attribute(:path, kind_of: String, name_attribute: true)
# Redefines from the PoiseService version so we get a better default.
attribute(:service_name, kind_of: String, default: lazy { PoiseService::Utils.parse_service_name(path) })
attribute(:user, kind_of: [String, Integer], default: lazy { parent ? parent.owner : 'root' })
end
end
end
extend ClassMethods
end
# Mixin for application service providers.
#
# @see ServiceMixin
module Provider
include PoiseService::ServiceMixin::Provider
include PoiseApplication::AppMixin::Provider
private
# Abstract hook to set parameters on {#service_resource} when it is
# created. This is required to set at least `resource.command`.
#
# @api public
# @param resource [Chef::Resource] Resource instance to set parameters on.
# @return [void]
# @example
# def service_options(resource)
# super
# resource.command('myapp --serve')
# end
def service_options(resource)
super
resource.directory(new_resource.path)
resource.user(new_resource.user)
resource.environment.update(new_resource.app_state_environment) if new_resource.parent
end
end
end
end

View File

@@ -1,51 +0,0 @@
#
# Copyright 2015-2016, Noah Kantrowitz
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
require 'etc'
module PoiseApplication
# Utility methods for PoiseApplication.
#
# @api public
# @since 5.0.0
module Utils
# Methods are also available as module-level methods as well as a mixin.
extend self
# Try to find the primary group name for a given user.
#
# @param user [String, Integer] User to check, if given as an integer this
# is used as a UID, otherwise it is the username.
# @return [String]
# @example
# attribute(:group, kind_of: [String, Integer], default: lazy { PoiseApplication::Utils.primary_group_for(user) })
def primary_group_for(user)
# Force a reload in case any users were created earlier in the run.
Etc.endpwent
Etc.endgrent
user = if user.is_a?(Integer)
Etc.getpwuid(user)
else
Etc.getpwnam(user.to_s)
end
Etc.getgrgid(user.gid).name
rescue ArgumentError
# One of the get* calls exploded. ¯\_(ツ)_/¯
user.to_s
end
end
end

View File

@@ -1,20 +0,0 @@
#
# Copyright 2015-2016, Noah Kantrowitz
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
module PoiseApplication
VERSION = '5.2.0'
end

View File

@@ -1,19 +0,0 @@
#
# Copyright 2015-2016, Noah Kantrowitz
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
raise 'Halite is not compatible with no_lazy_load false, please set no_lazy_load true in your Chef configuration file.' unless Chef::Config[:no_lazy_load]
$LOAD_PATH << File.expand_path('../../files/halite_gem', __FILE__)
require "poise_application/cheftie"

File diff suppressed because one or more lines are too long

View File

@@ -1,10 +0,0 @@
# Application_Git Changelog
## v1.1.0
* [#2](https://github.com/poise/application_git/issues/2) Inherit user and group values from the parent `application` resource.
* [#3](https://github.com/poise/application_git/issues/3) Fix usage with users created during the current Chef run.
## v1.0.0
* Initial release.

View File

@@ -1,108 +0,0 @@
# Application_Git Cookbook
[![Build Status](https://img.shields.io/travis/poise/application_git.svg)](https://travis-ci.org/poise/application_git)
[![Gem Version](https://img.shields.io/gem/v/poise-application-git.svg)](https://rubygems.org/gems/poise-application-git)
[![Cookbook Version](https://img.shields.io/cookbook/v/application_git.svg)](https://supermarket.chef.io/cookbooks/application_git)
[![Coverage](https://img.shields.io/codecov/c/github/poise/application_git.svg)](https://codecov.io/github/poise/application_git)
[![Gemnasium](https://img.shields.io/gemnasium/poise/application_git.svg)](https://gemnasium.com/poise/application_git)
[![License](https://img.shields.io/badge/license-Apache_2-blue.svg)](https://www.apache.org/licenses/LICENSE-2.0)
A [Chef](https://www.chef.io/) cookbook to handle deploying code from git when
using the [application cookbook](https://github.com/poise/application).
## Quick Start
To deploy from a private GitHub repository:
```ruby
application '/srv/myapp' do
git 'git@github.com:example/myapp.git' do
deploy_key chef_vault_item('deploy_keys', 'myapp')['key']
end
end
```
## Requirements
Chef 12 or newer is required.
## Resources
### `application_git`
The `application_git` resource deploys code from git. It extends the core `git`
resource to support deploy keys and disabling strict host key verification.
```ruby
application '/srv/myapp' do
git 'git@github.com:example/myapp.git'
end
```
#### Actions
All actions work the same as the core `git` resource.
* `:sync` Clone and checkout the requested revision *(default)*
* `:checkout` Checkout the request revision. If the repository isn't already
cloned, this action does nothing.
* `:export` Export the repository without the `.git` folder.
#### Properties
All properties from the core `git` resource work the same way with the following
additions:
* `deploy_key` SSH key to use with git. Can be specified either as a path to
key file already created or as a string value containing the key directly.
* `strict_ssh` Enable strict SSH host key checking. *(default: false)*
### DSL Usage
The `application_git` resource can be used directly as a replacement for the
core `git` resource:
```ruby
application_git '/srv/myapp' do
repository 'git@github.com:example/myapp.git'
deploy_key chef_vault_item('deploy_keys', 'myapp')['key']
end
```
Within the `application` resource, a simplified DSL is available. As with other
`application` plugins, the default name of the resource if unspecified is the
application path. The following two examples are equivalent:
```ruby
application '/srv/myapp' do
git do
repository 'git@github.com:example/myapp.git'
end
end
application '/srv/myapp' do
git 'git@github.com:example/myapp.git'
end
```
## Sponsors
Development sponsored by [Chef Software](https://www.chef.io/), [Symonds & Son](http://symondsandson.com/), and [Orion](https://www.orionlabs.co/).
The Poise test server infrastructure is sponsored by [Rackspace](https://rackspace.com/).
## License
Copyright 2015-2016, Noah Kantrowitz
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

View File

@@ -1,17 +0,0 @@
#
# Copyright 2015-2016, Noah Kantrowitz
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
require 'poise_application_git'

View File

@@ -1,21 +0,0 @@
#
# Copyright 2015-2016, Noah Kantrowitz
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
require 'poise_application_git/resource'
module PoiseApplicationGit
end

View File

@@ -1,17 +0,0 @@
#
# Copyright 2015-2016, Noah Kantrowitz
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
require 'poise_application_git/resource'

View File

@@ -1,204 +0,0 @@
#
# Copyright 2015-2016, Noah Kantrowitz
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
require 'zlib'
require 'chef/provider'
require 'chef/resource'
require 'poise_application/app_mixin'
require 'poise_application/resources/application'
require 'poise_application_git/safe_string'
module PoiseApplicationGit
# An `application_git` resource to clone application code from git.
#
# @since 1.0.0
# @provides application_git
# @action sync
# @action checkout
# @action export
# @example
# application '/srv/myapp' do
# git 'git@github.com:example/myapp.git' do
# deploy_key data_bag_item('deploy_keys', 'myapp')['key']
# end
# end
class Resource < Chef::Resource::Git
include PoiseApplication::AppMixin
provides(:application_git)
# @api private
def initialize(*args)
super
# Because the superclass declares this, we have to as well. Should be
# removable at some point when Chef makes everything use the provider
# resolver system instead.
@resource_name = :application_git
@provider = PoiseApplicationGit::Provider
# Clear defaults in older versions of Chef.
remove_instance_variable(:@group) if instance_variable_defined?(:@group)
remove_instance_variable(:@user) if instance_variable_defined?(:@user)
end
# @!attribute group
# Group to run git as. Defaults to the application group.
# @return [String, Integer, nil, false]
attribute(:group, kind_of: [String, Integer, NilClass, FalseClass], default: lazy { parent && parent.group })
# @!attribute strict_ssh
# Enable strict SSH host key checking. Defaults to false.
# @return [Boolean]
attribute(:strict_ssh, equal_to: [true, false], default: false)
# @!attribute user
# User to run git as. Defaults to the application owner.
# @return [String, Integer, nil, false]
attribute(:user, kind_of: [String, Integer, NilClass, FalseClass], default: lazy { parent && parent.owner })
# @api private
def after_created
# Allow using the repository as the name in an application block.
if parent && !repository
destination(parent.path)
repository(name)
end
end
# @!attribute deploy_key
# SSH deploy key as either a string value or a path to a key file.
# @return [String]
def deploy_key(val=nil)
# Use a SafeString for literal deploy keys so they aren't shown.
val = SafeString.new(val) if val && !deploy_key_is_local?(val)
set_or_return(:deploy_key, val, kind_of: String)
end
# Default SSH wrapper path.
#
# @api private
# @return [String]
def ssh_wrapper_path
@ssh_wrapper_path ||= ::File.expand_path("~#{user}/.ssh/ssh_wrapper_#{Zlib.crc32(name)}")
end
# Guess if the deploy key is a local path or literal value.
#
# @api private
# @param key [String, nil] Key value to check. Defaults to self.key.
# @return [Boolean]
def deploy_key_is_local?(key=nil)
key ||= deploy_key
key && key[0] == '/'
end
# Path to deploy key.
#
# @api private
# @return [String]
def deploy_key_path
@deploy_key_path ||= if deploy_key_is_local?
deploy_key
else
::File.expand_path("~#{user}/.ssh/id_deploy_#{Zlib.crc32(name)}")
end
end
end
# Provider for `application_git`.
#
# @since 1.0.0
# @see Resource
# @provides application_git
class Provider < Chef::Provider::Git
include PoiseApplication::AppMixin
provides(:application_git)
# @api private
def initialize(*args)
super
# Set the SSH wrapper path in a late-binding kind of way. This better
# supports situations where the user doesn't exist until Chef converges.
new_resource.ssh_wrapper(new_resource.ssh_wrapper_path) if new_resource.deploy_key
end
# @api private
def whyrun_supported?
false # Just not dealing with this right now
end
# Hack our special login in before load_current_resource runs because that
# needs access to the git remote.
#
# @api private
def load_current_resource
include_recipe('git')
notifying_block do
create_dotssh
write_deploy_key
write_ssh_wrapper
end if new_resource.deploy_key
super
end
private
# Create a .ssh folder for the user.
#
# @return [void]
def create_dotssh
directory ::File.expand_path("~#{new_resource.user}/.ssh") do
owner new_resource.user
group new_resource.group
mode '755'
end
end
# Copy the deploy key to a file if needed.
#
# @return [void]
def write_deploy_key
# Check if we have a local path or some actual content
return if new_resource.deploy_key_is_local?
file new_resource.deploy_key_path do
owner new_resource.user
group new_resource.group
mode '600'
content new_resource.deploy_key
sensitive true
end
end
# Create the SSH wrapper script.
#
# @return [void]
def write_ssh_wrapper
# Write out the GIT_SSH script, it should already be enabled above
file new_resource.ssh_wrapper_path do
owner new_resource.user
group new_resource.group
mode '700'
content %Q{#!/bin/sh\n/usr/bin/env ssh #{'-o "StrictHostKeyChecking=no" ' unless new_resource.strict_ssh}-i "#{new_resource.deploy_key_path}" $@\n}
end
end
# Patch back in the `#git` from the git provider. This otherwise conflicts
# with the `#git` defined by the DSL, which gets included in such a way
# that the DSL takes priority.
def git(*args, &block)
Chef::Provider::Git.instance_method(:git).bind(self).call(*args, &block)
end
end
end

View File

@@ -1,25 +0,0 @@
#
# Copyright 2015-2016, Noah Kantrowitz
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
module PoiseApplicationGit
# A string that won't be shown in Chef error output
class SafeString < String
def to_text
'"suppressed sensitive value"'
end
end
end

View File

@@ -1,19 +0,0 @@
#
# Copyright 2015-2016, Noah Kantrowitz
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
raise 'Halite is not compatible with no_lazy_load false, please set no_lazy_load true in your Chef configuration file.' unless Chef::Config[:no_lazy_load]
$LOAD_PATH << File.expand_path('../../files/halite_gem', __FILE__)
require "poise_application_git/cheftie"

View File

@@ -1 +0,0 @@
{"name":"application_git","version":"1.1.0","description":"A plugin for poise-application to deploy applications from git.","long_description":"# Application_Git Cookbook\n\n[![Build Status](https://img.shields.io/travis/poise/application_git.svg)](https://travis-ci.org/poise/application_git)\n[![Gem Version](https://img.shields.io/gem/v/poise-application-git.svg)](https://rubygems.org/gems/poise-application-git)\n[![Cookbook Version](https://img.shields.io/cookbook/v/application_git.svg)](https://supermarket.chef.io/cookbooks/application_git)\n[![Coverage](https://img.shields.io/codecov/c/github/poise/application_git.svg)](https://codecov.io/github/poise/application_git)\n[![Gemnasium](https://img.shields.io/gemnasium/poise/application_git.svg)](https://gemnasium.com/poise/application_git)\n[![License](https://img.shields.io/badge/license-Apache_2-blue.svg)](https://www.apache.org/licenses/LICENSE-2.0)\n\nA [Chef](https://www.chef.io/) cookbook to handle deploying code from git when\nusing the [application cookbook](https://github.com/poise/application).\n\n## Quick Start\n\nTo deploy from a private GitHub repository:\n\n```ruby\napplication '/srv/myapp' do\n git 'git@github.com:example/myapp.git' do\n deploy_key chef_vault_item('deploy_keys', 'myapp')['key']\n end\nend\n```\n\n## Requirements\n\nChef 12 or newer is required.\n\n## Resources\n\n### `application_git`\n\nThe `application_git` resource deploys code from git. It extends the core `git`\nresource to support deploy keys and disabling strict host key verification.\n\n```ruby\napplication '/srv/myapp' do\n git 'git@github.com:example/myapp.git'\nend\n```\n\n#### Actions\n\nAll actions work the same as the core `git` resource.\n\n* `:sync` Clone and checkout the requested revision *(default)*\n* `:checkout` Checkout the request revision. If the repository isn't already\n cloned, this action does nothing.\n* `:export` Export the repository without the `.git` folder.\n\n#### Properties\n\nAll properties from the core `git` resource work the same way with the following\nadditions:\n\n* `deploy_key` SSH key to use with git. Can be specified either as a path to\n key file already created or as a string value containing the key directly.\n* `strict_ssh` Enable strict SSH host key checking. *(default: false)*\n\n### DSL Usage\n\nThe `application_git` resource can be used directly as a replacement for the\ncore `git` resource:\n\n```ruby\napplication_git '/srv/myapp' do\n repository 'git@github.com:example/myapp.git'\n deploy_key chef_vault_item('deploy_keys', 'myapp')['key']\nend\n```\n\nWithin the `application` resource, a simplified DSL is available. As with other\n`application` plugins, the default name of the resource if unspecified is the\napplication path. The following two examples are equivalent:\n\n```ruby\napplication '/srv/myapp' do\n git do\n repository 'git@github.com:example/myapp.git'\n end\nend\n\napplication '/srv/myapp' do\n git 'git@github.com:example/myapp.git'\nend\n```\n\n## Sponsors\n\nDevelopment sponsored by [Chef Software](https://www.chef.io/), [Symonds & Son](http://symondsandson.com/), and [Orion](https://www.orionlabs.co/).\n\nThe Poise test server infrastructure is sponsored by [Rackspace](https://rackspace.com/).\n\n## License\n\nCopyright 2015-2016, Noah Kantrowitz\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n","maintainer":"Noah Kantrowitz","maintainer_email":"noah@coderanger.net","license":"Apache 2.0","platforms":{},"dependencies":{"git":">= 0.0.0","poise":"~> 2.0","application":"~> 5.0"},"recommendations":{},"suggestions":{},"conflicting":{},"providing":{},"replacing":{},"attributes":{},"groupings":{},"recipes":{}}

View File

@@ -1,5 +0,0 @@
# Application_Javascript Changelog
## v1.0.0
Initial release!

View File

@@ -1,132 +0,0 @@
# Application_Javascript Cookbook
[![Build Status](https://img.shields.io/travis/poise/application_javascript.svg)](https://travis-ci.org/poise/application_javascript)
[![Gem Version](https://img.shields.io/gem/v/poise-application-javascript.svg)](https://rubygems.org/gems/poise-application-javascript)
[![Cookbook Version](https://img.shields.io/cookbook/v/application_javascript.svg)](https://supermarket.chef.io/cookbooks/application_javascript)
[![Coverage](https://img.shields.io/codecov/c/github/poise/application_javascript.svg)](https://codecov.io/github/poise/application_javascript)
[![Gemnasium](https://img.shields.io/gemnasium/poise/application_javascript.svg)](https://gemnasium.com/poise/application_javascript)
[![License](https://img.shields.io/badge/license-Apache_2-blue.svg)](https://www.apache.org/licenses/LICENSE-2.0)
A [Chef](https://www.chef.io/) cookbook to deploy server-side JavaScript
applications using Node.js or io.js.
## Quick Start
To deploy an Express application from git:
```ruby
application '/srv/myapp' do
git 'https://github.com/example/myapp.git'
npm_install
npm_start
end
```
## Requirements
Chef 12 or newer is required.
## Resources
### `application_javascript`
The `application_javascript` resource installs a JavaScript runtime for the
deployment.
```ruby
application '/srv/myapp' do
javascript '3'
end
```
All actions and properties are the same as the [`javascript_runtime` resource](https://github.com/poise/poise-javascript#javascript_runtime).
### `application_javascript_service`
The `application_javascript_javascript_service` resource creates a service for a
JavaScript command.
```ruby
application '/srv/myapp' do
javascript_service 'main.js'
end
```
#### Actions
* `:enable` Create, enable and start the service. *(default)*
* `:disable` Stop, disable, and destroy the service.
* `:start` Start the service.
* `:stop` Stop the service.
* `:restart` Stop and then start the service.
* `:reload` Send the configured reload signal to the service.
#### Properties
* `command` Command to run. *(name attribute)*
* `path` Base path for the application. *(default: application path)*
* `service_name` Name of the service to create. *(default: auto-detect)*
# `user` User to run the service as. *(default: application owner)*
### `application_node_package`
The `application_node_package` resource installs NPM packages for the deployment.
```ruby
application '/srv/myapp' do
node_package 'grunt-cli'
end
```
All actions and properties are the same as the [`node_package` resource](https://github.com/poise/poise-javascript#node_package),
except that the `group` and `user` properties default to the application-level
data if not specified.
### `application_npm_start`
The `application_npm_start` resource creates a service for a JavaScript
application using `npm start`.
```ruby
application '/srv/myapp' do
npm_start
end
```
#### Actions
* `:enable` Create, enable and start the service. *(default)*
* `:disable` Stop, disable, and destroy the service.
* `:start` Start the service.
* `:stop` Stop the service.
* `:restart` Stop and then start the service.
* `:reload` Send the configured reload signal to the service.
#### Properties
* `path` Base path for the application. *(default: name attribute)*
* `command` NPM subcommand to run. *(default: start)*
* `service_name` Name of the service to create. *(default: auto-detect)*
# `user` User to run the service as. *(default: application owner)*
## Sponsors
Development sponsored by [Chef Software](https://www.chef.io/), [Symonds & Son](http://symondsandson.com/), and [Orion](https://www.orionlabs.co/).
The Poise test server infrastructure is sponsored by [Rackspace](https://rackspace.com/).
## License
Copyright 2015, Noah Kantrowitz
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

View File

@@ -1,23 +0,0 @@
#
# Copyright 2015, Noah Kantrowitz
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
module PoiseApplicationJavascript
autoload :AppMixin, 'poise_application_javascript/app_mixin'
autoload :Error, 'poise_application_javascript/error'
autoload :Resources, 'poise_application_javascript/resources'
autoload :VERSION, 'poise_application_javascript/version'
end

View File

@@ -1,67 +0,0 @@
#
# Copyright 2015, Noah Kantrowitz
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
require 'poise/backports'
require 'poise/utils'
require 'poise_application/app_mixin'
require 'poise_javascript/javascript_command_mixin'
module PoiseApplicationJavascript
# A helper mixin for Javascript application resources and providers.
#
# @since 4.0.0
module AppMixin
include Poise::Utils::ResourceProviderMixin
# A helper mixin for Javascript application resources.
module Resource
include PoiseApplication::AppMixin::Resource
include PoiseJavascript::JavascriptCommandMixin::Resource
# @!attribute parent_javascript
# Override the #parent_javascript from JavascriptCommandMixin to grok the
# application level parent as a default value.
# @return [PoiseJavascript::Resources::JavascriptRuntime::Resource, nil]
parent_attribute(:javascript, type: :javascript_runtime, optional: true, default: lazy { app_state_javascript.equal?(self) ? nil : app_state_javascript })
# @attribute app_state_javascript
# The application-level Javascript parent.
# @return [PoiseJavascript::Resources::JavascriptRuntime::Resource, nil]
def app_state_javascript(javascript=Poise::NOT_PASSED)
unless javascript == Poise::NOT_PASSED
app_state[:javascript] = javascript
end
app_state[:javascript]
end
# A merged hash of environment variables for both the application state
# and parent javascript.
#
# @return [Hash<String, String>]
def app_state_environment_javascript
env = app_state_environment
env = env.merge(parent_javascript.javascript_environment) if parent_javascript
env
end
end
# A helper mixin for Javascript application providers.
module Provider
include PoiseApplication::AppMixin::Provider
end
end
end

View File

@@ -1,17 +0,0 @@
#
# Copyright 2015, Noah Kantrowitz
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
require 'poise_application_javascript/resources'

View File

@@ -1,25 +0,0 @@
#
# Copyright 2015, Noah Kantrowitz
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
require 'poise_application/error'
module PoiseApplicationJavascript
# Base exception class for poise-application-javascript errors.
#
# @since 1.0.0
class Error < PoiseApplication::Error
end
end

View File

@@ -1,22 +0,0 @@
#
# Copyright 2015, Noah Kantrowitz
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
require 'poise_application_javascript/resources/javascript'
require 'poise_application_javascript/resources/javascript_execute'
require 'poise_application_javascript/resources/javascript_service'
require 'poise_application_javascript/resources/node_package'
require 'poise_application_javascript/resources/npm_install'
require 'poise_application_javascript/resources/npm_start'

View File

@@ -1,64 +0,0 @@
#
# Copyright 2015, Noah Kantrowitz
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
require 'poise_javascript/resources/javascript_runtime'
require 'poise_application_javascript/app_mixin'
module PoiseApplicationJavascript
module Resources
# (see Javascript::Resource)
# @since 1.0.0
module Javascript
# An `application_javascript` resource to manage Javascript runtimes
# inside an Application cookbook deployment.
#
# @provides application_javascript
# @provides application_javascript_runtime
# @action install
# @action uninstall
# @example
# application '/app' do
# javascript '3'
# end
class Resource < PoiseJavascript::Resources::JavascriptRuntime::Resource
include PoiseApplicationJavascript::AppMixin
provides(:application_javascript)
# Need the double javascript for application resource rewriting.
provides(:application_javascript_runtime)
container_default(false)
subclass_providers!
# We want to run the base class version of this, not the one from the
# mixin. HULK SMASH.
def npm_binary
self.class.superclass.instance_method(:npm_binary).bind(self).call
end
# Set this resource as the app_state's parent javascript.
#
# @api private
def after_created
super.tap do |val|
app_state_javascript(self)
end
end
end
end
end
end

View File

@@ -1,88 +0,0 @@
#
# Copyright 2015, Noah Kantrowitz
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
require 'poise_javascript/resources/javascript_execute'
require 'poise_application_javascript/app_mixin'
module PoiseApplicationJavascript
module Resources
# (see JavascriptExecute::Resource)
# @since 1.0.0
module JavascriptExecute
# An `application_javascript_execute` resource to run Javascript commands inside an
# Application cookbook deployment.
#
# @provides application_javascript_execute
# @action run
# @example
# application '/srv/myapp' do
# javascript_execute 'setup.py install'
# end
class Resource < PoiseJavascript::Resources::JavascriptExecute::Resource
include PoiseApplicationJavascript::AppMixin
provides(:application_javascript_execute)
def initialize(*args)
super
# Clear some instance variables so my defaults work.
remove_instance_variable(:@cwd)
remove_instance_variable(:@group)
remove_instance_variable(:@user)
end
# #!attribute cwd
# Override the default directory to be the app path if unspecified.
# @return [String]
attribute(:cwd, kind_of: [String, NilClass, FalseClass], default: lazy { parent && parent.path })
# #!attribute group
# Override the default group to be the app group if unspecified.
# @return [String, Integer]
attribute(:group, kind_of: [String, Integer, NilClass, FalseClass], default: lazy { parent && parent.group })
# #!attribute user
# Override the default user to be the app owner if unspecified.
# @return [String, Integer]
attribute(:user, kind_of: [String, Integer, NilClass, FalseClass], default: lazy { parent && parent.owner })
end
# The default provider for `application_javascript_execute`.
#
# @see Resource
# @provides application_javascript_execute
class Provider < PoiseJavascript::Resources::JavascriptExecute::Provider
provides(:application_javascript_execute)
private
# Override environment to add the application envivonrment instead.
#
# @return [Hash]
def environment
super.tap do |environment|
# Don't use the app_state_environment_javascript because we already have
# those values in place.
environment.update(new_resource.app_state_environment)
# Re-apply the resource environment for correct ordering.
environment.update(new_resource.environment) if new_resource.environment
end
end
end
end
end
end

View File

@@ -1,59 +0,0 @@
#
# Copyright 2015, Noah Kantrowitz
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
require 'chef/provider'
require 'chef/resource'
require 'poise'
require 'poise_application_javascript/service_mixin'
module PoiseApplicationJavascript
module Resources
# (see JavascriptService::Resource)
# @since 1.0.0
module JavascriptService
class Resource < Chef::Resource
include PoiseApplicationJavascript::ServiceMixin
provides(:application_javascript_service)
# @!attribute command
# Command to run.
# @return [String]
attribute(:command, kind_of: String, name_attribute: true)
# @!attribute path
# Override {PoiseApplicationJavascript::ServiceMixin#path} to make it
# not the name_attribute.
# @return [String]
attribute(:path, kind_of: String, default: lazy { parent && parent.path })
end
class Provider < Chef::Provider
include PoiseApplicationJavascript::ServiceMixin
provides(:application_javascript_service)
private
# (see PoiseApplication::ServiceMixin#service_options)
def service_options(resource)
super
resource.javascript_command(new_resource.command)
end
end
end
end
end

View File

@@ -1,63 +0,0 @@
#
# Copyright 2015, Noah Kantrowitz
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
require 'poise_javascript/resources/node_package'
require 'poise_application_javascript/app_mixin'
module PoiseApplicationJavascript
module Resources
# (see NodePackage::Resource)
# @since 1.0.0
module NodePackage
# An `application_node_package` resource to install NPM packages inside
# an Application cookbook deployment.
#
# @provides application_node_package
# @action install
# @action upgrade
# @action remove
# @example
# application '/app' do
# node_package %w{grunt-cli gulp}
# end
class Resource < PoiseJavascript::Resources::NodePackage::Resource
include PoiseApplicationJavascript::AppMixin
provides(:application_node_package)
subclass_providers!
def initialize(*args)
super
# For older Chef.
@resource_name = :application_node_package
end
# #!attribute group
# Override the default group to be the app group if unspecified.
# @return [String, Integer]
attribute(:group, kind_of: [String, Integer, NilClass], default: lazy { parent && parent.group })
# #!attribute user
# Override the default user to be the app owner if unspecified.
# @return [String, Integer]
attribute(:user, kind_of: [String, Integer, NilClass], default: lazy { parent && parent.owner })
# @todo This should handle relative paths against parent.path.
end
end
end
end

View File

@@ -1,45 +0,0 @@
#
# Copyright 2015, Noah Kantrowitz
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
require 'poise_javascript/resources/npm_install'
require 'poise_application_javascript/app_mixin'
module PoiseApplicationJavascript
module Resources
# (see NpmInstall::Resource)
# @since 1.0.0
module NpmInstall
# An `application_npm_install` resource to install package
# dependencies inside an Application cookbook deployment.
#
# @provides application_npm_install
# @action install
# @example
# application '/app' do
# npm_install
# end
class Resource < PoiseJavascript::Resources::NpmInstall::Resource
include PoiseApplicationJavascript::AppMixin
provides(:application_npm_install)
subclass_providers!
# @todo This should handle relative paths against parent.path.
end
end
end
end

View File

@@ -1,78 +0,0 @@
#
# Copyright 2015, Noah Kantrowitz
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
require 'shellwords'
require 'chef/provider'
require 'chef/resource'
require 'poise'
require 'poise_application_javascript/service_mixin'
module PoiseApplicationJavascript
module Resources
# (see NpmStart::Resource)
# @since 1.0.0
module NpmStart
# An `application_npm_start` resource to create a service for a Javascript
# application using `npm start`.
#
# @provides application_npm_start
# @action enable
# @action disable
# @action start
# @action stop
# @action restart
# @action reload
# @example
# application '/app' do
# npm_start
# end
class Resource < Chef::Resource
include PoiseApplicationJavascript::ServiceMixin
provides(:application_npm_start)
# @!attribute command
# NPM sub-command to run. Defaults to `start`.
# @return [String, Array<String>]
attribute(:command, kind_of: [String, Array], default: 'start')
end
# The default provider for `application_npm_start`.
#
# @see Resource
# @provides application_npm_start
class Provider < Chef::Provider
include PoiseApplicationJavascript::ServiceMixin
provides(:application_npm_start)
private
# (see PoiseApplication::ServiceMixin#service_options)
def service_options(resource)
super
npm_cmd = [new_resource.npm_binary] + Array(new_resource.command)
resource.javascript_command(Shellwords.join(npm_cmd))
# Make sure node is on $PATH because grrr.
new_path = [::File.dirname(new_resource.javascript), (new_resource.app_state_environment_javascript['PATH'] || ENV['PATH']).to_s].join(::File::PATH_SEPARATOR)
resource.environment['PATH'] = new_path
end
end
end
end
end

View File

@@ -1,57 +0,0 @@
#
# Copyright 2015, Noah Kantrowitz
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
require 'poise/utils'
require 'poise_application/service_mixin'
require 'poise_languages/utils'
require 'poise_application_javascript/app_mixin'
module PoiseApplicationJavascript
# A helper mixin for Javascript service resources and providers.
#
# @since 1.0.0
module ServiceMixin
include Poise::Utils::ResourceProviderMixin
# A helper mixin for Javascript service resources.
module Resource
include PoiseApplication::ServiceMixin::Resource
include PoiseApplicationJavascript::AppMixin::Resource
end
# A helper mixin for Javascript service providers.
module Provider
include PoiseApplication::ServiceMixin::Provider
include PoiseApplicationJavascript::AppMixin::Provider
# Set up the service for running Javascript stuff.
def service_options(resource)
super
# Closure scoping for #javascript_command below.
self_ = self
# Create a new singleton method that fills in `node` for you.
resource.define_singleton_method(:javascript_command) do |val|
resource.command("#{self_.new_resource.javascript} #{PoiseLanguages::Utils.absolute_command(val, path: self_.new_resource.app_state_environment_javascript['PATH'])}")
end
# Include env vars as needed.
resource.environment.update(new_resource.parent_javascript.javascript_environment) if new_resource.parent_javascript
end
end
end
end

View File

@@ -1,19 +0,0 @@
#
# Copyright 2015, Noah Kantrowitz
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
module PoiseApplicationJavascript
VERSION = '1.0.0'
end

View File

@@ -1,19 +0,0 @@
#
# Copyright 2015, Noah Kantrowitz
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
raise 'Halite is not compatible with no_lazy_load false, please set no_lazy_load true in your Chef configuration file.' unless Chef::Config[:no_lazy_load]
$LOAD_PATH << File.expand_path('../../files/halite_gem', __FILE__)
require "poise_application_javascript/cheftie"

File diff suppressed because one or more lines are too long

View File

@@ -2,6 +2,40 @@
This file is used to list changes made in each version of the ark cookbook. This file is used to list changes made in each version of the ark cookbook.
## 6.0.3 - *2021-08-30*
- Standardise files with files in sous-chefs/repo-management
## 6.0.2 - *2021-06-18*
- Update location of test archive fixtures
## 6.0.1 - *2021-06-01*
- Standardise files with files in sous-chefs/repo-management
## 6.0.0 - *2021-05-22*
- Chef 17 updates: enable `unified_mode` on all resources
- Bump required Chef Infra Client to >= 15.3
- Migrate to using `seven_zip_tool` resource directly and require `seven_zip` >= 3.1
- Various ChefSpec fixes
## 5.1.1 - *2021-04-29*
- Added a version pin on seven_zip
## 5.1.0 - *2021-01-24*
- Sous Chefs Adoption
- Standardise files with files in sous-chefs/repo-management
- Cookstyle fixes
- Add integration testing for Windows and MacOS
- Remove testing for Amazon Linux 201x, CentOS 6 and Ubuntu 16.04
- Fix ChefSpec tests
- Fix issues with `--strip-components` with the `:cherry_pick` action on MacOS
- Ensure `/etc/profile.d` exists on MacOS if `append_env_path` is used
## 5.0.0 (2020-01-02) ## 5.0.0 (2020-01-02)
- Require Chef Infra Client 14+ and remove the need for the build_essential dependency - [@tas50](https://github.com/tas50) - Require Chef Infra Client 14+ and remove the need for the build_essential dependency - [@tas50](https://github.com/tas50)
@@ -33,8 +67,9 @@ This file is used to list changes made in each version of the ark cookbook.
- Rewrite of resource to custom resources. - Rewrite of resource to custom resources.
- Remove EOL platforms from testing. - Remove EOL platforms from testing.
- Update zlib URL - Update zlib URL
-
## 2.2.1 (2016-12-16) ## 2.2.1 (2016-12-16)
- Use Ohai root_group attribute to avoid trying to set the group to root on BSD/macOS. - Use Ohai root_group attribute to avoid trying to set the group to root on BSD/macOS.
- Add missing accessor for owner property - Add missing accessor for owner property

View File

@@ -1,2 +0,0 @@
Please refer to
https://github.com/chef-cookbooks/community_cookbook_documentation/blob/master/CONTRIBUTING.MD

202
cookbooks/ark/LICENSE Normal file
View File

@@ -0,0 +1,202 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "{}"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright {yyyy} {name of copyright owner}
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

View File

@@ -1,6 +1,10 @@
# ark cookbook # ark cookbook
[![Build Status](https://travis-ci.org/chef-cookbooks/ark.svg?branch=master)](https://travis-ci.org/chef-cookbooks/ark) [![Cookbook Version](https://img.shields.io/cookbook/v/ark.svg)](https://supermarket.chef.io/cookbooks/ark) [![Cookbook Version](https://img.shields.io/cookbook/v/ark.svg)](https://supermarket.chef.io/cookbooks/ark)
[![CI State](https://github.com/sous-chefs/ark/workflows/ci/badge.svg)](https://github.com/sous-chefs/ark/actions?query=workflow%3Aci)
[![OpenCollective](https://opencollective.com/sous-chefs/backers/badge.svg)](#backers)
[![OpenCollective](https://opencollective.com/sous-chefs/sponsors/badge.svg)](#sponsors)
[![License](https://img.shields.io/badge/License-Apache%202.0-green.svg)](https://opensource.org/licenses/Apache-2.0)
## Overview ## Overview
@@ -27,6 +31,10 @@ By default, the ark will not run again if the `:path` is not empty. Ark provides
For remote files ark supports URLs using the [remote_file](http://docs.chef.io/resource_remote_file.html) resource. Local files are accessed with the `file://` syntax. For remote files ark supports URLs using the [remote_file](http://docs.chef.io/resource_remote_file.html) resource. Local files are accessed with the `file://` syntax.
## Maintainers
This cookbook is maintained by the Sous Chefs. The Sous Chefs are a community of Chef cookbook maintainers working together to maintain important cookbooks. If youd like to know more please visit [sous-chefs.org](https://sous-chefs.org/) or come chat with us on the Chef Community Slack in [#sous-chefs](https://chefcommunity.slack.com/messages/C2V7B88SF).
## Requirements ## Requirements
### Platforms ### Platforms
@@ -269,29 +277,27 @@ You can also supply the file extension in case the file extension can not be det
end end
``` ```
## License & Authors ## Contributors
- Author: Philip (flip) Kromer - Infochimps, Inc([coders@infochimps.com](mailto:coders@infochimps.com)) This project exists thanks to all the people who [contribute.](https://opencollective.com/sous-chefs/contributors.svg?width=890&button=false)
- Author: Bryan W. Berry ([bryan.berry@gmail.com](mailto:bryan.berry@gmail.com))
- Author: Denis Barishev ([denis.barishev@gmail.com](mailto:denis.barishev@gmail.com))
- Author: Sean OMeara ([someara@chef.io](mailto:someara@chef.io))
- Author: John Bellone ([jbellone@bloomberg.net](mailto:jbellone@bloomberg.net))
- Copyright: 2011, Philip (flip) Kromer - Infochimps, Inc
- Copyright: 2012, Bryan W. Berry
- Copyright: 2012, Denis Barishev
- Copyright: 2013-2017, Chef Software, Inc
- Copyright: 2014, Bloomberg L.P.
``` ### Backers
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0 Thank you to all our backers!
Unless required by applicable law or agreed to in writing, software ![https://opencollective.com/sous-chefs#backers](https://opencollective.com/sous-chefs/backers.svg?width=600&avatarHeight=40)
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ### Sponsors
See the License for the specific language governing permissions and
limitations under the License. Support this project by becoming a sponsor. Your logo will show up here with a link to your website.
```
![https://opencollective.com/sous-chefs/sponsor/0/website](https://opencollective.com/sous-chefs/sponsor/0/avatar.svg?avatarHeight=100)
![https://opencollective.com/sous-chefs/sponsor/1/website](https://opencollective.com/sous-chefs/sponsor/1/avatar.svg?avatarHeight=100)
![https://opencollective.com/sous-chefs/sponsor/2/website](https://opencollective.com/sous-chefs/sponsor/2/avatar.svg?avatarHeight=100)
![https://opencollective.com/sous-chefs/sponsor/3/website](https://opencollective.com/sous-chefs/sponsor/3/avatar.svg?avatarHeight=100)
![https://opencollective.com/sous-chefs/sponsor/4/website](https://opencollective.com/sous-chefs/sponsor/4/avatar.svg?avatarHeight=100)
![https://opencollective.com/sous-chefs/sponsor/5/website](https://opencollective.com/sous-chefs/sponsor/5/avatar.svg?avatarHeight=100)
![https://opencollective.com/sous-chefs/sponsor/6/website](https://opencollective.com/sous-chefs/sponsor/6/avatar.svg?avatarHeight=100)
![https://opencollective.com/sous-chefs/sponsor/7/website](https://opencollective.com/sous-chefs/sponsor/7/avatar.svg?avatarHeight=100)
![https://opencollective.com/sous-chefs/sponsor/8/website](https://opencollective.com/sous-chefs/sponsor/8/avatar.svg?avatarHeight=100)
![https://opencollective.com/sous-chefs/sponsor/9/website](https://opencollective.com/sous-chefs/sponsor/9/avatar.svg?avatarHeight=100)

View File

@@ -31,7 +31,7 @@ pkgs = %w(libtool autoconf) unless platform_family?('mac_os_x')
pkgs += %w(make) unless platform_family?('mac_os_x', 'freebsd') pkgs += %w(make) unless platform_family?('mac_os_x', 'freebsd')
pkgs += %w(unzip rsync gcc) unless platform_family?('mac_os_x') pkgs += %w(unzip rsync gcc) unless platform_family?('mac_os_x')
pkgs += %w(autogen) unless platform_family?('rhel', 'fedora', 'mac_os_x', 'suse', 'amazon') pkgs += %w(autogen) unless platform_family?('rhel', 'fedora', 'mac_os_x', 'suse', 'amazon')
pkgs += %w(gtar) if platform?('freebsd') || platform?('smartos') pkgs += %w(gtar) if platform?('freebsd', 'smartos')
pkgs += %w(gmake) if platform?('freebsd') pkgs += %w(gmake) if platform?('freebsd')
if platform_family?('rhel', 'suse', 'amazon') if platform_family?('rhel', 'suse', 'amazon')
if node['platform_version'].to_i >= 7 if node['platform_version'].to_i >= 7

115
cookbooks/ark/chefignore Normal file
View File

@@ -0,0 +1,115 @@
# Put files/directories that should be ignored in this file when uploading
# to a Chef Infra Server or Supermarket.
# Lines that start with '# ' are comments.
# OS generated files #
######################
.DS_Store
ehthumbs.db
Icon?
nohup.out
Thumbs.db
.envrc
# EDITORS #
###########
.#*
.project
.settings
*_flymake
*_flymake.*
*.bak
*.sw[a-z]
*.tmproj
*~
\#*
REVISION
TAGS*
tmtags
.vscode
.editorconfig
## COMPILED ##
##############
*.class
*.com
*.dll
*.exe
*.o
*.pyc
*.so
*/rdoc/
a.out
mkmf.log
# Testing #
###########
.circleci/*
.codeclimate.yml
.delivery/*
.foodcritic
.kitchen*
.mdlrc
.overcommit.yml
.rspec
.rubocop.yml
.travis.yml
.watchr
.yamllint
azure-pipelines.yml
Dangerfile
examples/*
features/*
Guardfile
kitchen.yml*
mlc_config.json
Procfile
Rakefile
spec/*
test/*
# SCM #
#######
.git
.gitattributes
.gitconfig
.github/*
.gitignore
.gitkeep
.gitmodules
.svn
*/.bzr/*
*/.git
*/.hg/*
*/.svn/*
# Berkshelf #
#############
Berksfile
Berksfile.lock
cookbooks/*
tmp
# Bundler #
###########
vendor/*
Gemfile
Gemfile.lock
# Policyfile #
##############
Policyfile.rb
Policyfile.lock.json
# Documentation #
#############
CODE_OF_CONDUCT*
CONTRIBUTING*
documentation/*
TESTING*
UPGRADING*
# Vagrant #
###########
.vagrant
Vagrantfile

View File

@@ -0,0 +1,65 @@
driver:
name: dokken
privileged: true # because Docker and SystemD
chef_version: <%= ENV['CHEF_VERSION'] || 'current' %>
chef_license: accept-no-persist
transport:
name: dokken
provisioner:
name: dokken
platforms:
- name: amazonlinux-2
driver:
image: dokken/amazonlinux-2
pid_one_command: /usr/lib/systemd/systemd
- name: debian-9
driver:
image: dokken/debian-9
pid_one_command: /bin/systemd
intermediate_instructions:
- RUN /usr/bin/apt-get update
- name: debian-10
driver:
image: dokken/debian-10
pid_one_command: /bin/systemd
intermediate_instructions:
- RUN /usr/bin/apt-get update
- name: centos-7
driver:
image: dokken/centos-7
pid_one_command: /usr/lib/systemd/systemd
- name: centos-8
driver:
image: dokken/centos-8
pid_one_command: /usr/lib/systemd/systemd
- name: fedora-latest
driver:
image: dokken/fedora-latest
pid_one_command: /usr/lib/systemd/systemd
- name: ubuntu-18.04
driver:
image: dokken/ubuntu-18.04
pid_one_command: /bin/systemd
intermediate_instructions:
- RUN /usr/bin/apt-get update
- name: ubuntu-20.04
driver:
image: dokken/ubuntu-20.04
pid_one_command: /bin/systemd
intermediate_instructions:
- RUN /usr/bin/apt-get update
- name: opensuse-leap-15
driver:
image: dokken/opensuse-leap-15
pid_one_command: /bin/systemd

View File

@@ -0,0 +1,14 @@
---
driver:
name: exec
transport:
name: exec
provisioner:
name: chef_zero
deprecations_as_errors: true
platforms:
- name: windows-latest
- name: macos-latest

Some files were not shown because too many files have changed in this diff Show More