From 3797a83ec65077b8fc59cb89bc1d633806137104 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 24 Oct 2022 22:44:58 +0000 Subject: [PATCH] Remove: Old plugin for another project --- .paasify/plugins/_paasify.jsonnet | 266 ------------------- .paasify/plugins/_template.jsonnet | 137 ---------- .paasify/plugins/docker-net-provider.jsonnet | 115 -------- .paasify/plugins/docker-svc-ugid.jsonnet | 49 ---- .paasify/plugins/paasify-dump.jsonnet | 20 -- .paasify/plugins/sidecar-mysql.jsonnet | 102 ------- .paasify/plugins/traefik-svc.jsonnet | 238 ----------------- 7 files changed, 927 deletions(-) delete mode 100644 .paasify/plugins/_paasify.jsonnet delete mode 100644 .paasify/plugins/_template.jsonnet delete mode 100644 .paasify/plugins/docker-net-provider.jsonnet delete mode 100644 .paasify/plugins/docker-svc-ugid.jsonnet delete mode 100644 .paasify/plugins/paasify-dump.jsonnet delete mode 100644 .paasify/plugins/sidecar-mysql.jsonnet delete mode 100644 .paasify/plugins/traefik-svc.jsonnet diff --git a/.paasify/plugins/_paasify.jsonnet b/.paasify/plugins/_paasify.jsonnet deleted file mode 100644 index 9b447b1..0000000 --- a/.paasify/plugins/_paasify.jsonnet +++ /dev/null @@ -1,266 +0,0 @@ -### OLD PLUGIN !!!!!!! - - -# local paasify = import 'paasify.libsonnet'; - - -# Helpers functions -# ------------------------------------- - - - -# Internal Tag functions -# ------------------------------------- - -local BuildConfImage(image, name, version, prefix) = - local array = if std.isString(image) then - std.splitLimit(image, ':', 2) - else [name, version]; - - local app_name = if std.length(array) > 0 then array[0] else name; - local app_version = if std.length(array) > 1 then array[1] else version; - local app_image = app_name + ':' + app_version; - - { - #app_image_INPUT: [image, name, version, prefix], - #app_image_prefix: prefix, - #app_image_name: prefix + app_name, - #app_image_version: app_version, - #app_image: prefix + app_image, - - _app_image_prefix: prefix, - _app_image_name: prefix + app_name, - _app_image_version: app_version, - _app_image: prefix + app_image, - }; - -# --- - -local Sanitize(str) = - std.strReplace(str, '_', '-'); - -local ParseFQDN(fqdn, name, domain) = - local array = if std.isString(fqdn) then - std.splitLimit(fqdn, '.', 2) - else []; - { - # Deprecated - _app_name: if std.length(array) > 1 then array[0] else name, - _app_domain: if std.length(array) > 1 then array[1] else domain, - _app_fqdn: if std.length(array) > 1 then fqdn else name + '.' + domain, - - }; - -local BuildConfDomain(fqdn, name, domain) = - local conf = ParseFQDN(fqdn, name, domain); - { [x]: Sanitize(conf[x]) for x in std.objectFields(conf) }; - - - -# Base functions -# ------------------------------------- - -# Provides plugin metadata -local metadata = { - name: '', - description: '', - - author: '', - email: '', - license: '', - version: '', - - require: '', - api: 1, - schema: {}, - }; - -# Provides global vars -local global_vars_default(runtime) = - # Role: Define constants - # Usage: CONSTANTS for docker-compose and jsonnet - # Only the usage of paasify.X vars is allowed - # Static variables only - assert std.isString(runtime.paasify_stack); - - local app_ident = runtime.paasify_ns + runtime.paasify_sep + runtime.paasify_stack; - #local dir_prefix = './'; - local dir_prefix = runtime.paasify_stack_dir + '/'; - { - app_ident: app_ident, - - app_name: runtime.paasify_stack, - app_domain: runtime.paasify_ns, - app_fqdn: null, - - app_image_name: runtime.paasify_stack, - app_image_version: 'latest', - app_image_prefix: '', - app_image: null, - - - ########################## - app_service: runtime.paasify_stack, - - app_network: 'default', - app_network_external: false, - app_network_name: app_ident, - - ######### - - app_expose: false, - app_expose_ip: '0.0.0.0', - app_expose_port: null, - - app_port: '80', - app_prot: 'tcp', - - app_puid: '1000', - app_pgid: '1000', - - app_lang: 'en_US', - app_tz: 'UTC', - app_tz_var: 'TZ', - app_tz_mount: false, - app_tz_mounts: '/etc/timezone:/etc/timezone:ro,/etc/localtime:/etc/localtime:ro', - - app_debug: 'false', - - app_dir_root: dir_prefix, - app_dir_db_data: dir_prefix + 'db_data', # Backup data - app_dir_db_conf: dir_prefix + 'db_conf', # Commitables files into git - - app_dir_cache: dir_prefix + 'cache', # Cache files - app_dir_build: dir_prefix + 'build', # Build dir - app_dir_script: dir_prefix + 'scripts', # Dir for storing container scripts and helpers - app_dir_conf: dir_prefix + 'conf', # Commitables files into git - app_dir_backup: dir_prefix + 'backup', # Backup directory - app_dir_data: dir_prefix + 'data', # Backup data - app_dir_logs: dir_prefix + 'logs', # Backup ? - app_dir_share: dir_prefix + 'share', # No backup, data for apps - app_dir_tmp: dir_prefix + 'tmp', # Just a tmp pool dir - app_dir_secrets: dir_prefix + 'secrets', # Autogenerated secrets - - app_docker_socket: '/var/run/docker.sock', - app_docker_conn: 'unix://var/run/docker.sock', - - - - # Generic networks - net_backup: runtime.paasify_ns + runtime.paasify_sep + 'backup', # For backup network - net_docker: runtime.paasify_ns + runtime.paasify_sep + 'docker', # For docker socket access - net_mail: runtime.paasify_ns + runtime.paasify_sep + 'mail', - net_vpn: runtime.paasify_ns + runtime.paasify_sep + 'vpn', - net_proxy: runtime.paasify_ns + runtime.paasify_sep + 'proxy', - net_ldap: runtime.paasify_ns + runtime.paasify_sep + 'ldap', - net_sql: runtime.paasify_ns + runtime.paasify_sep + 'sql', - net_nosql: runtime.paasify_ns + runtime.paasify_sep + 'nosql', - net_queue: runtime.paasify_ns + runtime.paasify_sep + 'queue', - net_ostorage: runtime.paasify_ns + runtime.paasify_sep + 'ostorage', # Object storage - net_fstorage: runtime.paasify_ns + runtime.paasify_sep + 'fstorage', # File storage - net_bstorage: runtime.paasify_ns + runtime.paasify_sep + 'bstorage', # Block storage - - #FUTURE app_dir_prefix: std.get(user_data, 'app_dir_prefix', './') - # app_dir_logs: ResolvePath(std.get(user_data, 'app_dir_logs', './logs/'), cwd), - # app_dir_conf: ResolvePath(std.get(user_data, 'app_dir_conf', './conf/'), cwd), - # app_dir_data: ResolvePath(std.get(user_data, 'app_dir_data', './data/'), cwd), - # app_dir_share: ResolvePath(std.get(user_data, 'app_dir_share', './share/'), cwd), - # app_dir_tmp: ResolvePath(std.get(user_data, 'app_dir_tmp', './tmp/'), cwd), - - } -; - -# Provides global var overrides -local global_vars_override(conf) = - # Role: ensure all variables are provided before processing - # Usage: VARS for docker-compose and jsonnet - # - # Any plugin user configuration can be used here - # No usage of paasify.X is permitted here at anytime ! - # Forbidden to change existing vars, only new vars with _PREFIX - # All variables must start with _ - - BuildConfImage( - conf.app_image, - conf.app_image_name, - conf.app_image_version, - conf.app_image_prefix) - - + BuildConfDomain( - conf.app_fqdn, - conf.app_name, - conf.app_domain) - ; - - -# Provides docker data override -# ------------------------------------- -local docker_transform(conf_raw, docker_data) = - # Role: Create a dynamic compose file - # Usage: docker_struct for jsonnet (no docker-compose!!!) - assert std.isString(conf_raw.paasify_stack_service); - local conf = global_vars_default(conf_raw) + conf_raw + global_vars_override(conf_raw); - - local service_name = conf.paasify_stack_service; - local services_names = std.split(conf.paasify_stack_services, ',') ; - - { - services+: { - [svc_name]+: { - restart: 'always', - environment+: { - [conf.app_tz_var]: conf.app_tz, - }, - } for svc_name in services_names - }, - - #[service_name]+: { - # comment: 'only on main container', - #}, - # - - #['x-paasify']+: { - # config_dump: conf, - #} - } -; - - -# # Return result -# # ------------------------------------- -# -# -# local main() = -# -# local getConf(name) = std.parseJson(std.extVar(name)); -# local action = getConf('action'); -# -# if action == 'metadata' then -# metadata -# -# else if action == 'vars' then -# local user_data = getConf('user_data'); -# local default_data = global_vars_default(user_data); -# local common = { [x]: std.get(user_data, std.lstripChars(x, '_'), default_data[x] ) for x in std.objectFields(default_data) }; -# { -# input: user_data, -# -# diff: default_data + common + global_vars_override(default_data + user_data ), -# merged: user_data + global_vars_override(default_data + user_data ), -# } -# -# else if action == 'docker_transform' then -# local user_data = getConf('user_data'); -# local docker_data = getConf('docker_data'); -# -# { -# input: user_data, -# -# #diff: docker_transform(user_data + global_vars_override(user_data), docker_data), -# diff: docker_transform(user_data, docker_data), -# merged: docker_data + self.diff, -# }; -# -# # Run main script ! -# main() -paasify.main() diff --git a/.paasify/plugins/_template.jsonnet b/.paasify/plugins/_template.jsonnet deleted file mode 100644 index a900095..0000000 --- a/.paasify/plugins/_template.jsonnet +++ /dev/null @@ -1,137 +0,0 @@ - -# Helpers functions -# ------------------------------------- - - -# Base functions -# ------------------------------------- - -# Provides plugin metadata -local metadata = { - name: '', - description: '', - - author: '', - email: '', - license: '', - version: '', - - require: '', - api: 1, - schema: {}, - }; - -# Provides global vars -local global_vars_default(runtime) = - # Only the usage of paasify.X vars is allowed - assert std.isString(runtime.paasify_stack); - - { - app_name; runtime.paasify_stack, - app_domain: runtime.paasify_ns, - app_ident: runtime.paasify_ns + runtime.paasify_sep + runtime.paasify_stack, - - app_fqdn: null, - - app_image_name: runtime.paasify_stack, - app_image_version: 'latest', - app_image_prefix: '', - app_image: null, - } -; - -# Provides global var overrides -local global_vars_override(conf) = - # Any user configuration can be used here - # no usage of paasify.X is permitted here at anytime ! - - local default_fqdn = [ - std.get(conf, 'app_fqdn'), - conf.app_name + '.' + conf.app_domain]; - local default_image = [ - std.get(conf, 'app_image'), - conf.app_image_name + '.' + conf.app_image_version]; - - conf + { - - # FQDN management - app_fqdn: std.prune(default_fqdn), - _app_fqdn_parts:: std.splitLimit(self.app_fqdn, '.', 2), - - app_name: self._app_fqdn_parts[0], - app_domain: self._app_fqdn_parts[1], - - # Image management - _app_image: std.prune(default_image), - _app_image_parts:: std.splitLimit(self.app_image, ':', 2), - - app_image: conf.app_image_prefix + self._app_image, - app_image_name: conf.app_image_prefix + self._app_image_parts[0], - app_image_version: self._app_image_parts[1] if std.lenght(self._app_image_parts) > 1 else conf.app_image_version, - } -; - - -# Provides docker data override -local docker_transform(conf, docker_data) = - assert std.isString(conf.paasify_stack_service); - - #local service_name = std.prune( conf.tag_name , conf.paasify_service); - local service_name = conf.paasify_service; - local services_names = std.split(conf.paasify_services, ',') ; - - { - services+: { - [service_name]+: { - comment: 'only on main container', - } - [svc_name]+: { - restart: 'always', - } for svc_name in services_names - }, - - ['x-paasify']+: { - config_dump: conf, - } - } -; - - -# Return result -# ------------------------------------- - - -local main() = - - local getConf(name) = std.parseJson(std.extVar(name)); - local action = getConf('action'); - - if action == 'metadata' then - metadata - - else if action == 'docker_vars' then - local user_data = getConf('user_data'); - - local default_data = global_vars_override(global_vars_default(user_data)); - local common = { [x]: std.get(user_data, std.lstripChars(x, '_'), default_data[x] ) for x in std.objectFields(default_data) }; - { - input: user_data, - - base: global_vars_override(default_data), - diff: global_vars_override(default_data + common ), - merged: global_vars_override(default_data + user_data ), - } - - else if action == 'docker_transform' then - local user_data = getConf('user_data'); - local docker_data = getConf('docker_data'); - - { - input: user_data, - - diff: docker_transform(global_vars_override(user_data), docker_data), - merged: docker_data + self.diff, - }; - -# Run main script ! -main() diff --git a/.paasify/plugins/docker-net-provider.jsonnet b/.paasify/plugins/docker-net-provider.jsonnet deleted file mode 100644 index 7665ce2..0000000 --- a/.paasify/plugins/docker-net-provider.jsonnet +++ /dev/null @@ -1,115 +0,0 @@ -# Tag to add a shared network -# -# Examples: - -# Default imports -local action = std.parseJson(std.extVar('action')); -local user_data = std.parseJson(std.extVar('user_data')); -local docker_data = std.parseJson(std.extVar('docker_data')); - -# Internal vars -local docker_services = std.get(docker_data, 'services', default={}); -local docker_services_names = std.objectFields(docker_services); - -# User options with defaults -local default_svcs = std.get(user_data, 'PAASIFY_STACK_SVCS'); - -# Build default config -local default_vars(user_data) = - local ns = std.get(user_data, 'paasify_ns', 'NS'); - local stack = std.get(user_data, 'paasify_stack', 'APP'); - local sep = std.get(user_data, 'paasify_sep', '_'); - local default_name = ns + sep + stack ; - { - app_network_ident: std.get(user_data, 'app_network', 'default'), - app_network_name: std.get(user_data, 'app_network_name', default_name), - app_network_external: std.get(user_data, 'app_network_external',true), -}; - -#local conf = config_default + user_data; - -local conf_override(conf) = - #local conf = default_vars(user_data) + user_data; - conf + default_vars(conf) ; - - - -# Process -local docker_transform(conf, docker_data) = - local service = std.get(conf, 'paasify_stack_service'); - local services = std.split(std.get(conf, 'paasify_stack_services', service), ','); - #docker_data + { - # 'zz': conf, - #}; - { - networks+: { - [conf.app_network_ident]: { - name: conf.app_network_name, - external: conf.app_network_external, - } - }, - services+: { - [svc_name]+: { networks+: { [conf.app_network_ident]: null } } for svc_name in services - }, - }; - - -# Return result -# ------------------------------------- - -if action == 'conf_schema' then - # Return the schema - {} # conf_schema - -else if action == 'vars_docker' then - local default_data = default_vars(user_data); - local common = { [x]: std.get(user_data, x, default_data[x] ) for x in std.objectFields(default_data) }; - { - input: user_data, - - # Mendatory fields - diff: conf_override( common ), - merged: conf_override( default_data + user_data ), - } - -else if action == 'docker_transform' then - { - # input: user_data, - diff: docker_transform(conf_override(user_data), docker_data), - merged: docker_data + self.diff, - } - - - - - -###############3 -## -## -## -### Internal vars -##local docker_services = std.get(docker_data, 'services', default={}); -##local docker_services_names = std.objectFields(docker_services); -# -## System options -#local service_ns = std.get(user_data, 'namespace', default=std.get(stack_data, 'namespace', default='')); -#local service_stack = std.get(user_data, 'name', default=std.get(stack_data, 'current_stack', default='')); -# -#local default_name = if std.isString(service_ns) then service_ns + "_" + service_stack else service_stack; -# -## User options with defaults -#local network_name = std.get(user_data, 'network_name', default='default'); -#local service_name = std.get(user_data, 'service', default='app'); -#local services_names = std.get(user_data, 'services', default=[service_name]); - -# if action == 'vars_docker' then -# vars_docker(user_data) -# #conf_override(user_data) -# else if action == 'docker_transform' then -# { -# diff: docker_transform( -# conf_override(user_data), -# docker_data), -# merged: docker_data + self.diff, -# } - diff --git a/.paasify/plugins/docker-svc-ugid.jsonnet b/.paasify/plugins/docker-svc-ugid.jsonnet deleted file mode 100644 index 2df9f0b..0000000 --- a/.paasify/plugins/docker-svc-ugid.jsonnet +++ /dev/null @@ -1,49 +0,0 @@ -# Tag to set UID and GID to container -# -# Examples: -# tags: -# - docker-svc-tz: -# policy: always -# services: -# - srv1 -# - mysqldb - -# Default imports -local user_data = std.parseJson(std.extVar('user_data')); -local docker_data = std.parseJson(std.extVar('docker_data')); - -# Init defaults -local default_svcs = std.get(user_data, 'PAASIFY_STACK_SVCS'); - -# Build default config -local config_default = { - APP_SERVICES: default_svcs, - APP_PUID: 1000, - APP_PGID: 1000, - APP_PUID_VAR: 'APP_PUID', - APP_PGID_VAR: 'APP_PGID', -}; - -local conf = config_default + user_data; -local services_names = std.split(conf.APP_SERVICES, ',') ; - -# Internal functions -local ServiceUGI(var, val) = - if std.isString(val) || std.isNumber(val) then - { - [var]: std.toString(val), - } else {}; - - -# Process -docker_data + -{ - services+: { - [svc_name]+: { - environment+: - ServiceUGI(conf.APP_PUID_VAR, conf.APP_PUID) + - ServiceUGI(conf.APP_PGID_VAR, conf.APP_PGID), - } for svc_name in services_names - }, -} - diff --git a/.paasify/plugins/paasify-dump.jsonnet b/.paasify/plugins/paasify-dump.jsonnet deleted file mode 100644 index 5686299..0000000 --- a/.paasify/plugins/paasify-dump.jsonnet +++ /dev/null @@ -1,20 +0,0 @@ -# Dump meta-data in docker files -# -# Examples: -# tags: -# - paasify-dump - -# Default imports -local docker_data = std.parseJson(std.extVar('docker_data')); -local user_data = std.parseJson(std.extVar('user_data')); - -# Process -docker_data + -{ - ["x-paasify"]+: { - "user_data": user_data, -# "docker_data": docker_data, - } -} - - diff --git a/.paasify/plugins/sidecar-mysql.jsonnet b/.paasify/plugins/sidecar-mysql.jsonnet deleted file mode 100644 index 867fa1d..0000000 --- a/.paasify/plugins/sidecar-mysql.jsonnet +++ /dev/null @@ -1,102 +0,0 @@ -# Tag to add mysql sidecar -# -# Examples: -# tags: -# - docker-services-restart: -# policy: always -# services: -# - srv1 -# - mysqldb - -# Default imports -local stack_data = std.parseJson(std.extVar('stack_data')); -local docker_data = std.parseJson(std.extVar('docker_data')); -local user_data = std.parseJson(std.extVar('user_data')); - -## Internal vars -local docker_service = std.get(docker_data, 'service', default={}); -local docker_services = std.get(docker_data, 'services', default={docker_service: null }); -local docker_services_names = std.objectFields(docker_services); -local services_names = std.get(user_data, 'services', default=docker_services_names); - -# -# -## System options -#local service_ns = std.get(stack_data, 'namespace', default=''); -#local service_stack = std.get(stack_data, 'current_stack', default=''); - -# User options with defaults -#local service_default_net = service_ns + "_traefik"; -#local service_network = std.get(user_data, 'network', default=service_default_net ); - - -#local service_top_domain = std.get(user_data, 'top_domain', default='dev.box'); -local service_name = std.get(user_data, 'name', default='mysql'); -local service_image = std.get(user_data, 'image', default='mariadb:10'); - -# MySQL settings -local service_root_password = std.get(user_data, 'root_password', default=''); -local service_root_password_random = std.get(user_data, 'root_password_random', default=false); -local service_user_password = std.get(user_data, 'user_password', default=''); -local service_user_name = std.get(user_data, 'user_name', default=std.get(stack_data, 'current_stack', default='db')); -local service_user_db = std.get(user_data, 'user_db', default=service_user_name); - - -#local service_port = std.get(user_data, 'port', default='80'); -#local service_entrypoints = std.get(user_data, 'entrypoints', default='front-http'); -# -#local service_app = std.get(user_data, 'name', default=service_name); -#local service_domain = std.get(user_data, 'domain', default=service_app + '.' + service_top_domain); -# -#local service_tls = std.get(user_data, 'tls', default=false); -#local service_certresolver = std.get(user_data, 'certresolver', default=null); -#local service_auth = std.get(user_data, 'auth', default=null); - - - - -# This would eventually also contain stack name to avoid collisions -#local service_id = service_ns + "_" + service_name; -#local service_id = service_ns + "_" + service_stack + "_" + service_name; - - -# Process -docker_data -+ { - # Append mysql network to the list of networks - networks+: { - mysql: null - }, - - # Append mysql netwok to all requested services - services+: { - [svc_name]+: { networks+: { mysql: null } } for svc_name in services_names - }, -} -+ { - # Append mysql sidecar - services+: { - [service_name]+: { - environment: { - MYSQL_RANDOM_ROOT_PASSWORD: service_root_password_random, - MYSQL_ROOT_PASSWORD: service_root_password, - MYSQL_PASSWORD: service_user_password, - MYSQL_USER: service_user_name, - MYSQL_DATABASE: service_user_db, - }, - image: service_image, - networks: { - mysql: null, - }, - volumes: [], - }, - }, - - // zzz: { - // a1: stack_data, - // a2: user_data, - // }, - -} - - diff --git a/.paasify/plugins/traefik-svc.jsonnet b/.paasify/plugins/traefik-svc.jsonnet deleted file mode 100644 index 3e94a7b..0000000 --- a/.paasify/plugins/traefik-svc.jsonnet +++ /dev/null @@ -1,238 +0,0 @@ -# Tag to add a restart policy on all containers -# -# Examples: -# tags: -# - docker-services-restart: -# policy: always -# services: -# - srv1 -# - mysqldb - -# Default imports -# ------------------------------------- - -# Import from external data -local action = std.parseJson(std.extVar('action')); -local docker_data = std.parseJson(std.extVar('docker_data')); -local user_data = std.parseJson(std.extVar('user_data')); - - -# -# Default config -# ------------------------------------- - -# Build default config -local global_vars_default(user_data) = - assert std.isString(user_data.paasify_ns); - - # Init defaults - local ns = std.get(user_data, 'paasify_ns', ''); - local stack = std.get(user_data, 'paasify_stack', ''); - local sep = std.get(user_data, 'paasify_sep', '_'); - - # Runtime vars - local default_name = std.get(user_data, 'app_name', stack); - local default_top_domain = std.get(user_data, 'app_domain', ns); - - # We replace app name by 'app', just for nice looking - local traefik_ident = if stack != default_name then default_name else 'app'; - #local traefik_ident = stack; - - { - - # Required by API: - traefik_network_name: ns + sep + 'traefik', - traefik_net_ident: 'default', - traefik_net_external: true, - traefik_svc_ident: stack , - traefik_svc_port: user_data.app_port , - traefik_svc_group: ns + sep + 'traefik', - - traefik_svc_name: null, - traefik_svc_domain: null, - traefik_svc_entrypoints: null, - traefik_svc_auth: null, - traefik_svc_tls: null, - traefik_svc_certresolver: null, - - }; - -local global_vars_override(conf) = - # Any plugin user configuration can be used here - # No usage of paasify.X is permitted here at anytime ! - # Forbidden to change existing vars, only new vars with _PREFIX - # All variables must start with _ - - local default_ident = conf.paasify_ns + conf.paasify_sep + conf.paasify_stack; - - local default_svc_name = [ - std.get(conf, 'traefik_svc_name'), - default_ident - ]; - local default_svc_domain = [ - std.get(conf, 'traefik_svc_domain'), - std.get(conf, 'app_fqdn'), - std.get(conf, 'app_name', conf.paasify_stack) + '.' + std.get(conf, 'app_domain', conf.paasify_ns), - ]; - - local default_svc_entrypoints = [ - std.get(conf, 'traefik_svc_entrypoints'), - "front-http", - ]; - - - { - _traefik_svc_name: std.prune(default_svc_name)[0], - _traefik_svc_domain: std.prune(default_svc_domain)[0], - - _traefik_svc_entrypoints: std.prune(default_svc_entrypoints)[0], - _traefik_svc_auth: std.get(conf, 'traefik_svc_auth', default=null), - _traefik_svc_tls: std.get(conf, 'traefik_svc_tls', default=false), - _traefik_svc_certresolver: std.get(conf, 'traefik_svc_certresolver', default=null), - #zz_conf: conf , - } - ; - - -# Internal functions -# ------------------------------------- - -# Base routing -local LabelsTraefik(svc, domain, entrypoints, port, group) = - { - ["traefik.enable"]: "true", - ["traefik.group"]: group, - ["traefik.http.routers." + svc + ".rule"]: 'Host(`' + domain + '`)', - ["traefik.http.routers." + svc + ".entrypoints"]: entrypoints, - ["traefik.http.routers." + svc + ".service"]: svc, - ["traefik.http.services." + svc + ".loadbalancer.server.port"]: std.format("%s", port), - }; - -# Middleware -local LabelsTraefikAuthelia(svc, authservice) = - if std.isString(authservice) && std.length(authservice) > 0 then - { - ["traefik.http.routers." + svc + ".middlewares"]: authservice + '@docker', - } else {}; - -# TLS management -local LabelsTraefikTls(svc, status) = - if status == true then - { - ["traefik.http.routers." + svc + ".tls"]: "true", - } else {}; - -local LabelsTraefikCertResolver(svc, name) = - if std.isString(name) && std.length(name) > 0 then - LabelsTraefikTls(svc, true) + { - ["traefik.http.routers." + svc + ".tls.certresolver"]: name, - } else {}; - -# Networking -local TraefikSvcNetwork(id, name) = - if std.isString(id) then - { - [id]: null, - } else {}; - -local TraefikPrjNetwork(id, name, external) = - if std.isString(id) then - { - [id]+: { - name: name - }, - } + - if external == true then - { - [id]+: { - external: true, - }, - } else {} - else {}; - - -# Provides docker data override -# ------------------------------------- -local docker_transform(conf_raw, docker_data) = - assert std.isString(conf_raw.paasify_stack_service); - local conf = conf_raw + global_vars_override(conf_raw); - - local service = std.get(conf, 'traefik_svc_ident', conf.paasify_stack_service ); - local services = std.split(std.get(conf, 'paasify_stack_services', service), ','); - - { - # Append stack network - networks+: TraefikPrjNetwork( - conf.traefik_net_ident, - conf.traefik_network_name, - conf.traefik_net_external), - - # Apply per services labels - services+: { - [conf.traefik_svc_ident]+: { - labels+: - LabelsTraefik( - conf.traefik_svc_name, - conf._traefik_svc_domain, - conf.traefik_svc_entrypoints, - conf.traefik_svc_port, - conf.traefik_svc_group) - + LabelsTraefikAuthelia( - conf.traefik_svc_name, - conf.traefik_svc_auth) - + LabelsTraefikTls( - conf.traefik_svc_name, - conf.traefik_svc_tls) - + LabelsTraefikCertResolver( - conf.traefik_svc_name, - conf.traefik_svc_certresolver) - , - networks+: TraefikSvcNetwork( - conf.traefik_net_ident, - conf.traefik_network_name), - }, - }, - }; - - - -# Return result -# ------------------------------------- - - -local main() = - - local getConf(name) = std.parseJson(std.extVar(name)); - local action = getConf('action'); - - if action == 'metadata' then - {} - - # TOFIX IN CODE: else if action == 'docker_vars' then - else if action == 'vars_docker' then - local user_data = getConf('user_data'); - local default_data = global_vars_default(user_data); - local common = { [x]: std.get(user_data, std.lstripChars(x, '_'), default_data[x] ) for x in std.objectFields(default_data) }; - - { - input: user_data, - - diff: default_data + common + global_vars_override(default_data + user_data ), - merged: user_data + global_vars_override(default_data + user_data ), - } - - else if action == 'docker_transform' then - local user_data = getConf('user_data'); - local docker_data = getConf('docker_data'); - - { - input: user_data, - - #diff: docker_transform(user_data + global_vars_override(user_data), docker_data), - diff: docker_transform(user_data, docker_data), - merged: docker_data + self.diff, - }; - -# Run main script ! -main() -