From c4dd99b433bda51c8e7c4f1b9a46d394a66f4730 Mon Sep 17 00:00:00 2001 From: Frederick Muriuki Muriithi Date: Mon, 19 Aug 2024 09:39:07 -0500 Subject: Define new container for gn2-fred* domains. --- fred-production-deploy.sh | 44 +++++++++++++++++++ fred-production.scm | 85 ++++++++++++++++++++++++++++++++++++ genenetwork/services/genenetwork.scm | 8 ++-- 3 files changed, 134 insertions(+), 3 deletions(-) create mode 100755 fred-production-deploy.sh create mode 100644 fred-production.scm diff --git a/fred-production-deploy.sh b/fred-production-deploy.sh new file mode 100755 index 0000000..498c4a8 --- /dev/null +++ b/fred-production-deploy.sh @@ -0,0 +1,44 @@ +#! /bin/sh -e + +# genenetwork-machines --- Guix configuration for genenetwork machines +# Copyright © 2022, 2024 Arun Isaac +# Copyright © 2024 Frederick Muriuki Muriithin +# +# This file is part of genenetwork-machines. +# +# genenetwork-machines is free software: you can redistribute it +# and/or modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation, either version 3 of +# the License, or (at your option) any later version. +# +# genenetwork-machines is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied warranty +# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with genenetwork-machines. If not, see +# . + +# Build and install genenetwork production container on tux02. + +container_script=$(guix \ + system container \ + --network \ + --load-path=. \ + --verbosity=3 \ + --share=/export2/guix-containers/fred-production/var/genenetwork=/var/genenetwork \ + --share=/export2/guix-containers/fred-production/var/lib/acme=/var/lib/acme \ + --share=/export2/guix-containers/fred-production/var/lib/redis=/var/lib/redis \ + --share=/export/mysql/database=/var/lib/mysql \ + --share=/home/zas1024/guix-containers/var/lib/virtuoso=/var/lib/virtuoso \ + --share=/export2/guix-containers/fred-production/var/log=/var/log \ + --share=/export2/guix-containers/fred-production/etc/genenetwork=/etc/genenetwork \ + --share=/export2/guix-containers/fred-production/var/lib/xapian=/var/lib/xapian \ + --share=/export2/guix-containers/fred-production/var/lib/genenetwork-sqlite=/var/lib/genenetwork-sqlite \ + --share=/var/run/mysqld=/run/mysqld \ + fred-production.scm) + +echo $container_script +sudo ln --force --symbolic $container_script /usr/local/bin/genenetwork-fred-container +sudo ln --force --symbolic /usr/local/bin/genenetwork-fred-container /var/guix/gcroots diff --git a/fred-production.scm b/fred-production.scm new file mode 100644 index 0000000..42dcb05 --- /dev/null +++ b/fred-production.scm @@ -0,0 +1,85 @@ +;;; genenetwork-machines --- Guix configuration for genenetwork machines +;;; Copyright © 2022–2024 Arun Isaac +;;; Copyright © 2024 Frederick Muriuki Muriithi +;;; +;;; This file is part of genenetwork-machines. +;;; +;;; genenetwork-machines is free software: you can redistribute it +;;; and/or modify it under the terms of the GNU General Public License +;;; as published by the Free Software Foundation, either version 3 of +;;; the License, or (at your option) any later version. +;;; +;;; genenetwork-machines is distributed in the hope that it will be +;;; useful, but WITHOUT ANY WARRANTY; without even the implied +;;; warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +;;; See the GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with genenetwork-machines. If not, see +;;; . + +(use-modules (gnu) + (genenetwork services genenetwork) + ((gnu packages admin) #:select (shepherd)) + (gn services databases) + (gnu services databases) + (forge acme) + (forge nginx) + (forge socket)) + +(operating-system + (host-name "genenetwork-fred-production") + (timezone "UTC") + (locale "en_US.utf8") + (bootloader (bootloader-configuration + (bootloader grub-bootloader) + (targets (list "/dev/sdX")))) + (file-systems %base-file-systems) + (users %base-user-accounts) + (sudoers-file + (mixed-text-file "sudoers" + "@include " %sudoers-specification + "\nacme ALL = NOPASSWD: " (file-append shepherd "/bin/herd") " restart nginx\n")) + (packages %base-packages) + (services (cons* (service mysql-service-type + (mysql-configuration + (auto-upgrade? #f))) + (service virtuoso-service-type + (virtuoso-configuration + (server-port 9892) + (http-server-port 9893))) + (service forge-nginx-service-type + (forge-nginx-configuration + (http-listen (forge-ip-socket + (ip "0.0.0.0") + (port 9890))) + (https-listen (forge-ip-socket + (ip "0.0.0.0") + (port 9891))))) + (service acme-service-type + (acme-configuration + (email "arunisaac@systemreboot.net"))) + (service redis-service-type + ;; Added since Tux04 has no redis running + ;; on port 6379 + (redis-configuration + (bind "127.0.0.1") + (port 6379) + (working-directory "/var/lib/redis"))) + (service genenetwork-service-type + (genenetwork-configuration + (server-name "gn2-fred.genenetwork.org") + (gn-auth-server-name "gn2-fred-auth.genenetwork.org") + (gn2-port 9894) + (gn3-port 9895) + (gn-auth-port 9896) + (sql-uri "mysql://webqtlout:webqtlout@localhost/db_webqtl") + (xapian-db "/var/lib/xapian") + (sparql-endpoint "http://localhost:9893/sparql") + (gn3-data-directory "/var/genenetwork/data/genenetwork3") + (gn2-secrets "/etc/genenetwork/genenetwork2") + (gn3-secrets "/etc/genenetwork/genenetwork3/gn3-secrets.py") + (gn-auth-secrets "/etc/genenetwork/gn-auth") + (auth-db "/var/lib/genenetwork-sqlite/auth.db") + (log-level "DEBUG"))) + %base-services))) diff --git a/genenetwork/services/genenetwork.scm b/genenetwork/services/genenetwork.scm index 9808ce5..e5d75ae 100644 --- a/genenetwork/services/genenetwork.scm +++ b/genenetwork/services/genenetwork.scm @@ -102,7 +102,8 @@ (gn3-secrets genenetwork-configuration-gn3-secrets (default "/etc/genenetwork/gn3-secrets.py")) (gn-auth-secrets genenetwork-configuration-gn-auth-secrets - (default "/etc/genenetwork"))) + (default "/etc/genenetwork")) + (log-level gn-uploader-log-level (default "WARNING"))) (define-record-type* gn-uploader-configuration make-gn-uploader-configuration @@ -304,7 +305,7 @@ G-expressions or numbers." described by @var{config}, a @code{} object." (match-record config - (genenetwork2 genenetwork3 gn-auth server-name gn-auth-server-name gn2-port gn3-port gn-auth-port sql-uri auth-db xapian-db genotype-files sparql-endpoint gn-sourcecode-directory gn3-data-directory gn2-secrets gn3-secrets gn-auth-secrets) + (genenetwork2 genenetwork3 gn-auth server-name gn-auth-server-name gn2-port gn3-port gn-auth-port sql-uri auth-db xapian-db genotype-files sparql-endpoint gn-sourcecode-directory gn3-data-directory gn2-secrets gn3-secrets gn-auth-secrets log-level) ;; If we mapped only the mysqld.sock socket file, it would break ;; when the external mysqld server is restarted. (let* ((database-mapping (file-system-mapping @@ -385,7 +386,8 @@ object." (file-system-mapping (source gn2-secrets) (target source) - (writable? #t))))) + (writable? #t)))) + (extra-cli-arguments (list "--log-level" log-level))) (gunicorn-app (name "genenetwork3") (package genenetwork3) -- cgit v1.2.3