32 Commits

Author SHA1 Message Date
raucao 8d0c6bc301 Update backup ignorelist 2026-07-24 19:16:41 +02:00
raucao 80766f2473 Update nodes 2026-07-24 19:16:41 +02:00
raucao d9a59e064e Merge pull request 'Make create_vm work on all OS versions in use' (#653) from bugfix/create_vm into master
Reviewed-on: #653
Reviewed-by: Greg <greg@kosmos.org>
2026-07-24 17:14:44 +00:00
raucao 16cb333991 Merge branch 'master' into bugfix/create_vm 2026-07-24 15:27:28 +02:00
raucao 7386de86d7 Make create_vm work on all OS versions in use
Makes it work with the same cloudinit code on Ubuntu 20.04 by mounting
it from a custom ISO as CD-ROM
2026-07-24 15:19:59 +02:00
raucao 5ff6046169 Add new Redis node 2026-07-24 15:19:43 +02:00
raucao 093a98b753 Add new Redis node 2026-07-23 17:48:15 +02:00
raucao 7b76fc1579 Merge pull request 'Split user creation into separate base recipe; add script for mass-converging nodes' (#652) from chore/split_users_recipe into master
Reviewed-on: #652
2026-07-23 15:47:52 +00:00
raucao 527603bd63 Add script for mass-converging
E.g. just the new users recipe
2026-07-23 17:43:36 +02:00
greg 6bb23e70d6 Split users creation to its own recipe 2026-07-23 15:45:46 +02:00
raucao bd3e8d8c26 Merge pull request 'Replace my SSH key' (#651) from chore/greg_ssh_key into master
Reviewed-on: #651
2026-07-20 11:24:37 +00:00
greg b2aa902421 Replace my SSH key 2026-07-20 13:12:39 +02:00
raucao 3c740a0b92 Merge pull request 'Move node configs to submodule from private repo' (#650) from chore/nodes_submodule into master
Reviewed-on: #650
2026-07-13 15:24:26 +00:00
raucao 4e0131597f Re-add nodes as submodule from private repo 2026-07-13 17:20:16 +02:00
raucao 742ca590f2 Remove node configs 2026-07-13 17:19:07 +02:00
raucao 4ecfb8fc7f Merge pull request 'Add default tmux config with plugins, plus custom user configs' (#648) from feature/tmux into master
Reviewed-on: #648
Reviewed-by: Greg <greg@kosmos.org>
2026-07-13 15:14:04 +00:00
raucao 66481aa4c4 Merge pull request 'Upgrade Sentry to 26.6.0' (#649) from chore/upgrade_sentry into master
Reviewed-on: #649
Reviewed-by: Greg <greg@kosmos.org>
2026-07-13 15:08:14 +00:00
raucao 626662a7ff Merge pull request 'Add a recipe to install the zerotier ohai plugin' (#647) from feature/ohai_zerotier into master
Reviewed-on: #647
Reviewed-by: Râu Cao <raucao@kosmos.org>
2026-07-13 15:00:47 +00:00
greg f2e0a0929a Update garage-16 node file after Chef run 2026-07-13 16:59:19 +02:00
greg 12948be193 Do not manually save node data
It is not needed
2026-07-13 16:58:47 +02:00
greg df4f1236de Clean up white list attributes in client.rb
Both old and new styles. We define our allow list in the client.d file
2026-07-13 16:57:24 +02:00
raucao 875b23c746 Upgrade Sentry to 26.6.0 2026-07-13 16:00:05 +02:00
raucao b34c3ad20b Add default tmux config and plugins 2026-07-13 15:39:47 +02:00
greg db69e437d5 Remove sanitize node script and pre-commit hook
This is no longer needed with the properly set allowed attributes
2026-07-11 20:08:58 +02:00
greg 663c4da0a0 Update the prometheus-1 node after running Chef
It now contains the attributes from the ohai plugin
2026-07-11 17:35:04 +02:00
greg 010e2d0d64 Add zerotier ohai plugin to the base role 2026-07-11 17:34:39 +02:00
greg 065eac06b1 Add a recipe to install the zerotier ohai plugin
The attributes are saved as "automatic" attributes and look like this:

  "zerotier": {
    "version": "1.16.2",
    "node_id": "NODEID",
    "networks": {
      "NETWORKID": {
        "network_name": "networkname",
        "mac": "ff:ff:ff:ff:ff:ff",
        "status": "OK",
        "type": "PRIVATE",
        "interface": "abcdefg",
        "addresses": [
          "10.1.1.255/24"
        ]
      }
    }
  }

Refs #263
2026-07-11 17:29:31 +02:00
greg 1759af98b8 Simplify and improve chef attribute handling
Set the attributes in a Ruby file under /etc/chef/client.d/ instead of
editing /etc/chef/client.rb
Now uses the new whitelist attribute:
https://docs.chef.io/client/19/cookbooks/attributes/attribute_persistence/

Local chef config also uses the same file. That means there is no longer
a need to use the sanitize script to remove override and default
attributes from nodes.
2026-07-11 17:28:03 +02:00
raucao 736d4effa4 Upgrade RS discourse, increase service timeouts 2026-07-10 11:30:11 +02:00
raucao 1ebe0e4074 Merge pull request 'Update akkounts cookbook, deploy new akkounts VM' (#645) from chore/akkounts into master
Reviewed-on: #645
2026-07-10 09:29:44 +00:00
raucao 9250b2c726 Deploy new akkounts node, remove old one 2026-07-10 11:27:01 +02:00
raucao 6807b8f5bc Update akkounts cookbook, deploy new akkounts VM
* Fix: add missing directory resource
* New nodejs cookbook usage
* Remove Redis entirely (not using local Redis anymore)
2026-07-10 11:24:42 +02:00
71 changed files with 438 additions and 3123 deletions
+2 -22
View File
@@ -8,27 +8,7 @@ data_bag_path "data_bags"
encrypted_data_bag_secret "#{current_dir}/encrypted_data_bag_secret" encrypted_data_bag_secret "#{current_dir}/encrypted_data_bag_secret"
local_mode true # Chef local mode, replacing Solo local_mode true # Chef local mode, replacing Solo
# Knife-Zero config, see https://knife-zero.github.io/40_configuration/
# Prevent attributes from being saved to the node files
knife[:automatic_attribute_whitelist] = %w[
fqdn
os
os_version
hostname
ipaddress
roles
recipes
ipaddress
platform
platform_version
cloud
cloud_v2
chef_packages
]
# Added to /etc/chef/client.rb on node bootstrap # Added to /etc/chef/client.rb on node bootstrap
# https://docs.chef.io/attribute_persistence/ # https://docs.chef.io/attribute_persistence/
# Source of truth: site-cookbooks/kosmos-base/files/default/chef_normal_attributes.yml # Source of truth: site-cookbooks/kosmos-base/files/default/chef_attributes.rb
normal_attrs = YAML.load_file(File.expand_path("../site-cookbooks/kosmos-base/files/default/chef_normal_attributes.yml", __dir__)) client_d_dir(File.expand_path("../site-cookbooks/kosmos-base/files/default/chef_attributes.rb"))
knife[:normal_attribute_allowlist] = normal_attrs
knife[:allowed_normal_attributes] = normal_attrs
-40
View File
@@ -1,40 +0,0 @@
#!/usr/bin/env bash
set -euo pipefail
SCRIPT="$(git rev-parse --show-toplevel)/scripts/util/sanitize_node.sh"
FILES=$(git diff --cached --name-only --diff-filter=ACM -- 'nodes/*.json' || true)
[[ -z "$FILES" ]] && exit 0
DIRTY=0
while IFS= read -r file; do
staged_tmp=$(mktemp)
sanitized_tmp=$(mktemp)
# 1. get staged version
git show ":$file" > "$staged_tmp"
# 2. sanitize IN PLACE (on temp copy)
cp "$staged_tmp" "$sanitized_tmp"
"$SCRIPT" "$sanitized_tmp"
# 3. if sanitizer changed file, update working tree
if ! diff -q "$staged_tmp" "$sanitized_tmp" >/dev/null; then
cp "$sanitized_tmp" "$file"
echo "Sanitized: $file"
DIRTY=1
fi
rm -f "$staged_tmp" "$sanitized_tmp"
done <<< "$FILES"
if [[ "$DIRTY" -ne 0 ]]; then
echo ""
echo "Commit paused, sanitized files must be re-staged."
exit 1
fi
exit 0
+3
View File
@@ -13,3 +13,6 @@
[submodule "site-cookbooks/blossom"] [submodule "site-cookbooks/blossom"]
path = site-cookbooks/blossom path = site-cookbooks/blossom
url = git@gitea.kosmos.org:kosmos/blossom-cookbook.git url = git@gitea.kosmos.org:kosmos/blossom-cookbook.git
[submodule "nodes"]
path = nodes
url = git@gitea.kosmos.org:kosmos/chef-nodes.git
-4
View File
@@ -28,10 +28,6 @@ Clone this repository, `cd` into it, and run:
bundle install bundle install
### Enable Git hooks
git config core.hooksPath .githooks
## Common tasks ## Common tasks
### Bootstrap a new host server ### Bootstrap a new host server
-4
View File
@@ -1,4 +0,0 @@
{
"name": "akkounts-1",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0LKcqydrG3zgtmThEg+q\nOcw8QvIB2usMkF4kNMFeqhhdr2q/AtRcq4RJ0u0MiZbkHduGWfG9QZpjmbFZcEke\nURJbddqSDPHFAtrK2+BpcMqNN/mSp59f4MJf6wdLnBoeZCF5pCCXibyj+/754Ly+\nEJNiB1sf1Lu82YW2YM7iLhOLk1QQD2DTfBGbj9swdPrgKK+1npQ4A7O8sOB5gDjb\n9QVLCvCEoYFi+9is0vw/YryEr6tfnNw+CroP2uDfyVfWznF8oPUuttAcHgqDA3CV\n7lCRk9yVt1FKwuq2lFcsMqZ7wO4EoxpzCz/XTnpFPFvgeVinyXjSPsQCBAdwJe5T\nWQIDAQAB\n-----END PUBLIC KEY-----\n"
}
+4
View File
@@ -0,0 +1,4 @@
{
"name": "akkounts-2",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAi/0X3npRvDRwPVRIWu4z\nY+9Qnj7EONuarsZ5aVuuVV/sqUpdJoQB/zYCxrF3HvNXbaDDOmIKiUiTfttWdcVK\nOIXH1IcykFSXFzT5tBof+kRVTHIVp5vtR1dAi1eCm1i7CId52Zqti0aF2/08XVUy\npWOJLlDObwn/M6i0gAQs/kGtYkFhlvZrmAkrlDYCzHb1nalyATohS9n/aNn8bvY1\noSPZb4vmlW4ln5y+tqJf8fOWlfUiIdgRnsQKFa97ijfQFbv1TGv33rhqDdsjR2jn\n7qJmYQ7U83W2cGhBiUR7N4rWY0Mig3e9UeOufVpNDLVvRcXZWx1pzDyn9pD6lk+7\nFwIDAQAB\n-----END PUBLIC KEY-----\n"
}
+4
View File
@@ -0,0 +1,4 @@
{
"name": "redis-3",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoRDTlMy6e+GXmen1nvQL\nTlbfXosRk1qTiqXYKtH0fmXz6i0OchBeNj4xZP+UvkrKcsifoumScGhSslQo1lzU\nASAJe5/lG1govkK27UFXwnYPZGRaB13CXJSDe5nbhga21HdDBbZOYttYa8/xQIes\nkbUGUu6uzJKXux5tiOD1ZhQTVIgnXx0ELjeRvRR4NOqEaXW+PPht6pK9MFFoN3tf\nnG/vt19QBM6Eox+UuKqSYloBseu8HRbves7jN4g/ml4qdjftgXft9H6OGCPmv+rA\nyRezzcVN7L092y3Ti+d6RftOBnIl8ABlURChnEFvUFxNRtT/0Zo7321w2TaDBfGa\n2wIDAQAB\n-----END PUBLIC KEY-----\n"
}
+4
View File
@@ -0,0 +1,4 @@
{
"name": "redis-4",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAn3Zdzfao+n3PdtlJlViJ\nnpVDcL8ofw2rb2/VK7ivpWMKaL7mOq8HIQ+R+ghvllX/vPmN6co3+aUxOvvQ6KGC\nmAcnc7StqOpYUK0g6QZFROESO0vz1hy078AL9D2dEwOj7XS8leWCQyGgA1Z89T9n\naatXqEF1zGuvnVLA340prYkJk5S1X6KHq1WIi9H23hYehvGZlpkJ87wv8sKIo4Y3\nzIVA5hio0t0q+JyStOGr+xRl3mM43b25XcIh2ibrzKp3YoRWSCvMfhAdMKm1WEEI\njM/3fQRtkI1OQSb0o/wUoAmpUEEOTIvbWU2SuFVY7HYRuPwEilvbrGZKgrvbp8R+\nZQIDAQAB\n-----END PUBLIC KEY-----\n"
}
+10
View File
@@ -0,0 +1,10 @@
{
"id": "sentry",
"launchpad_rpc_shared_secret": {
"encrypted_data": "Y8BFYM4YZjz/nv4zHEAkyheAVB18HdNi1KzvqJrRXXnnYI5bC8fVO9g=\n",
"iv": "1txuL+Uy+HIIs6CF\n",
"auth_tag": "aVHnUaVRo/xXeZRh0Z1pbw==\n",
"version": 3,
"cipher": "aes-256-gcm"
}
}
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"id": "kare", "id": "kare",
"ssh_keys": [ "ssh_keys": [
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCw0I82gT8R4tpsqWGovLyjm2SR2F863MqNz224h3h/wl0xA5Eu0eRro+ELLv2hoebqQbcMsb89X5+7ObhDRar+b7tzDlXq4x+ECkAy6WbDSmBp3kNVd7muT4c9Zw7UxKsIvIm1ven1TkJ3UG80o6PyGiAUlBj4puIQwhp7OVknVutBBe8Rpp4f6BEuWluwpnPxc3KSaGhhr9p10xeX69cfspH40r8vHpI0zp19O5GpfYSOEH64UbwRpN2QypNB8ISmDHFsNGwdz0Ba4qrEOSGU9GveyOcsvEtt630/0fHqtbPBovOYu/FJISQZya2tofDig4EngBCJNfsPCbXFHtlp greg@karekinian.com" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE0mZjhqMeoA//SFg8i8XvXIaiUwXXjoCiBTloe7HPQH greg+2026@kosmos.org"
], ],
"groups": ["sysadmin", "systemd-journal"], "groups": ["sysadmin", "systemd-journal"],
"shell": "\/bin\/bash" "shell": "\/bin\/bash"
+1 -1
View File
@@ -81,7 +81,7 @@
"garage-", "garage-",
"lq-", "lq-",
"rsk-", "rsk-",
"postgres-6" "postgres-11"
] ]
} }
}, },
Submodule
+1
Submodule nodes added at 2535a79036
-90
View File
@@ -1,90 +0,0 @@
{
"name": "akkounts-1",
"chef_environment": "production",
"normal": {
"knife_zero": {
"host": "10.1.1.144"
},
"vm_host": "draco"
},
"automatic": {
"fqdn": "akkounts-1",
"os": "linux",
"os_version": "5.4.0-223-generic",
"hostname": "akkounts-1",
"ipaddress": "192.168.122.160",
"roles": [
"base",
"kvm_guest",
"ldap_client",
"sentry_client",
"garage_gateway",
"akkounts",
"postgresql_client"
],
"recipes": [
"kosmos-base",
"kosmos-base::default",
"kosmos_prometheus::node_exporter",
"kosmos_kvm::guest",
"kosmos-dirsrv::hostsfile",
"kosmos_sentry::client",
"kosmos_garage",
"kosmos_garage::default",
"kosmos_garage::firewall_rpc",
"kosmos_postgresql::hostsfile",
"kosmos-akkounts",
"kosmos-akkounts::default",
"apt::default",
"timezone_iii::default",
"timezone_iii::debian",
"ntp::default",
"ntp::apparmor",
"kosmos-base::journald_conf",
"kosmos-base::systemd_emails",
"apt::unattended-upgrades",
"kosmos-base::firewall",
"kosmos-postfix::default",
"postfix::default",
"postfix::_common",
"postfix::_attributes",
"postfix::sasl_auth",
"hostname::default",
"firewall::default",
"redisio::default",
"redisio::_install_prereqs",
"redisio::install",
"redisio::ulimit",
"redisio::disable_os_default",
"redisio::configure",
"redisio::enable",
"kosmos-nodejs::default",
"nodejs::nodejs_from_package",
"nodejs::repo",
"nodejs::npm",
"nodejs::install"
],
"platform": "ubuntu",
"platform_version": "20.04",
"cloud": null,
"chef_packages": {
"chef": {
"version": "18.10.17",
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.10.17/lib",
"chef_effortless": null
},
"ohai": {
"version": "18.2.13",
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.2.13/lib/ohai"
}
}
},
"run_list": [
"role[base]",
"role[kvm_guest]",
"role[ldap_client]",
"role[sentry_client]",
"role[garage_gateway]",
"role[akkounts]"
]
}
-112
View File
@@ -1,112 +0,0 @@
{
"name": "bitcoin-2",
"normal": {
"knife_zero": {
"host": "10.1.1.163"
},
"vm_host": "draco"
},
"automatic": {
"fqdn": "bitcoin-2",
"os": "linux",
"os_version": "5.4.0-216-generic",
"hostname": "bitcoin-2",
"ipaddress": "192.168.122.148",
"roles": [
"base",
"kvm_guest",
"sentry_client",
"bitcoind",
"lnd",
"lndhub",
"postgresql_client",
"btcpay"
],
"recipes": [
"kosmos-base",
"kosmos-base::default",
"kosmos_prometheus::node_exporter",
"kosmos_kvm::guest",
"kosmos_sentry::client",
"tor-full",
"tor-full::default",
"kosmos-bitcoin::bitcoind",
"kosmos-bitcoin::lnd",
"kosmos-bitcoin::lnd-scb-s3",
"kosmos-bitcoin::rtl",
"kosmos-bitcoin::peerswap-lnd",
"kosmos_postgresql::hostsfile",
"kosmos-bitcoin::lndhub-go",
"kosmos-bitcoin::dotnet",
"kosmos-bitcoin::nbxplorer",
"kosmos-bitcoin::btcpay",
"kosmos-bitcoin::price_tracking",
"apt::default",
"timezone_iii::default",
"timezone_iii::debian",
"ntp::default",
"ntp::apparmor",
"kosmos-base::journald_conf",
"kosmos-base::systemd_emails",
"apt::unattended-upgrades",
"kosmos-base::firewall",
"kosmos-postfix::default",
"postfix::default",
"postfix::_common",
"postfix::_attributes",
"postfix::sasl_auth",
"hostname::default",
"ark::default",
"kosmos-bitcoin::user",
"kosmos-bitcoin::blocksdir-mount",
"kosmos-bitcoin::firewall",
"git::default",
"git::package",
"kosmos-bitcoin::golang",
"golang::default",
"backup::default",
"logrotate::default",
"kosmos-bitcoin::aws-client",
"kosmos-nodejs::default",
"nodejs::nodejs_from_package",
"nodejs::repo",
"firewall::default",
"kosmos-nginx::default",
"nginx::default",
"nginx::package",
"nginx::ohai_plugin",
"nginx::repo",
"nginx::commons",
"nginx::commons_dir",
"nginx::commons_script",
"nginx::commons_conf",
"kosmos-nginx::firewall",
"kosmos-base::letsencrypt"
],
"platform": "ubuntu",
"platform_version": "20.04",
"cloud": null,
"chef_packages": {
"chef": {
"version": "18.2.7",
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.2.7/lib",
"chef_effortless": null
},
"ohai": {
"version": "18.1.4",
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.1.4/lib/ohai"
}
}
},
"run_list": [
"role[base]",
"role[kvm_guest]",
"role[sentry_client]",
"recipe[tor-full]",
"role[bitcoind]",
"role[lnd]",
"role[lndhub]",
"role[btcpay]",
"recipe[kosmos-bitcoin::price_tracking]"
]
}
-72
View File
@@ -1,72 +0,0 @@
{
"name": "discourse-2",
"chef_environment": "production",
"normal": {
"knife_zero": {
"host": "10.1.1.35"
},
"vm_host": "fornax"
},
"automatic": {
"fqdn": "discourse-2",
"os": "linux",
"os_version": "5.4.0-1133-kvm",
"hostname": "discourse-2",
"ipaddress": "192.168.122.104",
"roles": [
"base",
"kvm_guest",
"garage_gateway",
"kosmos_discourse"
],
"recipes": [
"kosmos-base",
"kosmos-base::default",
"kosmos_prometheus::node_exporter",
"kosmos_kvm::guest",
"kosmos_garage",
"kosmos_garage::default",
"kosmos_garage::firewall_rpc",
"kosmos-dirsrv::hostsfile",
"kosmos_discourse",
"kosmos_discourse::default",
"apt::default",
"timezone_iii::default",
"timezone_iii::debian",
"ntp::default",
"ntp::apparmor",
"kosmos-base::journald_conf",
"kosmos-base::systemd_emails",
"apt::unattended-upgrades",
"kosmos-base::firewall",
"kosmos-postfix::default",
"postfix::default",
"postfix::_common",
"postfix::_attributes",
"postfix::sasl_auth",
"hostname::default",
"firewall::default",
"discourse::default"
],
"platform": "ubuntu",
"platform_version": "20.04",
"cloud": null,
"chef_packages": {
"chef": {
"version": "18.10.17",
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.10.17/lib",
"chef_effortless": null
},
"ohai": {
"version": "18.2.13",
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.2.13/lib/ohai"
}
}
},
"run_list": [
"role[base]",
"role[kvm_guest]",
"role[garage_gateway]",
"role[kosmos_discourse]"
]
}
-139
View File
@@ -1,139 +0,0 @@
{
"name": "draco.kosmos.org",
"chef_environment": "production",
"normal": {
"knife_zero": {
"host": "10.1.1.167"
},
"kosmos_kvm": {
"backup": {
"schedule": "0/3:55"
}
},
"openresty": {
"listen_ip": "148.251.237.111",
"listen_ipv6": "2a01:4f8:202:804a::2",
"log_formats": {
"json": "{\"ip\":\"$remote_addr\",\"time\":\"$time_local\",\"host\":\"$host\",\"method\":\"$request_method\",\"uri\":\"$uri\",\"status\":$status,\"size\":$body_bytes_sent,\"referer\":\"$http_referer\",\"upstream_addr\":\"$upstream_addr\",\"upstream_response_time\":\"$upstream_response_time\",\"ua\":\"$http_user_agent\"}"
}
}
},
"automatic": {
"fqdn": "draco.kosmos.org",
"os": "linux",
"os_version": "5.4.0-187-generic",
"hostname": "draco",
"ipaddress": "148.251.237.73",
"roles": [
"base",
"kvm_host",
"email_proxy",
"openresty_proxy",
"openresty",
"garage_gateway",
"tor_proxy"
],
"recipes": [
"kosmos-base",
"kosmos-base::default",
"kosmos_prometheus::node_exporter",
"kosmos_kvm::host",
"kosmos_kvm::backup",
"kosmos_email::firewall",
"kosmos_openresty",
"kosmos_openresty::default",
"kosmos_openresty::firewall",
"kosmos_garage",
"kosmos_garage::default",
"kosmos_garage::firewall_rpc",
"kosmos_assets::nginx_site",
"kosmos_blossom::nginx",
"kosmos_discourse::nginx",
"kosmos_drone::nginx",
"kosmos_garage::nginx_web",
"kosmos_garage::nginx_s3",
"kosmos_gitea::nginx",
"kosmos_gitea::nginx_ssh",
"kosmos_liquor-cabinet::nginx",
"kosmos_rsk::nginx_testnet",
"kosmos_rsk::nginx_mainnet",
"kosmos_strfry::nginx",
"kosmos_website",
"kosmos_website::default",
"kosmos_website::redirects",
"kosmos-akkounts::nginx",
"kosmos-akkounts::nginx_api",
"kosmos-bitcoin::nginx_lndhub",
"kosmos-hubot::nginx_botka_irc-libera-chat",
"kosmos-hubot::nginx_hal8000_xmpp",
"kosmos-ipfs::nginx_public_gateway",
"kosmos-mastodon::nginx",
"remotestorage_discourse::nginx",
"kosmos-base::tor_services",
"tor-full",
"tor-full::default",
"kosmos_encfs",
"kosmos_encfs::default",
"kosmos-ejabberd::firewall",
"kosmos-ipfs::firewall_swarm",
"kosmos-bitcoin::firewall",
"kosmos_zerotier::firewall",
"sockethub::firewall",
"apt::default",
"timezone_iii::default",
"timezone_iii::debian",
"ntp::default",
"ntp::apparmor",
"kosmos-base::journald_conf",
"kosmos-base::systemd_emails",
"apt::unattended-upgrades",
"kosmos-base::firewall",
"kosmos-postfix::default",
"postfix::default",
"postfix::_common",
"postfix::_attributes",
"postfix::sasl_auth",
"hostname::default",
"openresty::apt_package",
"openresty::ohai_plugin",
"openresty::commons_cleanup",
"openresty::commons_user",
"openresty::commons_dir",
"openresty::commons_script",
"openresty::commons_conf",
"logrotate::default",
"openresty::luarocks",
"firewall::default",
"git::default",
"git::package",
"kosmos-base::letsencrypt",
"fail2ban::default"
],
"platform": "ubuntu",
"platform_version": "20.04",
"cloud": null,
"chef_packages": {
"chef": {
"version": "18.10.17",
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.10.17/lib",
"chef_effortless": null
},
"ohai": {
"version": "18.2.13",
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.2.13/lib/ohai"
}
}
},
"run_list": [
"role[base]",
"role[kvm_host]",
"role[email_proxy]",
"role[openresty_proxy]",
"recipe[kosmos_encfs]",
"recipe[kosmos-ejabberd::firewall]",
"recipe[kosmos-ipfs::firewall_swarm]",
"recipe[kosmos-bitcoin::firewall]",
"recipe[kosmos_zerotier::firewall]",
"recipe[sockethub::firewall]"
]
}
-66
View File
@@ -1,66 +0,0 @@
{
"name": "drone-1",
"normal": {
"knife_zero": {
"host": "10.1.1.128"
},
"vm_host": "fornax"
},
"automatic": {
"fqdn": "drone-1",
"os": "linux",
"os_version": "5.4.0-1133-kvm",
"hostname": "drone-1",
"ipaddress": "192.168.122.200",
"roles": [
"base",
"kvm_guest",
"drone",
"postgresql_client"
],
"recipes": [
"kosmos-base",
"kosmos-base::default",
"kosmos_prometheus::node_exporter",
"kosmos_kvm::guest",
"kosmos_postgresql::hostsfile",
"kosmos_drone",
"kosmos_drone::default",
"apt::default",
"timezone_iii::default",
"timezone_iii::debian",
"ntp::default",
"ntp::apparmor",
"kosmos-base::journald_conf",
"kosmos-base::systemd_emails",
"apt::unattended-upgrades",
"kosmos-base::firewall",
"kosmos-postfix::default",
"postfix::default",
"postfix::_common",
"postfix::_attributes",
"postfix::sasl_auth",
"hostname::default",
"firewall::default"
],
"platform": "ubuntu",
"platform_version": "20.04",
"cloud": null,
"chef_packages": {
"chef": {
"version": "18.7.10",
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.7.10/lib",
"chef_effortless": null
},
"ohai": {
"version": "18.2.5",
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.2.5/lib/ohai"
}
}
},
"run_list": [
"role[base]",
"role[kvm_guest]",
"role[drone]"
]
}
-77
View File
@@ -1,77 +0,0 @@
{
"name": "ejabberd-4",
"chef_environment": "production",
"normal": {
"knife_zero": {
"host": "10.1.1.113"
},
"vm_host": "draco"
},
"automatic": {
"fqdn": "ejabberd-4",
"os": "linux",
"os_version": "5.4.0-1073-kvm",
"hostname": "ejabberd-4",
"ipaddress": "192.168.122.39",
"roles": [
"base",
"kvm_guest",
"ldap_client",
"ejabberd",
"postgresql_client",
"garage_gateway"
],
"recipes": [
"kosmos-base",
"kosmos-base::default",
"kosmos_prometheus::node_exporter",
"kosmos_kvm::guest",
"kosmos-dirsrv::hostsfile",
"kosmos_postgresql::hostsfile",
"kosmos_garage",
"kosmos_garage::default",
"kosmos_garage::firewall_rpc",
"kosmos-ejabberd::letsencrypt",
"kosmos-ejabberd",
"kosmos-ejabberd::default",
"apt::default",
"timezone_iii::default",
"timezone_iii::debian",
"ntp::default",
"ntp::apparmor",
"kosmos-base::journald_conf",
"kosmos-base::systemd_emails",
"apt::unattended-upgrades",
"kosmos-base::firewall",
"kosmos-postfix::default",
"postfix::default",
"postfix::_common",
"postfix::_attributes",
"postfix::sasl_auth",
"hostname::default",
"firewall::default",
"kosmos-base::letsencrypt",
"kosmos-ejabberd::firewall"
],
"platform": "ubuntu",
"platform_version": "20.04",
"cloud": null,
"chef_packages": {
"chef": {
"version": "18.3.0",
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.3.0/lib",
"chef_effortless": null
},
"ohai": {
"version": "18.1.4",
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.1.4/lib/ohai"
}
}
},
"run_list": [
"role[base]",
"role[kvm_guest]",
"role[ldap_client]",
"role[ejabberd]"
]
}
-77
View File
@@ -1,77 +0,0 @@
{
"name": "ejabberd-8",
"chef_environment": "production",
"normal": {
"knife_zero": {
"host": "10.1.1.123"
},
"vm_host": "fornax"
},
"automatic": {
"fqdn": "ejabberd-8",
"os": "linux",
"os_version": "5.4.0-1063-kvm",
"hostname": "ejabberd-8",
"ipaddress": "192.168.122.27",
"roles": [
"base",
"kvm_guest",
"ldap_client",
"ejabberd",
"postgresql_client",
"garage_gateway"
],
"recipes": [
"kosmos-base",
"kosmos-base::default",
"kosmos_prometheus::node_exporter",
"kosmos_kvm::guest",
"kosmos-dirsrv::hostsfile",
"kosmos_postgresql::hostsfile",
"kosmos_garage",
"kosmos_garage::default",
"kosmos_garage::firewall_rpc",
"kosmos-ejabberd::letsencrypt",
"kosmos-ejabberd",
"kosmos-ejabberd::default",
"apt::default",
"timezone_iii::default",
"timezone_iii::debian",
"ntp::default",
"ntp::apparmor",
"kosmos-base::journald_conf",
"kosmos-base::systemd_emails",
"apt::unattended-upgrades",
"kosmos-base::firewall",
"kosmos-postfix::default",
"postfix::default",
"postfix::_common",
"postfix::_attributes",
"postfix::sasl_auth",
"hostname::default",
"firewall::default",
"kosmos-base::letsencrypt",
"kosmos-ejabberd::firewall"
],
"platform": "ubuntu",
"platform_version": "20.04",
"cloud": null,
"chef_packages": {
"chef": {
"version": "18.3.0",
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.3.0/lib",
"chef_effortless": null
},
"ohai": {
"version": "18.1.4",
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.1.4/lib/ohai"
}
}
},
"run_list": [
"role[base]",
"role[kvm_guest]",
"role[ldap_client]",
"role[ejabberd]"
]
}
-131
View File
@@ -1,131 +0,0 @@
{
"name": "fornax.kosmos.org",
"chef_environment": "production",
"normal": {
"knife_zero": {
"host": "10.1.1.147"
},
"kosmos_kvm": {
"backup": {
"schedule": "0/3:00"
}
}
},
"automatic": {
"fqdn": "fornax.kosmos.org",
"os": "linux",
"os_version": "5.4.0-88-generic",
"hostname": "fornax",
"ipaddress": "148.251.83.201",
"roles": [
"base",
"kvm_host",
"openresty_proxy",
"openresty",
"garage_gateway",
"tor_proxy",
"zerotier_controller",
"turn_server"
],
"recipes": [
"kosmos-base",
"kosmos-base::default",
"kosmos_prometheus::node_exporter",
"kosmos_kvm::host",
"kosmos_kvm::backup",
"kosmos_openresty",
"kosmos_openresty::default",
"kosmos_openresty::firewall",
"kosmos_garage",
"kosmos_garage::default",
"kosmos_garage::firewall_rpc",
"kosmos_assets::nginx_site",
"kosmos_blossom::nginx",
"kosmos_discourse::nginx",
"kosmos_drone::nginx",
"kosmos_garage::nginx_web",
"kosmos_garage::nginx_s3",
"kosmos_gitea::nginx",
"kosmos_gitea::nginx_ssh",
"kosmos_liquor-cabinet::nginx",
"kosmos_rsk::nginx_testnet",
"kosmos_rsk::nginx_mainnet",
"kosmos_strfry::nginx",
"kosmos_website",
"kosmos_website::default",
"kosmos_website::redirects",
"kosmos-akkounts::nginx",
"kosmos-akkounts::nginx_api",
"kosmos-bitcoin::nginx_lndhub",
"kosmos-hubot::nginx_botka_irc-libera-chat",
"kosmos-hubot::nginx_hal8000_xmpp",
"kosmos-ipfs::nginx_public_gateway",
"kosmos-mastodon::nginx",
"remotestorage_discourse::nginx",
"kosmos-base::tor_services",
"tor-full",
"tor-full::default",
"kosmos_zerotier::controller",
"kosmos_zerotier::firewall",
"kosmos_zerotier::zncui",
"kosmos-ejabberd::coturn",
"kosmos-ejabberd::firewall",
"kosmos-ipfs::firewall_swarm",
"sockethub::firewall",
"apt::default",
"timezone_iii::default",
"timezone_iii::debian",
"ntp::default",
"ntp::apparmor",
"kosmos-base::journald_conf",
"kosmos-base::systemd_emails",
"apt::unattended-upgrades",
"kosmos-base::firewall",
"kosmos-postfix::default",
"postfix::default",
"postfix::_common",
"postfix::_attributes",
"postfix::sasl_auth",
"hostname::default",
"openresty::apt_package",
"openresty::ohai_plugin",
"openresty::commons_cleanup",
"openresty::commons_user",
"openresty::commons_dir",
"openresty::commons_script",
"openresty::commons_conf",
"logrotate::default",
"openresty::luarocks",
"firewall::default",
"git::default",
"git::package",
"kosmos-base::letsencrypt",
"fail2ban::default"
],
"platform": "ubuntu",
"platform_version": "20.04",
"cloud": null,
"chef_packages": {
"chef": {
"version": "18.10.17",
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.10.17/lib",
"chef_effortless": null
},
"ohai": {
"version": "18.2.13",
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.2.13/lib/ohai"
}
}
},
"run_list": [
"role[base]",
"role[kvm_host]",
"role[openresty_proxy]",
"role[zerotier_controller]",
"role[turn_server]",
"recipe[kosmos-ejabberd::firewall]",
"recipe[kosmos-ipfs::firewall_swarm]",
"recipe[kosmos_zerotier::firewall]",
"recipe[sockethub::firewall]"
]
}
-67
View File
@@ -1,67 +0,0 @@
{
"name": "garage-11",
"chef_environment": "production",
"normal": {
"knife_zero": {
"host": "10.1.1.165"
},
"vm_host": "fornax"
},
"automatic": {
"fqdn": "garage-11",
"os": "linux",
"os_version": "5.15.0-1059-kvm",
"hostname": "garage-11",
"ipaddress": "192.168.122.9",
"roles": [
"base",
"kvm_guest",
"garage_node"
],
"recipes": [
"kosmos-base",
"kosmos-base::default",
"kosmos_prometheus::node_exporter",
"kosmos_kvm::guest",
"kosmos_garage",
"kosmos_garage::default",
"kosmos_garage::firewall_rpc",
"kosmos_garage::firewall_apis",
"apt::default",
"timezone_iii::default",
"timezone_iii::debian",
"ntp::default",
"ntp::apparmor",
"kosmos-base::journald_conf",
"kosmos-base::systemd_emails",
"apt::unattended-upgrades",
"kosmos-base::firewall",
"kosmos-postfix::default",
"postfix::default",
"postfix::_common",
"postfix::_attributes",
"postfix::sasl_auth",
"hostname::default",
"firewall::default"
],
"platform": "ubuntu",
"platform_version": "22.04",
"cloud": null,
"chef_packages": {
"chef": {
"version": "18.5.0",
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.5.0/lib",
"chef_effortless": null
},
"ohai": {
"version": "18.1.11",
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.1.11/lib/ohai"
}
}
},
"run_list": [
"role[base]",
"role[kvm_guest]",
"role[garage_node]"
]
}
-67
View File
@@ -1,67 +0,0 @@
{
"name": "garage-14",
"chef_environment": "production",
"normal": {
"knife_zero": {
"host": "10.1.1.151"
},
"vm_host": "leo"
},
"automatic": {
"fqdn": "garage-14",
"os": "linux",
"os_version": "5.15.0-1095-kvm",
"hostname": "garage-14",
"ipaddress": "192.168.122.36",
"roles": [
"base",
"kvm_guest",
"garage_node"
],
"recipes": [
"kosmos-base",
"kosmos-base::default",
"kosmos_prometheus::node_exporter",
"kosmos_kvm::guest",
"kosmos_garage",
"kosmos_garage::default",
"kosmos_garage::firewall_rpc",
"kosmos_garage::firewall_apis",
"apt::default",
"timezone_iii::default",
"timezone_iii::debian",
"ntp::default",
"ntp::apparmor",
"kosmos-base::journald_conf",
"kosmos-base::systemd_emails",
"apt::unattended-upgrades",
"kosmos-base::firewall",
"kosmos-postfix::default",
"postfix::default",
"postfix::_common",
"postfix::_attributes",
"postfix::sasl_auth",
"hostname::default",
"firewall::default"
],
"platform": "ubuntu",
"platform_version": "22.04",
"cloud": null,
"chef_packages": {
"chef": {
"version": "18.10.17",
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.10.17/lib",
"chef_effortless": null
},
"ohai": {
"version": "18.2.13",
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.2.13/lib/ohai"
}
}
},
"run_list": [
"role[base]",
"role[kvm_guest]",
"role[garage_node]"
]
}
-67
View File
@@ -1,67 +0,0 @@
{
"name": "garage-15",
"chef_environment": "production",
"normal": {
"knife_zero": {
"host": "10.1.1.82"
},
"vm_host": "leo"
},
"automatic": {
"fqdn": "garage-15",
"os": "linux",
"os_version": "5.15.0-1095-kvm",
"hostname": "garage-15",
"ipaddress": "192.168.122.57",
"roles": [
"base",
"kvm_guest",
"garage_node"
],
"recipes": [
"kosmos-base",
"kosmos-base::default",
"kosmos_prometheus::node_exporter",
"kosmos_kvm::guest",
"kosmos_garage",
"kosmos_garage::default",
"kosmos_garage::firewall_rpc",
"kosmos_garage::firewall_apis",
"apt::default",
"timezone_iii::default",
"timezone_iii::debian",
"ntp::default",
"ntp::apparmor",
"kosmos-base::journald_conf",
"kosmos-base::systemd_emails",
"apt::unattended-upgrades",
"kosmos-base::firewall",
"kosmos-postfix::default",
"postfix::default",
"postfix::_common",
"postfix::_attributes",
"postfix::sasl_auth",
"hostname::default",
"firewall::default"
],
"platform": "ubuntu",
"platform_version": "22.04",
"cloud": null,
"chef_packages": {
"chef": {
"version": "18.10.17",
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.10.17/lib",
"chef_effortless": null
},
"ohai": {
"version": "18.2.13",
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.2.13/lib/ohai"
}
}
},
"run_list": [
"role[base]",
"role[kvm_guest]",
"role[garage_node]"
]
}
-65
View File
@@ -1,65 +0,0 @@
{
"name": "garage-16",
"chef_environment": "production",
"normal": {
"knife_zero": {
"host": "10.1.1.153"
},
"vm_host": "leo"
},
"automatic": {
"fqdn": "garage-16",
"os": "linux",
"os_version": "6.8.0-106-generic",
"hostname": "garage-16",
"ipaddress": "192.168.122.182",
"roles": [
"base",
"kvm_guest",
"garage_node"
],
"recipes": [
"kosmos-base",
"kosmos-base::default",
"kosmos_prometheus::node_exporter",
"kosmos_kvm::guest",
"kosmos_garage",
"kosmos_garage::default",
"kosmos_garage::firewall_rpc",
"kosmos_garage::firewall_apis",
"apt::default",
"timezone_iii::default",
"timezone_iii::debian",
"kosmos-base::journald_conf",
"kosmos-base::systemd_emails",
"apt::unattended-upgrades",
"kosmos-base::firewall",
"kosmos-postfix::default",
"postfix::default",
"postfix::_common",
"postfix::_attributes",
"postfix::sasl_auth",
"hostname::default",
"firewall::default"
],
"platform": "ubuntu",
"platform_version": "24.04",
"cloud": null,
"chef_packages": {
"chef": {
"version": "18.10.17",
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.10.17/lib",
"chef_effortless": null
},
"ohai": {
"version": "18.2.13",
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.2.13/lib/ohai"
}
}
},
"run_list": [
"role[base]",
"role[kvm_guest]",
"role[garage_node]"
]
}
-67
View File
@@ -1,67 +0,0 @@
{
"name": "garage-2",
"chef_environment": "production",
"normal": {
"knife_zero": {
"host": "10.1.1.40"
},
"vm_host": "draco"
},
"automatic": {
"fqdn": "garage-2",
"os": "linux",
"os_version": "5.4.0-132-generic",
"hostname": "garage-2",
"ipaddress": "192.168.122.241",
"roles": [
"base",
"kvm_guest",
"garage_node"
],
"recipes": [
"kosmos-base",
"kosmos-base::default",
"kosmos_prometheus::node_exporter",
"kosmos_kvm::guest",
"kosmos_garage",
"kosmos_garage::default",
"kosmos_garage::firewall_rpc",
"kosmos_garage::firewall_apis",
"apt::default",
"timezone_iii::default",
"timezone_iii::debian",
"ntp::default",
"ntp::apparmor",
"kosmos-base::journald_conf",
"kosmos-base::systemd_emails",
"apt::unattended-upgrades",
"kosmos-base::firewall",
"kosmos-postfix::default",
"postfix::default",
"postfix::_common",
"postfix::_attributes",
"postfix::sasl_auth",
"hostname::default",
"firewall::default"
],
"platform": "ubuntu",
"platform_version": "20.04",
"cloud": null,
"chef_packages": {
"chef": {
"version": "18.10.17",
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.10.17/lib",
"chef_effortless": null
},
"ohai": {
"version": "18.2.13",
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.2.13/lib/ohai"
}
}
},
"run_list": [
"role[base]",
"role[kvm_guest]",
"role[garage_node]"
]
}
-67
View File
@@ -1,67 +0,0 @@
{
"name": "garage-7",
"chef_environment": "production",
"normal": {
"knife_zero": {
"host": "10.1.1.182"
},
"vm_host": "draco"
},
"automatic": {
"fqdn": "garage-7",
"os": "linux",
"os_version": "5.4.0-1090-kvm",
"hostname": "garage-7",
"ipaddress": "192.168.122.86",
"roles": [
"base",
"kvm_guest",
"garage_node"
],
"recipes": [
"kosmos-base",
"kosmos-base::default",
"kosmos_prometheus::node_exporter",
"kosmos_kvm::guest",
"kosmos_garage",
"kosmos_garage::default",
"kosmos_garage::firewall_rpc",
"kosmos_garage::firewall_apis",
"apt::default",
"timezone_iii::default",
"timezone_iii::debian",
"ntp::default",
"ntp::apparmor",
"kosmos-base::journald_conf",
"kosmos-base::systemd_emails",
"apt::unattended-upgrades",
"kosmos-base::firewall",
"kosmos-postfix::default",
"postfix::default",
"postfix::_common",
"postfix::_attributes",
"postfix::sasl_auth",
"hostname::default",
"firewall::default"
],
"platform": "ubuntu",
"platform_version": "20.04",
"cloud": null,
"chef_packages": {
"chef": {
"version": "18.3.0",
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.3.0/lib",
"chef_effortless": null
},
"ohai": {
"version": "18.1.4",
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.1.4/lib/ohai"
}
}
},
"run_list": [
"role[base]",
"role[kvm_guest]",
"role[garage_node]"
]
}
-67
View File
@@ -1,67 +0,0 @@
{
"name": "garage-8",
"chef_environment": "production",
"normal": {
"knife_zero": {
"host": "10.1.1.61"
},
"vm_host": "fornax"
},
"automatic": {
"fqdn": "garage-8",
"os": "linux",
"os_version": "5.4.0-1090-kvm",
"hostname": "garage-8",
"ipaddress": "192.168.122.207",
"roles": [
"base",
"kvm_guest",
"garage_node"
],
"recipes": [
"kosmos-base",
"kosmos-base::default",
"kosmos_prometheus::node_exporter",
"kosmos_kvm::guest",
"kosmos_garage",
"kosmos_garage::default",
"kosmos_garage::firewall_rpc",
"kosmos_garage::firewall_apis",
"apt::default",
"timezone_iii::default",
"timezone_iii::debian",
"ntp::default",
"ntp::apparmor",
"kosmos-base::journald_conf",
"kosmos-base::systemd_emails",
"apt::unattended-upgrades",
"kosmos-base::firewall",
"kosmos-postfix::default",
"postfix::default",
"postfix::_common",
"postfix::_attributes",
"postfix::sasl_auth",
"hostname::default",
"firewall::default"
],
"platform": "ubuntu",
"platform_version": "20.04",
"cloud": null,
"chef_packages": {
"chef": {
"version": "18.4.2",
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.4.2/lib",
"chef_effortless": null
},
"ohai": {
"version": "18.1.11",
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.1.11/lib/ohai"
}
}
},
"run_list": [
"role[base]",
"role[kvm_guest]",
"role[garage_node]"
]
}
-81
View File
@@ -1,81 +0,0 @@
{
"name": "gitea-2",
"chef_environment": "production",
"normal": {
"knife_zero": {
"host": "10.1.1.21"
},
"vm_host": "fornax"
},
"automatic": {
"fqdn": "gitea-2",
"os": "linux",
"os_version": "5.4.0-1123-kvm",
"hostname": "gitea-2",
"ipaddress": "192.168.122.189",
"roles": [
"base",
"kvm_guest",
"ldap_client",
"garage_gateway",
"gitea",
"postgresql_client",
"gitea_actions_runner"
],
"recipes": [
"kosmos-base",
"kosmos-base::default",
"kosmos_prometheus::node_exporter",
"kosmos_kvm::guest",
"kosmos-dirsrv::hostsfile",
"kosmos_garage",
"kosmos_garage::default",
"kosmos_garage::firewall_rpc",
"kosmos_postgresql::hostsfile",
"kosmos_gitea",
"kosmos_gitea::default",
"kosmos_gitea::backup",
"kosmos_gitea::runner",
"apt::default",
"timezone_iii::default",
"timezone_iii::debian",
"ntp::default",
"ntp::apparmor",
"kosmos-base::journald_conf",
"kosmos-base::systemd_emails",
"apt::unattended-upgrades",
"kosmos-base::firewall",
"kosmos-postfix::default",
"postfix::default",
"postfix::_common",
"postfix::_attributes",
"postfix::sasl_auth",
"hostname::default",
"firewall::default",
"backup::default",
"logrotate::default"
],
"platform": "ubuntu",
"platform_version": "20.04",
"cloud": null,
"chef_packages": {
"chef": {
"version": "18.10.17",
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.10.17/lib",
"chef_effortless": null
},
"ohai": {
"version": "18.2.13",
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.2.13/lib/ohai"
}
}
},
"run_list": [
"role[base]",
"role[kvm_guest]",
"role[ldap_client]",
"role[garage_gateway]",
"role[gitea]",
"role[gitea_actions_runner]"
]
}
-60
View File
@@ -1,60 +0,0 @@
{
"name": "her",
"chef_environment": "production",
"normal": {
"knife_zero": {
"host": "10.1.1.222"
}
},
"automatic": {
"fqdn": "her",
"os": "linux",
"os_version": "5.15.0-101-generic",
"hostname": "her",
"ipaddress": "192.168.30.173",
"roles": [
"base",
"kvm_host"
],
"recipes": [
"kosmos-base",
"kosmos-base::default",
"kosmos_prometheus::node_exporter",
"kosmos_kvm::host",
"kosmos_kvm::backup",
"apt::default",
"timezone_iii::default",
"timezone_iii::debian",
"ntp::default",
"ntp::apparmor",
"kosmos-base::journald_conf",
"kosmos-base::systemd_emails",
"apt::unattended-upgrades",
"kosmos-base::firewall",
"kosmos-postfix::default",
"postfix::default",
"postfix::_common",
"postfix::_attributes",
"postfix::sasl_auth",
"hostname::default"
],
"platform": "ubuntu",
"platform_version": "22.04",
"cloud": null,
"chef_packages": {
"chef": {
"version": "18.3.0",
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.3.0/lib",
"chef_effortless": null
},
"ohai": {
"version": "18.1.4",
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.1.4/lib/ohai"
}
}
},
"run_list": [
"role[base]",
"role[kvm_host]"
]
}
-71
View File
@@ -1,71 +0,0 @@
{
"name": "ipfs-1",
"normal": {
"knife_zero": {
"host": "10.1.1.198"
},
"vm_host": "draco"
},
"automatic": {
"fqdn": "ipfs-1",
"os": "linux",
"os_version": "5.4.0-152-generic",
"hostname": "ipfs-1",
"ipaddress": "192.168.122.195",
"roles": [
"base",
"kvm_guest",
"ipfs_gateway"
],
"recipes": [
"kosmos-base",
"kosmos-base::default",
"kosmos_prometheus::node_exporter",
"kosmos_kvm::guest",
"kosmos-ipfs",
"kosmos-ipfs::default",
"kosmos-ipfs::kredits_pinner",
"apt::default",
"timezone_iii::default",
"timezone_iii::debian",
"ntp::default",
"ntp::apparmor",
"kosmos-base::journald_conf",
"kosmos-base::systemd_emails",
"apt::unattended-upgrades",
"kosmos-base::firewall",
"kosmos-postfix::default",
"postfix::default",
"postfix::_common",
"postfix::_attributes",
"postfix::sasl_auth",
"hostname::default",
"ipfs::default",
"ipfs::_user",
"firewall::default",
"kosmos-nodejs::default",
"nodejs::nodejs_from_package",
"nodejs::repo",
"kosmos-ipfs::firewall_swarm"
],
"platform": "ubuntu",
"platform_version": "20.04",
"cloud": null,
"chef_packages": {
"chef": {
"version": "18.2.7",
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.2.7/lib",
"chef_effortless": null
},
"ohai": {
"version": "18.1.4",
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.1.4/lib/ohai"
}
}
},
"run_list": [
"role[base]",
"role[kvm_guest]",
"role[ipfs_gateway]"
]
}
-68
View File
@@ -1,68 +0,0 @@
{
"name": "ldap-3.kosmos.org",
"normal": {
"knife_zero": {
"host": "10.1.1.6"
},
"vm_host": "draco"
},
"automatic": {
"fqdn": "ldap-3.kosmos.org",
"os": "linux",
"os_version": "5.4.0-1073-kvm",
"hostname": "ldap-3",
"ipaddress": "192.168.122.34",
"roles": [
"base",
"kvm_guest",
"dirsrv_supplier"
],
"recipes": [
"kosmos-base",
"kosmos-base::default",
"kosmos_prometheus::node_exporter",
"kosmos_kvm::guest",
"kosmos-dirsrv",
"kosmos-dirsrv::default",
"apt::default",
"timezone_iii::default",
"timezone_iii::debian",
"ntp::default",
"ntp::apparmor",
"kosmos-base::journald_conf",
"kosmos-base::systemd_emails",
"apt::unattended-upgrades",
"kosmos-base::firewall",
"kosmos-postfix::default",
"postfix::default",
"postfix::_common",
"postfix::_attributes",
"postfix::sasl_auth",
"hostname::default",
"firewall::default",
"kosmos-dirsrv::firewall",
"backup::default",
"logrotate::default",
"ulimit::default"
],
"platform": "ubuntu",
"platform_version": "20.04",
"cloud": null,
"chef_packages": {
"chef": {
"version": "18.10.17",
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.10.17/lib",
"chef_effortless": null
},
"ohai": {
"version": "18.2.13",
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.2.13/lib/ohai"
}
}
},
"run_list": [
"role[base]",
"role[kvm_guest]",
"role[dirsrv_supplier]"
]
}
-69
View File
@@ -1,69 +0,0 @@
{
"name": "ldap-4.kosmos.org",
"chef_environment": "production",
"normal": {
"knife_zero": {
"host": "10.1.1.106"
},
"vm_host": "fornax"
},
"automatic": {
"fqdn": "ldap-4.kosmos.org",
"os": "linux",
"os_version": "5.4.0-1079-kvm",
"hostname": "ldap-4",
"ipaddress": "192.168.122.73",
"roles": [
"base",
"kvm_guest",
"dirsrv_supplier"
],
"recipes": [
"kosmos-base",
"kosmos-base::default",
"kosmos_prometheus::node_exporter",
"kosmos_kvm::guest",
"kosmos-dirsrv",
"kosmos-dirsrv::default",
"apt::default",
"timezone_iii::default",
"timezone_iii::debian",
"ntp::default",
"ntp::apparmor",
"kosmos-base::journald_conf",
"kosmos-base::systemd_emails",
"apt::unattended-upgrades",
"kosmos-base::firewall",
"kosmos-postfix::default",
"postfix::default",
"postfix::_common",
"postfix::_attributes",
"postfix::sasl_auth",
"hostname::default",
"firewall::default",
"kosmos-dirsrv::firewall",
"backup::default",
"logrotate::default",
"ulimit::default"
],
"platform": "ubuntu",
"platform_version": "20.04",
"cloud": null,
"chef_packages": {
"chef": {
"version": "18.10.17",
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.10.17/lib",
"chef_effortless": null
},
"ohai": {
"version": "18.2.13",
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.2.13/lib/ohai"
}
}
},
"run_list": [
"role[base]",
"role[kvm_guest]",
"role[dirsrv_supplier]"
]
}
-59
View File
@@ -1,59 +0,0 @@
{
"name": "leo.kosmos.org",
"chef_environment": "production",
"normal": {
"knife_zero": {
"host": "10.1.1.204"
}
},
"automatic": {
"fqdn": "leo.kosmos.org",
"os": "linux",
"os_version": "5.15.0-173-generic",
"hostname": "leo",
"ipaddress": "5.9.81.116",
"roles": [
"base"
],
"recipes": [
"kosmos-base",
"kosmos-base::default",
"kosmos_prometheus::node_exporter",
"kosmos_kvm::host",
"apt::default",
"timezone_iii::default",
"timezone_iii::debian",
"ntp::default",
"ntp::apparmor",
"kosmos-base::journald_conf",
"kosmos-base::systemd_emails",
"apt::unattended-upgrades",
"kosmos-base::firewall",
"kosmos-postfix::default",
"postfix::default",
"postfix::_common",
"postfix::_attributes",
"postfix::sasl_auth",
"hostname::default",
"firewall::default"
],
"platform": "ubuntu",
"platform_version": "22.04",
"cloud": null,
"chef_packages": {
"chef": {
"version": "18.10.17",
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.10.17/lib",
"chef_effortless": null
},
"ohai": {
"version": "18.2.13",
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.2.13/lib/ohai"
}
}
},
"run_list": [
"role[base]",
"recipe[kosmos_kvm::host]"
]
}
-71
View File
@@ -1,71 +0,0 @@
{
"name": "lq-1",
"chef_environment": "production",
"normal": {
"knife_zero": {
"host": "10.1.1.87"
},
"vm_host": "draco"
},
"automatic": {
"fqdn": "lq-1",
"os": "linux",
"os_version": "5.4.0-1104-kvm",
"hostname": "lq-1",
"ipaddress": "192.168.122.158",
"roles": [
"base",
"kvm_guest",
"garage_gateway",
"liquor_cabinet"
],
"recipes": [
"kosmos-base",
"kosmos-base::default",
"kosmos_prometheus::node_exporter",
"kosmos_kvm::guest",
"kosmos_garage",
"kosmos_garage::default",
"kosmos_garage::firewall_rpc",
"kosmos_liquor-cabinet",
"kosmos_liquor-cabinet::default",
"apt::default",
"timezone_iii::default",
"timezone_iii::debian",
"ntp::default",
"ntp::apparmor",
"kosmos-base::journald_conf",
"kosmos-base::systemd_emails",
"apt::unattended-upgrades",
"kosmos-base::firewall",
"kosmos-postfix::default",
"postfix::default",
"postfix::_common",
"postfix::_attributes",
"postfix::sasl_auth",
"hostname::default",
"firewall::default",
"liquor_cabinet::default"
],
"platform": "ubuntu",
"platform_version": "20.04",
"cloud": null,
"chef_packages": {
"chef": {
"version": "18.10.17",
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.10.17/lib",
"chef_effortless": null
},
"ohai": {
"version": "18.2.13",
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.2.13/lib/ohai"
}
}
},
"run_list": [
"role[base]",
"role[kvm_guest]",
"role[garage_gateway]",
"role[liquor_cabinet]"
]
}
-71
View File
@@ -1,71 +0,0 @@
{
"name": "lq-2",
"chef_environment": "production",
"normal": {
"knife_zero": {
"host": "10.1.1.188"
},
"vm_host": "fornax"
},
"automatic": {
"fqdn": "lq-2",
"os": "linux",
"os_version": "5.4.0-1104-kvm",
"hostname": "lq-2",
"ipaddress": "192.168.122.47",
"roles": [
"base",
"kvm_guest",
"garage_gateway",
"liquor_cabinet"
],
"recipes": [
"kosmos-base",
"kosmos-base::default",
"kosmos_prometheus::node_exporter",
"kosmos_kvm::guest",
"kosmos_garage",
"kosmos_garage::default",
"kosmos_garage::firewall_rpc",
"kosmos_liquor-cabinet",
"kosmos_liquor-cabinet::default",
"apt::default",
"timezone_iii::default",
"timezone_iii::debian",
"ntp::default",
"ntp::apparmor",
"kosmos-base::journald_conf",
"kosmos-base::systemd_emails",
"apt::unattended-upgrades",
"kosmos-base::firewall",
"kosmos-postfix::default",
"postfix::default",
"postfix::_common",
"postfix::_attributes",
"postfix::sasl_auth",
"hostname::default",
"firewall::default",
"liquor_cabinet::default"
],
"platform": "ubuntu",
"platform_version": "20.04",
"cloud": null,
"chef_packages": {
"chef": {
"version": "18.10.17",
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.10.17/lib",
"chef_effortless": null
},
"ohai": {
"version": "18.2.13",
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.2.13/lib/ohai"
}
}
},
"run_list": [
"role[base]",
"role[kvm_guest]",
"role[garage_gateway]",
"role[liquor_cabinet]"
]
}
-73
View File
@@ -1,73 +0,0 @@
{
"name": "mail.kosmos.org",
"chef_environment": "production",
"normal": {
"knife_zero": {
"host": "10.1.1.95"
},
"vm_host": "draco"
},
"automatic": {
"fqdn": "mail.kosmos.org",
"os": "linux",
"os_version": "5.15.0-1048-kvm",
"hostname": "mail",
"ipaddress": "192.168.122.131",
"roles": [
"base",
"kvm_guest",
"email_server",
"ldap_client"
],
"recipes": [
"kosmos-base",
"kosmos-base::default",
"kosmos_prometheus::node_exporter",
"kosmos_kvm::guest",
"kosmos-dirsrv::hostsfile",
"kosmos_email",
"kosmos_email::default",
"apt::default",
"timezone_iii::default",
"timezone_iii::debian",
"ntp::default",
"ntp::apparmor",
"kosmos-base::journald_conf",
"kosmos-base::systemd_emails",
"apt::unattended-upgrades",
"kosmos-base::firewall",
"kosmos-postfix::default",
"hostname::default",
"kosmos-base::letsencrypt",
"unbound::default",
"kosmos_email::opendkim",
"kosmos_email::spamassassin",
"kosmos_email::postfix",
"postfix::server",
"postfix::default",
"postfix::_common",
"postfix::_attributes",
"postfix::relay_restrictions",
"kosmos_email::dovecot"
],
"platform": "ubuntu",
"platform_version": "22.04",
"cloud": null,
"chef_packages": {
"chef": {
"version": "18.3.0",
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.3.0/lib",
"chef_effortless": null
},
"ohai": {
"version": "18.1.4",
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.1.4/lib/ohai"
}
}
},
"run_list": [
"role[base]",
"role[kvm_guest]",
"role[email_server]"
]
}
-93
View File
@@ -1,93 +0,0 @@
{
"name": "mastodon-3",
"chef_environment": "production",
"normal": {
"knife_zero": {
"host": "10.1.1.30"
},
"vm_host": "fornax"
},
"automatic": {
"fqdn": "mastodon-3",
"os": "linux",
"os_version": "5.4.0-1071-kvm",
"hostname": "mastodon-3",
"ipaddress": "192.168.122.161",
"roles": [
"kvm_guest",
"ldap_client",
"garage_gateway",
"mastodon",
"postgresql_client"
],
"recipes": [
"kosmos-base",
"kosmos-base::default",
"kosmos_kvm::guest",
"kosmos-dirsrv::hostsfile",
"kosmos_garage",
"kosmos_garage::default",
"kosmos_garage::firewall_rpc",
"kosmos_postgresql::hostsfile",
"kosmos-mastodon::libretranslate",
"kosmos-mastodon",
"kosmos-mastodon::default",
"kosmos-mastodon::backup",
"apt::default",
"timezone_iii::default",
"timezone_iii::debian",
"ntp::default",
"ntp::apparmor",
"kosmos-base::journald_conf",
"kosmos-base::systemd_emails",
"apt::unattended-upgrades",
"kosmos-base::firewall",
"kosmos-postfix::default",
"postfix::default",
"postfix::_common",
"postfix::_attributes",
"postfix::sasl_auth",
"hostname::default",
"firewall::default",
"kosmos-nodejs::default",
"nodejs::nodejs_from_package",
"nodejs::repo",
"java::default",
"java::set_attributes_from_version",
"java::openjdk",
"java::notify",
"java::default_java_symlink",
"java::set_java_home",
"redisio::default",
"redisio::_install_prereqs",
"redisio::install",
"redisio::ulimit",
"redisio::disable_os_default",
"redisio::configure",
"redisio::enable",
"backup::default",
"logrotate::default"
],
"platform": "ubuntu",
"platform_version": "20.04",
"cloud": null,
"chef_packages": {
"chef": {
"version": "18.2.7",
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.2.7/lib",
"chef_effortless": null
},
"ohai": {
"version": "18.1.4",
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.1.4/lib/ohai"
}
}
},
"run_list": [
"role[base]",
"role[kvm_guest]",
"role[ldap_client]",
"role[garage_gateway]",
"role[mastodon]"
]
}
-99
View File
@@ -1,99 +0,0 @@
{
"name": "nodejs-4",
"normal": {
"knife_zero": {
"host": "10.1.1.138"
},
"vm_host": "fornax"
},
"automatic": {
"fqdn": "nodejs-4",
"os": "linux",
"os_version": "5.4.0-1089-kvm",
"hostname": "nodejs-4",
"ipaddress": "192.168.122.106",
"roles": [
"base",
"kvm_guest",
"hubot",
"kredits_github",
"sockethub"
],
"recipes": [
"kosmos-base",
"kosmos-base::default",
"kosmos_prometheus::node_exporter",
"kosmos_kvm::guest",
"kosmos-hubot::botka_irc-libera-chat",
"kosmos-hubot::hal8000_xmpp",
"kredits-github",
"kredits-github::default",
"kredits-github::nginx",
"sockethub",
"sockethub::default",
"sockethub::proxy",
"apt::default",
"timezone_iii::default",
"timezone_iii::debian",
"ntp::default",
"ntp::apparmor",
"kosmos-base::journald_conf",
"kosmos-base::systemd_emails",
"apt::unattended-upgrades",
"kosmos-base::firewall",
"kosmos-postfix::default",
"postfix::default",
"postfix::_common",
"postfix::_attributes",
"postfix::sasl_auth",
"hostname::default",
"redisio::default",
"redisio::_install_prereqs",
"redisio::install",
"redisio::ulimit",
"redisio::disable_os_default",
"redisio::configure",
"redisio::enable",
"kosmos-hubot::_user",
"kosmos-hubot::_nodejs",
"kosmos-nodejs::default",
"nodejs::nodejs_from_package",
"nodejs::repo",
"kosmos-nginx::default",
"nginx::default",
"nginx::package",
"nginx::ohai_plugin",
"nginx::repo",
"nginx::commons",
"nginx::commons_dir",
"nginx::commons_script",
"nginx::commons_conf",
"kosmos-nginx::firewall",
"nodejs::npm",
"nodejs::install",
"sockethub::firewall",
"kosmos-base::letsencrypt"
],
"platform": "ubuntu",
"platform_version": "20.04",
"cloud": null,
"chef_packages": {
"chef": {
"version": "18.2.7",
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.2.7/lib",
"chef_effortless": null
},
"ohai": {
"version": "18.1.4",
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.1.4/lib/ohai"
}
}
},
"run_list": [
"role[base]",
"role[kvm_guest]",
"role[hubot]",
"role[kredits_github]",
"role[sockethub]"
]
}
-71
View File
@@ -1,71 +0,0 @@
{
"name": "postgres-11",
"chef_environment": "production",
"normal": {
"knife_zero": {
"host": "10.1.1.91"
},
"vm_host": "leo"
},
"automatic": {
"fqdn": "postgres-11",
"os": "linux",
"os_version": "5.15.0-1095-kvm",
"hostname": "postgres-11",
"ipaddress": "192.168.122.142",
"roles": [
"base",
"kvm_guest",
"postgresql_primary"
],
"recipes": [
"kosmos-base",
"kosmos-base::default",
"kosmos_prometheus::node_exporter",
"kosmos_kvm::guest",
"kosmos_postgresql::primary",
"kosmos-akkounts::pg_db",
"kosmos-bitcoin::lndhub-go_pg_db",
"kosmos-bitcoin::nbxplorer_pg_db",
"kosmos_drone::pg_db",
"kosmos_gitea::pg_db",
"kosmos-mastodon::pg_db",
"kosmos_postgresql::firewall",
"kosmos_postgresql::management_scripts",
"apt::default",
"timezone_iii::default",
"timezone_iii::debian",
"ntp::default",
"ntp::apparmor",
"kosmos-base::journald_conf",
"kosmos-base::systemd_emails",
"apt::unattended-upgrades",
"kosmos-base::firewall",
"kosmos-postfix::default",
"postfix::default",
"postfix::_common",
"postfix::_attributes",
"postfix::sasl_auth",
"hostname::default"
],
"platform": "ubuntu",
"platform_version": "22.04",
"cloud": null,
"chef_packages": {
"chef": {
"version": "18.10.17",
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.10.17/lib",
"chef_effortless": null
},
"ohai": {
"version": "18.2.13",
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.2.13/lib/ohai"
}
}
},
"run_list": [
"role[base]",
"role[kvm_guest]",
"role[postgresql_primary]"
]
}
-66
View File
@@ -1,66 +0,0 @@
{
"name": "postgres-12",
"chef_environment": "production",
"normal": {
"knife_zero": {
"host": "10.1.1.134"
},
"vm_host": "her"
},
"automatic": {
"fqdn": "postgres-12",
"os": "linux",
"os_version": "5.15.0-1096-kvm",
"hostname": "postgres-12",
"ipaddress": "192.168.122.139",
"roles": [
"base",
"kvm_guest",
"postgresql_replica"
],
"recipes": [
"kosmos-base",
"kosmos-base::default",
"kosmos_prometheus::node_exporter",
"kosmos_kvm::guest",
"kosmos_postgresql::hostsfile",
"kosmos_postgresql::replica",
"kosmos_postgresql::firewall",
"kosmos_postgresql::management_scripts",
"apt::default",
"timezone_iii::default",
"timezone_iii::debian",
"ntp::default",
"ntp::apparmor",
"kosmos-base::journald_conf",
"kosmos-base::systemd_emails",
"apt::unattended-upgrades",
"kosmos-base::firewall",
"kosmos-postfix::default",
"postfix::default",
"postfix::_common",
"postfix::_attributes",
"postfix::sasl_auth",
"hostname::default"
],
"platform": "ubuntu",
"platform_version": "22.04",
"cloud": null,
"chef_packages": {
"chef": {
"version": "18.10.17",
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.10.17/lib",
"chef_effortless": null
},
"ohai": {
"version": "18.2.13",
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.2.13/lib/ohai"
}
}
},
"run_list": [
"role[base]",
"role[kvm_guest]",
"role[postgresql_replica]"
]
}
-63
View File
@@ -1,63 +0,0 @@
{
"name": "prometheus-1",
"chef_environment": "production",
"normal": {
"knife_zero": {
"host": "10.1.1.146"
},
"vm_host": "leo"
},
"automatic": {
"fqdn": "prometheus-1",
"os": "linux",
"os_version": "6.8.0-134-generic",
"hostname": "prometheus-1",
"ipaddress": "192.168.122.166",
"roles": [
"base",
"kvm_guest",
"prometheus_server"
],
"recipes": [
"kosmos-base",
"kosmos-base::default",
"kosmos_prometheus::node_exporter",
"kosmos_kvm::guest",
"kosmos_prometheus::server",
"kosmos_prometheus::alertmanager",
"apt::default",
"timezone_iii::default",
"timezone_iii::debian",
"kosmos-base::journald_conf",
"kosmos-base::systemd_emails",
"apt::unattended-upgrades",
"kosmos-base::firewall",
"kosmos-postfix::default",
"postfix::default",
"postfix::_common",
"postfix::_attributes",
"postfix::sasl_auth",
"hostname::default",
"firewall::default"
],
"platform": "ubuntu",
"platform_version": "24.04",
"cloud": null,
"chef_packages": {
"chef": {
"version": "18.10.17",
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.10.17/lib",
"chef_effortless": null
},
"ohai": {
"version": "18.2.13",
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.2.13/lib/ohai"
}
}
},
"run_list": [
"role[base]",
"role[kvm_guest]",
"role[prometheus_server]"
]
}
-76
View File
@@ -1,76 +0,0 @@
{
"name": "redis-1",
"chef_environment": "production",
"normal": {
"knife_zero": {
"host": "10.1.1.225"
},
"vm_host": "draco"
},
"automatic": {
"fqdn": "redis-1",
"os": "linux",
"os_version": "5.4.0-1104-kvm",
"hostname": "redis-1",
"ipaddress": "192.168.122.83",
"roles": [
"base",
"kvm_guest",
"redis_server"
],
"recipes": [
"kosmos-base",
"kosmos-base::default",
"kosmos_prometheus::node_exporter",
"kosmos_kvm::guest",
"kosmos_redis",
"kosmos_redis::default",
"kosmos_redis::firewall",
"kosmos_redis::backup",
"apt::default",
"timezone_iii::default",
"timezone_iii::debian",
"ntp::default",
"ntp::apparmor",
"kosmos-base::journald_conf",
"kosmos-base::systemd_emails",
"apt::unattended-upgrades",
"kosmos-base::firewall",
"kosmos-postfix::default",
"postfix::default",
"postfix::_common",
"postfix::_attributes",
"postfix::sasl_auth",
"hostname::default",
"firewall::default",
"redisio::default",
"redisio::_install_prereqs",
"redisio::install",
"redisio::ulimit",
"redisio::disable_os_default",
"redisio::configure",
"redisio::enable",
"backup::default",
"logrotate::default"
],
"platform": "ubuntu",
"platform_version": "20.04",
"cloud": null,
"chef_packages": {
"chef": {
"version": "18.2.7",
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.2.7/lib",
"chef_effortless": null
},
"ohai": {
"version": "18.1.4",
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.1.4/lib/ohai"
}
}
},
"run_list": [
"role[base]",
"role[kvm_guest]",
"role[redis_server]"
]
}
-72
View File
@@ -1,72 +0,0 @@
{
"name": "redis-2",
"chef_environment": "production",
"normal": {
"knife_zero": {
"host": "10.1.1.208"
},
"vm_host": "fornax"
},
"automatic": {
"fqdn": "redis-2",
"os": "linux",
"os_version": "5.4.0-1104-kvm",
"hostname": "redis-2",
"ipaddress": "192.168.122.98",
"roles": [
"base",
"kvm_guest",
"redis_replica"
],
"recipes": [
"kosmos-base",
"kosmos-base::default",
"kosmos_prometheus::node_exporter",
"kosmos_kvm::guest",
"kosmos_redis::replica",
"kosmos_redis::firewall",
"apt::default",
"timezone_iii::default",
"timezone_iii::debian",
"ntp::default",
"ntp::apparmor",
"kosmos-base::journald_conf",
"kosmos-base::systemd_emails",
"apt::unattended-upgrades",
"kosmos-base::firewall",
"kosmos-postfix::default",
"postfix::default",
"postfix::_common",
"postfix::_attributes",
"postfix::sasl_auth",
"hostname::default",
"firewall::default",
"redisio::default",
"redisio::_install_prereqs",
"redisio::install",
"redisio::ulimit",
"redisio::disable_os_default",
"redisio::configure",
"redisio::enable"
],
"platform": "ubuntu",
"platform_version": "20.04",
"cloud": null,
"chef_packages": {
"chef": {
"version": "18.2.7",
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.2.7/lib",
"chef_effortless": null
},
"ohai": {
"version": "18.1.4",
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.1.4/lib/ohai"
}
}
},
"run_list": [
"role[base]",
"role[kvm_guest]",
"role[redis_replica]"
]
}
-65
View File
@@ -1,65 +0,0 @@
{
"name": "rs-discourse-1",
"normal": {
"knife_zero": {
"host": "10.1.1.187"
},
"vm_host": "fornax"
},
"automatic": {
"fqdn": "rs-discourse-1",
"os": "linux",
"os_version": "5.4.0-1118-kvm",
"hostname": "rs-discourse-1",
"ipaddress": "192.168.122.30",
"roles": [
"base",
"kvm_guest",
"remotestorage_discourse"
],
"recipes": [
"kosmos-base",
"kosmos-base::default",
"kosmos_prometheus::node_exporter",
"kosmos_kvm::guest",
"remotestorage_discourse",
"remotestorage_discourse::default",
"apt::default",
"timezone_iii::default",
"timezone_iii::debian",
"ntp::default",
"ntp::apparmor",
"kosmos-base::journald_conf",
"kosmos-base::systemd_emails",
"apt::unattended-upgrades",
"kosmos-base::firewall",
"kosmos-postfix::default",
"postfix::default",
"postfix::_common",
"postfix::_attributes",
"postfix::sasl_auth",
"hostname::default",
"firewall::default",
"discourse::default"
],
"platform": "ubuntu",
"platform_version": "20.04",
"cloud": null,
"chef_packages": {
"chef": {
"version": "18.10.17",
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.10.17/lib",
"chef_effortless": null
},
"ohai": {
"version": "18.2.13",
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.2.13/lib/ohai"
}
}
},
"run_list": [
"role[base]",
"role[kvm_guest]",
"role[remotestorage_discourse]"
]
}
-62
View File
@@ -1,62 +0,0 @@
{
"name": "rsk-mainnet-3",
"normal": {
"knife_zero": {
"host": "10.1.1.150"
},
"vm_host": "her"
},
"automatic": {
"fqdn": "rsk-mainnet-3",
"os": "linux",
"os_version": "5.15.0-1046-kvm",
"hostname": "rsk-mainnet-3",
"ipaddress": "192.168.122.233",
"roles": [
"base",
"kvm_guest",
"rskj_mainnet"
],
"recipes": [
"kosmos-base",
"kosmos-base::default",
"kosmos_kvm::guest",
"kosmos_rsk::rskj",
"apt::default",
"timezone_iii::default",
"timezone_iii::debian",
"ntp::default",
"ntp::apparmor",
"kosmos-base::systemd_emails",
"apt::unattended-upgrades",
"kosmos-base::firewall",
"kosmos-postfix::default",
"postfix::default",
"postfix::_common",
"postfix::_attributes",
"postfix::sasl_auth",
"hostname::default",
"kosmos_rsk::firewall",
"firewall::default"
],
"platform": "ubuntu",
"platform_version": "22.04",
"cloud": null,
"chef_packages": {
"chef": {
"version": "18.3.0",
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.3.0/lib",
"chef_effortless": null
},
"ohai": {
"version": "18.1.4",
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.1.4/lib/ohai"
}
}
},
"run_list": [
"role[base]",
"role[kvm_guest]",
"role[rskj_mainnet]"
]
}
-61
View File
@@ -1,61 +0,0 @@
{
"name": "rsk-testnet-4",
"normal": {
"knife_zero": {
"host": "10.1.1.126"
},
"vm_host": "her"
},
"automatic": {
"fqdn": "rsk-testnet-4",
"os": "linux",
"os_version": "5.15.0-1045-kvm",
"hostname": "rsk-testnet-4",
"ipaddress": "192.168.122.235",
"roles": [
"base",
"kvm_guest",
"rskj_testnet"
],
"recipes": [
"kosmos-base",
"kosmos-base::default",
"kosmos_kvm::guest",
"kosmos_rsk::rskj",
"apt::default",
"timezone_iii::default",
"timezone_iii::debian",
"ntp::default",
"ntp::apparmor",
"kosmos-base::systemd_emails",
"apt::unattended-upgrades",
"kosmos-base::firewall",
"kosmos-postfix::default",
"postfix::default",
"postfix::_common",
"postfix::_attributes",
"postfix::sasl_auth",
"hostname::default",
"kosmos_rsk::firewall",
"firewall::default"
],
"platform": "ubuntu",
"platform_version": "22.04",
"cloud": null,
"chef_packages": {
"chef": {
"version": "18.3.0",
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.3.0/lib",
"chef_effortless": null
},
"ohai": {
"version": "18.1.4",
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.1.4/lib/ohai"
}
}
},
"run_list": [
"role[base]",
"role[kvm_guest]"
]
}
-62
View File
@@ -1,62 +0,0 @@
{
"name": "rsk-testnet-6",
"normal": {
"knife_zero": {
"host": "10.1.1.20"
},
"vm_host": "leo"
},
"automatic": {
"fqdn": "rsk-testnet-6",
"os": "linux",
"os_version": "6.8.0-107-generic",
"hostname": "rsk-testnet-6",
"ipaddress": "192.168.122.231",
"roles": [
"base",
"kvm_guest",
"rskj_testnet"
],
"recipes": [
"kosmos-base",
"kosmos-base::default",
"kosmos_prometheus::node_exporter",
"kosmos_kvm::guest",
"kosmos_rsk::rskj",
"apt::default",
"timezone_iii::default",
"timezone_iii::debian",
"kosmos-base::journald_conf",
"kosmos-base::systemd_emails",
"apt::unattended-upgrades",
"kosmos-base::firewall",
"kosmos-postfix::default",
"postfix::default",
"postfix::_common",
"postfix::_attributes",
"postfix::sasl_auth",
"hostname::default",
"firewall::default",
"kosmos_rsk::firewall"
],
"platform": "ubuntu",
"platform_version": "24.04",
"cloud": null,
"chef_packages": {
"chef": {
"version": "18.10.17",
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.10.17/lib",
"chef_effortless": null
},
"ohai": {
"version": "18.2.13",
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.2.13/lib/ohai"
}
}
},
"run_list": [
"role[base]",
"role[kvm_guest]",
"role[rskj_testnet]"
]
}
-64
View File
@@ -1,64 +0,0 @@
{
"name": "sentry-1",
"chef_environment": "production",
"normal": {
"knife_zero": {
"host": "10.1.1.132"
},
"vm_host": "her"
},
"automatic": {
"fqdn": "sentry-1",
"os": "linux",
"os_version": "5.4.0-1087-kvm",
"hostname": "sentry-1",
"ipaddress": "192.168.122.251",
"roles": [
"base",
"kvm_guest",
"sentry"
],
"recipes": [
"kosmos-base",
"kosmos-base::default",
"kosmos_kvm::guest",
"kosmos_sentry",
"kosmos_sentry::default",
"apt::default",
"timezone_iii::default",
"timezone_iii::debian",
"ntp::default",
"ntp::apparmor",
"kosmos-base::systemd_emails",
"apt::unattended-upgrades",
"kosmos-base::firewall",
"kosmos-postfix::default",
"postfix::default",
"postfix::_common",
"postfix::_attributes",
"postfix::sasl_auth",
"hostname::default",
"firewall::default",
"chef-sugar::default"
],
"platform": "ubuntu",
"platform_version": "20.04",
"cloud": null,
"chef_packages": {
"chef": {
"version": "17.10.3",
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.0.0/gems/chef-17.10.3/lib",
"chef_effortless": null
},
"ohai": {
"version": "17.9.0",
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.0.0/gems/ohai-17.9.0/lib/ohai"
}
}
},
"run_list": [
"role[base]",
"role[kvm_guest]",
"role[sentry]"
]
}
-75
View File
@@ -1,75 +0,0 @@
{
"name": "strfry-1",
"chef_environment": "production",
"normal": {
"knife_zero": {
"host": "10.1.1.164"
},
"vm_host": "draco"
},
"automatic": {
"fqdn": "strfry-1",
"os": "linux",
"os_version": "5.15.0-1060-kvm",
"hostname": "strfry-1",
"ipaddress": "192.168.122.54",
"roles": [
"base",
"kvm_guest",
"strfry",
"ldap_client",
"blossom"
],
"recipes": [
"kosmos-base",
"kosmos-base::default",
"kosmos_prometheus::node_exporter",
"kosmos_kvm::guest",
"kosmos-dirsrv::hostsfile",
"strfry",
"strfry::default",
"kosmos_strfry::policies",
"kosmos_strfry::firewall",
"kosmos_strfry::substr",
"kosmos_blossom",
"kosmos_blossom::default",
"apt::default",
"timezone_iii::default",
"timezone_iii::debian",
"ntp::default",
"ntp::apparmor",
"kosmos-base::journald_conf",
"kosmos-base::systemd_emails",
"apt::unattended-upgrades",
"kosmos-base::firewall",
"kosmos-postfix::default",
"postfix::default",
"postfix::_common",
"postfix::_attributes",
"postfix::sasl_auth",
"hostname::default",
"deno::default",
"blossom::default"
],
"platform": "ubuntu",
"platform_version": "22.04",
"cloud": null,
"chef_packages": {
"chef": {
"version": "18.4.12",
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.4.12/lib",
"chef_effortless": null
},
"ohai": {
"version": "18.1.11",
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.1.11/lib/ohai"
}
}
},
"run_list": [
"role[base]",
"role[kvm_guest]",
"role[strfry]",
"role[blossom]"
]
}
-88
View File
@@ -1,88 +0,0 @@
{
"name": "wiki-1",
"normal": {
"knife_zero": {
"host": "10.1.1.206"
},
"vm_host": "draco"
},
"automatic": {
"fqdn": "wiki-1",
"os": "linux",
"os_version": "5.4.0-167-generic",
"hostname": "wiki-1",
"ipaddress": "192.168.122.26",
"roles": [
"base",
"kvm_guest",
"ldap_client"
],
"recipes": [
"kosmos-base",
"kosmos-base::default",
"kosmos_prometheus::node_exporter",
"kosmos_kvm::guest",
"kosmos-dirsrv::hostsfile",
"kosmos-mediawiki",
"kosmos-mediawiki::default",
"apt::default",
"timezone_iii::default",
"timezone_iii::debian",
"ntp::default",
"ntp::apparmor",
"kosmos-base::journald_conf",
"kosmos-base::systemd_emails",
"apt::unattended-upgrades",
"kosmos-base::firewall",
"kosmos-postfix::default",
"postfix::default",
"postfix::_common",
"postfix::_attributes",
"postfix::sasl_auth",
"hostname::default",
"ark::default",
"composer::default",
"composer::install",
"php::default",
"php::package",
"php::ini",
"composer::global_configs",
"mediawiki::default",
"mediawiki::database",
"kosmos-nginx::default",
"nginx::default",
"nginx::package",
"nginx::ohai_plugin",
"nginx::repo",
"nginx::commons",
"nginx::commons_dir",
"nginx::commons_script",
"nginx::commons_conf",
"kosmos-nginx::firewall",
"mediawiki::nginx",
"backup::default",
"logrotate::default",
"kosmos-base::letsencrypt"
],
"platform": "ubuntu",
"platform_version": "20.04",
"cloud": null,
"chef_packages": {
"chef": {
"version": "18.7.10",
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.7.10/lib",
"chef_effortless": null
},
"ohai": {
"version": "18.2.5",
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.2.5/lib/ohai"
}
}
},
"run_list": [
"role[base]",
"role[kvm_guest]",
"role[ldap_client]",
"recipe[kosmos-mediawiki]"
]
}
+1
View File
@@ -3,4 +3,5 @@ name "base"
run_list %w( run_list %w(
kosmos-base::default kosmos-base::default
kosmos_prometheus::node_exporter kosmos_prometheus::node_exporter
kosmos_zerotier::ohai_plugin
) )
+70
View File
@@ -0,0 +1,70 @@
#!/usr/bin/env bash
#
# Converge every node in nodes/ with a runlist override (-o).
#
# Usage:
# ./converge_all.sh "recipe[kosmos-base::users]"
#
# Port selection per node:
# - nodes WITH a normal.vm_host attribute (KVM guests): port 22
# - nodes WITHOUT a normal.vm_host attribute (bare metal): port 2222
#
# Runs sequentially and aborts on the first failure (set -euo pipefail).
set -euo pipefail
if [[ $# -ne 1 ]]; then
echo "Usage: $0 '<runlist override>'" >&2
echo " e.g. $0 \"recipe[kosmos-base::users]\"" >&2
exit 1
fi
RUNLIST="$1"
shopt -s nullglob
nodes=( nodes/*.json )
if [[ ${#nodes[@]} -eq 0 ]]; then
echo "No nodes found in nodes/" >&2
exit 1
fi
total=${#nodes[@]}
i=0
for f in "${nodes[@]}"; do
i=$((i + 1))
IFS=$'\x1f' read -r node_name vm_host knife_host < <(python3 -c '
import json, sys
d = json.load(open(sys.argv[1]))
print("\x1f".join([
d.get("name", "") or "",
d.get("normal", {}).get("vm_host", "") or "",
d.get("normal", {}).get("knife_zero", {}).get("host", "") or "",
]))
' "$f")
if [[ -z "$node_name" ]]; then
echo "[$i/$total] $f: could not read node name, skipping" >&2
exit 1
fi
if [[ -z "$knife_host" ]]; then
echo "[$i/$total] $node_name: no knife_zero.host set, skipping" >&2
exit 1
fi
if [[ -n "$vm_host" ]]; then
port=22
label="vm_host=${vm_host}"
else
port=2222
label="bare metal"
fi
echo "[$i/$total] $node_name ($label, port ${port}, host ${knife_host})"
knife zero converge "name:${node_name}" -a knife_zero.host -p"${port}" -o "${RUNLIST}"
done
echo "Converged ${total} node(s) successfully."
-69
View File
@@ -1,69 +0,0 @@
#!/usr/bin/env bash
# Strip the top-level "override" and "default" attributes from Chef node JSON files.
#
# Usage:
# ./scripts/util/strip_node_attrs.sh <node> [<node> ...]
# ./scripts/util/strip_node_attrs.sh --all
#
# A <node> may be a bare node name (e.g. "prometheus-1"), a path relative to the
# repository root (e.g. "nodes/prometheus-1.json"), or an absolute path.
#
# Exit codes:
# 0 - all target files processed successfully
# 1 - one or more targets could not be processed (missing args, missing jq,
# file not found, invalid JSON, or write failure)
set -uo pipefail
command -v jq >/dev/null 2>&1 || exit 1
root="$(git rev-parse --show-toplevel 2>/dev/null)" || root="$(pwd)"
targets=()
if [ "$#" -eq 0 ]; then
exit 1
fi
for arg in "$@"; do
if [ "$arg" = "--all" ]; then
shopt -s nullglob
for f in "$root"/nodes/*.json; do
targets+=("$f")
done
shopt -u nullglob
continue
fi
if [[ "$arg" == */* ]]; then
if [[ "$arg" = /* ]]; then
targets+=("$arg")
else
targets+=("$root/$arg")
fi
else
targets+=("$root/nodes/$arg.json")
fi
done
if [ "${#targets[@]}" -eq 0 ]; then
exit 1
fi
rc=0
for file in "${targets[@]}"; do
[ -f "$file" ] || { rc=1; continue; }
jq -e . "$file" >/dev/null 2>&1 || { rc=1; continue; }
tmp="$(mktemp "${file}.XXXXXX")" || { rc=1; continue; }
if jq --indent 2 'del(.override, .default)' "$file" > "$tmp" 2>/dev/null; then
truncate -s -1 "$tmp" 2>/dev/null || true
mv "$tmp" "$file" || { rm -f "$tmp"; rc=1; continue; }
else
rm -f "$tmp"
rc=1
continue
fi
done
exit "$rc"
@@ -26,6 +26,8 @@ systemd_unit "discourse.service" do
Environment: "SUPERVISED=true", Environment: "SUPERVISED=true",
ExecStart: "#{deploy_path}/launcher start app", ExecStart: "#{deploy_path}/launcher start app",
ExecStop: "#{deploy_path}/launcher stop app", ExecStop: "#{deploy_path}/launcher stop app",
TimeoutStartSec: '300',
TimeoutStopSec: '30'
}, },
Install: { Install: {
WantedBy: "multi-user.target" WantedBy: "multi-user.target"
+1 -2
View File
@@ -4,12 +4,11 @@ maintainer_email 'mail@kosmos.org'
license 'MIT' license 'MIT'
description 'Installs/configures kosmos-akkounts' description 'Installs/configures kosmos-akkounts'
long_description 'Installs/configures kosmos-akkounts' long_description 'Installs/configures kosmos-akkounts'
version '0.2.0' version '0.3.0'
chef_version '>= 18.0' chef_version '>= 18.0'
depends 'kosmos_openresty' depends 'kosmos_openresty'
depends "kosmos-nodejs" depends "kosmos-nodejs"
depends "redisio"
depends "postgresql" depends "postgresql"
depends "kosmos_postgresql" depends "kosmos_postgresql"
depends "backup" depends "backup"
@@ -19,13 +19,16 @@ user deploy_user do
shell "/bin/bash" shell "/bin/bash"
end end
directory deploy_path do
owner deploy_user
group deploy_group
mode "0755"
end
package "libpq-dev" package "libpq-dev"
package "libvips" package "libvips"
include_recipe 'redisio::default' node.override["kosmos_nodejs"]["version"] = "22.23.1"
include_recipe 'redisio::enable'
node.override["nodejs"]["repo"] = "https://deb.nodesource.com/node_20.x"
include_recipe 'kosmos-nodejs' include_recipe 'kosmos-nodejs'
npm_package "bun" npm_package "bun"
@@ -34,7 +37,7 @@ ruby_path = "/opt/ruby_build/builds/#{ruby_version}"
bundle_path = "#{ruby_path}/bin/bundle" bundle_path = "#{ruby_path}/bin/bundle"
rails_env = node.chef_environment == "development" ? "development" : "production" rails_env = node.chef_environment == "development" ? "development" : "production"
ruby_build_install 'v20240221' ruby_build_install 'v20260701'
ruby_build_definition ruby_version do ruby_build_definition ruby_version do
prefix_path ruby_path prefix_path ruby_path
end end
@@ -221,7 +224,6 @@ systemd_unit "akkounts.service" do
Unit: { Unit: {
Description: "Kosmos Accounts", Description: "Kosmos Accounts",
Documentation: ["https://gitea.kosmos.org/kosmos/akkounts"], Documentation: ["https://gitea.kosmos.org/kosmos/akkounts"],
Requires: "redis@6379.service",
After: "syslog.target network.target" After: "syslog.target network.target"
}, },
Service: { Service: {
@@ -1,2 +1,15 @@
node.default["kosmos-base"]["journald"]["system_max_use"] = "256M" node.default["kosmos-base"]["journald"]["system_max_use"] = "256M"
node.default["kosmos-base"]["journald"]["max_retention_sec"] = "7d" node.default["kosmos-base"]["journald"]["max_retention_sec"] = "7d"
node.default["kosmos-base"]["tmux"]["plugins_dir"] = "/usr/local/share/tmux/plugins"
node.default["kosmos-base"]["tmux"]["default_conf"] = "/usr/local/share/tmux/tmux.conf.default"
node.default["kosmos-base"]["tmux"]["tpm_redux"]["repo"] = "https://github.com/RyanMacG/tpm-redux.git"
node.default["kosmos-base"]["tmux"]["tpm_redux"]["revision"] = "c5347f71a291eadf26dbecacc43154ecd8ad061b"
# Keys are tpm shorthand names (used in `set -g @plugin`). Values contain the
# git repo and the exact commit SHA the plugin is pinned to.
node.default["kosmos-base"]["tmux"]["plugins"] = {
"tmux-plugins/tmux-resurrect" => {
"repo" => "https://github.com/tmux-plugins/tmux-resurrect.git",
"revision" => "e87d7d592cac97fa38c12395ebec042c154a1844",
},
}
@@ -0,0 +1,8 @@
allowed_automatic_attributes ["fqdn", "os", "os_version", "hostname",
"ipaddress", "roles", "recipes", "ipaddress",
"platform", "platform_version", "cloud",
"cloud_v2", "chef_packages", "zerotier"]
allowed_default_attributes []
allowed_override_attributes []
allowed_normal_attributes ["knife_zero", "kosmos_kvm", "kosmos-ejabberd",
"openresty", "vm_host"]
@@ -1,6 +0,0 @@
---
- knife_zero
- kosmos_kvm
- kosmos-ejabberd
- openresty
- vm_host
@@ -0,0 +1,44 @@
# basti's tmux overrides — appended after the system default config is sourced.
set -g prefix C-a
set -sg escape-time 1
set -g base-index 1
set -g history-limit 20000
set -g mouse off
set -g status-justify centre
set -g status-style dim
set -ag status-style fg=white
set -ag status-style bg=colour236
set -g window-status-current-style bright
set -ag window-status-current-style fg=white
set -ag window-status-current-style bg=colour238
set -g pane-border-style fg=colour238
set -g pane-active-border-style fg=colour244
setw -g pane-base-index 1
setw -g mode-keys vi
bind C-a send-prefix
bind r source-file ~/.tmux.conf \; display "Reloaded!"
bind | split-window -h
bind - split-window -v
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
bind -r H resize-pane -L 5
bind -r J resize-pane -D 5
bind -r K resize-pane -U 5
bind -r L resize-pane -R 5
unbind p
bind p paste-buffer
bind-key -T copy-mode-vi v send-keys -X begin-selection
bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel
unbind Up
bind Up new-window -d -n tmp \; swap-pane -s tmp.1 \; select-window -t tmp
unbind Down
bind Down last-window \; swap-pane -s tmp.1 \; kill-window -t tmp
bind P pipe-pane -o "cat >>~/#W.log" \; display "Toggled logging to ~/#W.log"
+26 -67
View File
@@ -2,57 +2,32 @@
# Cookbook Name:: kosmos-base # Cookbook Name:: kosmos-base
# Recipe:: default # Recipe:: default
# #
# The MIT License (MIT)
# ruby_block "cleanup client.rb" do
# Copyright:: 2019, Kosmos Developers block do
# fe = Chef::Util::FileEdit.new("/etc/chef/client.rb")
# Permission is hereby granted, free of charge, to any person obtaining a copy # Delete whitelist attribute definitions, everything is defined in attributes.rb
# of this software and associated documentation files (the "Software"), to deal fe.search_file_delete_line(/^.*_attribute_whitelist.*/)
# in the Software without restriction, including without limitation the rights fe.search_file_delete_line(/^allowed_.*_attributes.*/)
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell fe.write_file
# copies of the Software, and to permit persons to whom the Software is end
# furnished to do so, subject to the following conditions: end
#
# The above copyright notice and this permission notice shall be included in cookbook_file "/etc/chef/client.d/attributes.rb" do
# all copies or substantial portions of the Software. source "chef_attributes.rb"
# mode "0644"
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR notifies :create, "ruby_block[reload_client_config]", :immediately
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, end
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER ruby_block "reload_client_config" do
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, block do
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN Chef::Config.from_file("/etc/chef/client.rb")
# THE SOFTWARE. end
action :nothing
end
include_recipe "apt" include_recipe "apt"
cookbook_file "/etc/chef/chef_normal_attributes.yml" do
source "chef_normal_attributes.yml"
owner "root"
group "root"
mode "0644"
end
ruby_block "update allowed_normal_attributes in client.rb" do
block do
whitelist = YAML.load_file("/etc/chef/chef_normal_attributes.yml")
fe = Chef::Util::FileEdit.new("/etc/chef/client.rb")
fe.search_file_replace_line(
/^allowed_normal_attributes.*/,
"allowed_normal_attributes #{whitelist.inspect}"
)
fe.write_file
Chef::Config[:allowed_normal_attributes] = whitelist
Chef::Config[:normal_attribute_allowlist] = whitelist
end
not_if do
whitelist = YAML.load_file("/etc/chef/chef_normal_attributes.yml")
client_rb = ::File.read("/etc/chef/client.rb")
whitelist.all? { |attr| client_rb.include?(attr) }
end
end
directory "/etc/apt/keyrings" do directory "/etc/apt/keyrings" do
mode "0755" mode "0755"
action :create action :create
@@ -85,28 +60,12 @@ package "vim"
# Don't create users and rewrite the sudo config in development environment. # Don't create users and rewrite the sudo config in development environment.
# It breaks the vagrant user # It breaks the vagrant user
unless node.chef_environment == "development" unless node.chef_environment == "development"
# Searches data bag "users" for groups attribute "sysadmin". include_recipe "kosmos-base::users"
# Places returned users in Unix group "sysadmin" with GID 2300.
users_manage "sysadmin" do
group_id 2300
action %i[remove create]
end
sudo "sysadmin" do
groups "sysadmin"
nopasswd true
defaults [
# not default on Ubuntu, explicitely enable. Uses a minimal white list of
# environment variables
"env_reset",
# Send emails on unauthorized attempts
"mail_badpass",
'secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"'
]
end
include_recipe "kosmos-base::firewall" include_recipe "kosmos-base::firewall"
include_recipe "kosmos-base::tmux"
include_recipe "kosmos-postfix" include_recipe "kosmos-postfix"
node.override["set_fqdn"] = "*" node.override["set_fqdn"] = "*"
+102
View File
@@ -0,0 +1,102 @@
#
# Cookbook Name:: kosmos-base
# Recipe:: tmux
#
package "tmux"
plugins_dir = node["kosmos-base"]["tmux"]["plugins_dir"]
default_conf = node["kosmos-base"]["tmux"]["default_conf"]
tpm_redux = node["kosmos-base"]["tmux"]["tpm_redux"]
plugins = node["kosmos-base"]["tmux"]["plugins"]
directory plugins_dir do
owner "root"
group "root"
mode "0755"
recursive true
action :create
end
# Install tpm-redux (the plugin manager) at a pinned commit.
git "#{plugins_dir}/tpm-redux" do
repository tpm_redux["repo"]
revision tpm_redux["revision"]
user "root"
group "root"
action :sync
end
# Install each managed plugin at a pinned commit. Plugins are cloned by Chef
# into a shared, root-owned directory so that users never need to install them
# themselves.
plugins.each do |shorthand, meta|
git "#{plugins_dir}/#{shorthand.split('/').last}" do
repository meta["repo"]
revision meta["revision"]
user "root"
group "root"
action :sync
end
end
# System default tmux config: minimal — only the plugin manager environment,
# the @plugin declarations for the chef-managed plugins, and the tpm-redux
# initialisation line (which must be the last line of the file).
template default_conf do
source "tmux.conf.default.erb"
owner "root"
group "root"
mode "0644"
variables(
plugins_dir: plugins_dir,
plugins: plugins
)
action :create
end
# Write a per-user ~/.tmux.conf. Users who submit their own overrides as a
# cookbook file at files/default/tmux_users/<username>.conf get a fully
# managed config: it sources the system default (so chef-managed plugins
# always load) and then appends the user's overrides. Users who have not
# submitted a file get a blank importer written only if ~/.tmux.conf does
# not already exist, so any hand-written/local config is left untouched.
cookbook = run_context.cookbook_collection["kosmos-base"]
search(:users, "groups:sysadmin AND NOT action:remove") do |u|
username = u["username"] || u["id"]
home_dir = u["home"] || "/home/#{username}"
group_name = u["gid"] || username
next unless Dir.exist?(home_dir)
user_conf_source = "tmux_users/#{username}.conf"
if cookbook.has_cookbook_file_for_node?(node, user_conf_source)
disk_path = cookbook.preferred_filename_on_disk_location(node, :files, user_conf_source)
# Chef reads ERB templates with IO.binread, so the template output buffer
# is ASCII-8BIT. File.read returns UTF-8 on the node; concatenating a UTF-8
# string into an ASCII-8BIT buffer raises an encoding error on non-ASCII
# content. Retag as ASCII-8BIT to match the buffer — the raw bytes are
# still valid UTF-8, so the written file is correct.
user_content = File.read(disk_path).force_encoding("ASCII-8BIT")
template "#{home_dir}/.tmux.conf" do
source "tmux.conf.user.erb"
owner username
group group_name
mode "0644"
variables(default_conf: default_conf, user_content: user_content)
action :create
end
else
template "#{home_dir}/.tmux.conf" do
source "tmux.conf.user.erb"
owner username
group group_name
mode "0644"
variables(default_conf: default_conf, user_content: nil)
action :create_if_missing
end
end
end
@@ -0,0 +1,24 @@
#
# Cookbook Name:: kosmos-base
# Recipe:: default
#
# Searches data bag "users" for groups attribute "sysadmin".
# Places returned users in Unix group "sysadmin" with GID 2300.
users_manage "sysadmin" do
group_id 2300
action %i[remove create]
end
sudo "sysadmin" do
groups "sysadmin"
nopasswd true
defaults [
# not default on Ubuntu, explicitely enable. Uses a minimal white list of
# environment variables
"env_reset",
# Send emails on unauthorized attempts
"mail_badpass",
'secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"'
]
end
@@ -0,0 +1,14 @@
# Managed by Chef (kosmos-base::tmux). Do not edit on this host.
#
# This is the system default tmux config. It is sourced by each user's
# ~/.tmux.conf via `source-file`. Plugins are managed by Chef and live in
# a shared, root-owned directory; users do not install plugins themselves.
set-environment -g TMUX_PLUGIN_MANAGER_PATH '<%= @plugins_dir %>'
<% @plugins.each do |shorthand, _meta| -%>
set -g @plugin '<%= shorthand %>'
<% end -%>
# Initialize TPM Redux (must remain the last line of the file)
run '<%= @plugins_dir %>/tpm-redux/tpm'
@@ -0,0 +1,15 @@
# ~/.tmux.conf — created/managed by Chef (kosmos-base::tmux).
#
# This file imports the system default config below, then appends any overrides
# the user has submitted to files/default/tmux_users/<username>.conf in the
# kosmos-base cookbook. If you manage your own tmux config locally and have not
# submitted a file, Chef will not overwrite it.
source-file <%= @default_conf %>
<% if @user_content && !@user_content.empty? -%>
# === user overrides (from files/default/tmux_users/<username>.conf) ===
<%= @user_content %>
<% else -%>
# === Add your custom settings below this line ===
<% end -%>
+9 -1
View File
@@ -5,6 +5,11 @@
package %w(virtinst libvirt-daemon-system libvirt-clients) package %w(virtinst libvirt-daemon-system libvirt-clients)
# Required on legacy hosts (Ubuntu 20.04) to build the NoCloud seed ISO
# via cloud-localds. Modern virt-install (>= 4.0.0, Ubuntu >= 22.04)
# handles cloud-init natively via --cloud-init and does not need it.
package "cloud-image-utils" if node["platform_version"].to_f < 22.04
directory "/var/lib/libvirt/images/base" do directory "/var/lib/libvirt/images/base" do
recursive true recursive true
owner "libvirt-qemu" owner "libvirt-qemu"
@@ -24,7 +29,10 @@ end
template "/usr/local/sbin/create_vm" do template "/usr/local/sbin/create_vm" do
source "create_vm.erb" source "create_vm.erb"
mode "0750" mode "0750"
variables base_image_path: node["kosmos_kvm"]["host"]["qemu_base_image"]["path"] variables(
base_image_path: node["kosmos_kvm"]["host"]["qemu_base_image"]["path"],
modern_virt_install: node["platform_version"].to_f >= 22.04
)
end end
firewall_rule 'ssh-alt-port' do firewall_rule 'ssh-alt-port' do
@@ -64,6 +64,7 @@ EOS
popd popd
fi fi
<% if @modern_virt_install -%>
virt-install \ virt-install \
--name "$VMNAME" \ --name "$VMNAME" \
--ram "$RAM" \ --ram "$RAM" \
@@ -83,3 +84,30 @@ virt-install \
--autostart \ --autostart \
--import \ --import \
--cloud-init root-password-generate=off,disable=on,meta-data=$CIDATA_PATH/meta-data,user-data=$CIDATA_PATH/user-data --cloud-init root-password-generate=off,disable=on,meta-data=$CIDATA_PATH/meta-data,user-data=$CIDATA_PATH/user-data
<% else -%>
# Legacy path for hosts running virt-install < 4.0.0 (e.g. Ubuntu 20.04,
# virt-install 2.2.x). These versions predate the --osinfo/--cloud-init
# options, so we build a NoCloud seed ISO from the same user-data and
# meta-data files and attach it as a cdrom. The guest receives the
# exact same cloud-init configuration as on modern hosts.
cloud-localds "$CIDATA_PATH/seed.iso" "$CIDATA_PATH/user-data" "$CIDATA_PATH/meta-data"
virt-install \
--name "$VMNAME" \
--ram "$RAM" \
--vcpus "$CPUS" \
--cpu host \
--arch x86_64 \
--hvm \
--virt-type kvm \
--disk "$IMAGE_PATH" \
--disk "$CIDATA_PATH/seed.iso,device=cdrom" \
--boot hd \
--network=bridge=virbr0,model=virtio \
--graphics none \
--serial pty \
--console pty \
--channel unix,mode=bind,path=/var/lib/libvirt/qemu/$VMNAME.guest_agent.0,target_type=virtio,name=org.qemu.guest_agent.0 \
--autostart \
--import
<% end -%>
@@ -1,9 +1,8 @@
node.default["sentry"]["repo"] = "https://github.com/getsentry/self-hosted" node.default["sentry"]["repo"] = "https://github.com/getsentry/self-hosted"
node.default["sentry"]["revision"] = "23.3.1" # Make sure to first upgrade to hard stop version if required:
# https://develop.sentry.dev/self-hosted/releases/
node.default["sentry"]["revision"] = "26.6.0"
node.default["sentry"]["port"] = 80 node.default["sentry"]["port"] = 80
node.default["sentry"]["retention_days"] = 90 node.default["sentry"]["retention_days"] = 90
node.default["sentry"]["allowed_ips"] = nil node.default["sentry"]["allowed_ips"] = nil
# The Sentry setup requires docker-compose >= 1.28, which is newer than the
# latest stable version for Ubuntu 20.04
node.default["sentry"]["docker-compose"]["version"] = "2.17.0"
node.default["sentry"]["docker-compose"]["checksum"] = "65edee934d988471c40ef31305731dbb4381d3cb0aeea13342119b61772f85e2"
+26 -23
View File
@@ -3,12 +3,14 @@
# Recipe:: default # Recipe:: default
# #
package "docker" apt_repository "docker" do
uri "https://download.docker.com/linux/ubuntu"
key "https://download.docker.com/linux/ubuntu/gpg"
components ["stable"]
end
remote_file "/usr/local/bin/docker-compose" do %w[docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin].each do |pkg|
source "https://github.com/docker/compose/releases/download/v#{node["sentry"]["docker-compose"]["version"]}/docker-compose-linux-x86_64" package pkg
checksum node["sentry"]["docker-compose"]["checksum"]
mode '0755'
end end
deploy_path = "/opt/sentry" deploy_path = "/opt/sentry"
@@ -16,24 +18,22 @@ deploy_path = "/opt/sentry"
git deploy_path do git deploy_path do
repository node["sentry"]["repo"] repository node["sentry"]["repo"]
revision node["sentry"]["revision"] revision node["sentry"]["revision"]
# TODO test and uncomment
# notifies :run, "execute[run_install_script]", :immediately
end end
# TODO execute "run_install_script" do
# Automatically run install script if sentry/sentry.conf.py does not exist yet cwd deploy_path
command "./install.sh --apply-automatic-config-updates --no-report-self-hosted-issues"
action :nothing
end
credentials = data_bag_item("credentials", "sentry")
env_config = { env_config = {
sentry_event_retention_days: node["sentry"]["retention_days"], sentry_event_retention_days: node["sentry"]["retention_days"],
sentry_bind: node["sentry"]["bind"] || node["sentry"]["port"], sentry_bind: node["sentry"]["bind"] || node["sentry"]["port"],
# Default values from upstream launchpad_rpc_shared_secret: credentials["launchpad_rpc_shared_secret"]
compose_project_name: "sentry-self-hosted",
sentry_image: "getsentry/sentry:nightly",
snuba_image: "getsentry/snuba:nightly",
relay_image: "getsentry/relay:nightly",
symbolicator_image: "getsentry/symbolicator:nightly",
wal2json_version: "latest",
healthcheck_interval: "30s",
healthcheck_timeout: "60s",
healthcheck_retries: "10"
} }
template "#{deploy_path}/.env.custom" do template "#{deploy_path}/.env.custom" do
@@ -41,7 +41,8 @@ template "#{deploy_path}/.env.custom" do
mode 0600 mode 0600
sensitive true sensitive true
variables config: env_config variables config: env_config
notifies :restart, "service[sentry]", :delayed # TODO
# notifies :restart, "service[sentry]", :delayed
end end
systemd_unit "sentry.service" do systemd_unit "sentry.service" do
@@ -52,11 +53,13 @@ systemd_unit "sentry.service" do
}, },
Service: { Service: {
Type: "oneshot", Type: "oneshot",
RemainAfterExit: "true", RemainAfterExit: "yes",
WorkingDirectory: deploy_path, WorkingDirectory: deploy_path,
ExecStart: "docker-compose --env-file #{deploy_path}/.env.custom up -d --remove-orphans", ExecStart: "docker compose --env-file .env --env-file .env.custom up -d --wait",
ExecStop: "docker-compose stop", ExecStop: "docker compose down --remove-orphans",
StandardOutput: "syslog" StandardOutput: "journal",
TimeoutStartSec: 600,
TimeoutStopSec: 300
}, },
Install: { Install: {
WantedBy: "multi-user.target" WantedBy: "multi-user.target"
@@ -67,7 +70,7 @@ systemd_unit "sentry.service" do
end end
service "sentry" do service "sentry" do
action [:enable, :start] action [:enable]
end end
include_recipe 'firewall' include_recipe 'firewall'
+2 -1
View File
@@ -4,7 +4,8 @@ maintainer_email 'mail@kosmos.org'
license 'MIT' license 'MIT'
description 'Installs/Configures zerotier' description 'Installs/Configures zerotier'
long_description 'Installs/Configures zerotier' long_description 'Installs/Configures zerotier'
version '0.1.0' version '0.2.0'
chef_version '>= 14.0' chef_version '>= 14.0'
depends 'kosmos-base' depends 'kosmos-base'
depends 'zerotier'
@@ -0,0 +1,11 @@
#
# Cookbook:: kosmos_zerotier
# Recipe:: ohai_plugin
#
include_recipe "zerotier::ohai_plugin"
ohai "reload_zerotier" do
action :reload
plugin "zerotier"
end