add stack duniter/v2s

This commit is contained in:
aynic.os
2024-02-12 00:15:50 +00:00
parent 1a731109ea
commit 2a3a929372
7 changed files with 122 additions and 16 deletions
+1 -1
View File
@@ -200,7 +200,7 @@ stack:
## the last part of %
## ex: stack-host-up will fire the docker-compose-up target in the host stack
.PHONY: stack-%
stack-%: stack
stack-%:
$(eval stack := $(subst -$(lastword $(subst -, ,$*)),,$*))
$(eval command := $(lastword $(subst -, ,$*)))
$(if $(findstring -,$*), \
+7 -3
View File
@@ -1,9 +1,13 @@
APP_DIR ?= $(CURDIR)
APP_DOCKER_DIR ?= $(DOCKER_DIR)
APP_DOMAIN ?= $(patsubst %,$(APP_DOMAIN_PREFIX)%,$(DOMAIN))
APP_DOMAIN_PREFIX ?= $(if $(HOST_STACK),,$(addsuffix .,$(filter-out $(ENV_DEPLOY),$(ENV)))$(USER).)
APP_HOST ?= $(patsubst %,$(APP_HOST_PREFIX)%,$(APP_DOMAIN))$(if $(HOST_LB),$(space)$(APP_DOMAIN))
APP_HOST_PREFIX ?= $(addsuffix .,$(if $(HOST_STACK),$(HOSTNAME),$(if $(APP_LB),,$(APP_NAME))))
APP_DOMAIN_PREFIX ?= $(if $(HOST_STACK),,$(addsuffix .,$(if $(APP_HOST_MULTI_ENV),$(filter-out $(ENV_DEPLOY),$(ENV))))$(if $(APP_HOST_MULTI_USER),$(USER).))
APP_HOST ?= $(patsubst %,$(APP_HOST_PREFIX)%,$(APP_DOMAIN))$(if $(HOST_STACK),$(if $(HOST_LB),$(space)$(DOMAIN)))
APP_HOST_PREFIX ?= $(addsuffix .,$(if $(HOST_STACK),$(HOSTNAME),$(if $(APP_HOST_MULTI_APP),$(APP_NAME))))
APP_HOST_MULTI ?= false
APP_HOST_MULTI_APP ?= $(if $(filter true,$(APP_HOST_MULTI)),true)
APP_HOST_MULTI_ENV ?= $(if $(filter true,$(APP_HOST_MULTI)),true)
APP_HOST_MULTI_USER ?= $(if $(filter true,$(APP_HOST_MULTI)),true)
APP_INSTALLED ?= $(APPS)
APP_PARENT ?= $(MONOREPO)
APP_PARENT_DIR ?= $(MONOREPO_DIR)
+12 -5
View File
@@ -5,6 +5,12 @@ ufw:
# target ufw-bootstrap: Eval ufw-docker app variables
ufw-bootstrap:
$(eval APP_COMPOSE_FILE :=)
$(eval DOCKER_COMPOSE_PROJECT_NAME := $(HOST_COMPOSE_PROJECT_NAME))
$(eval DOCKER_SERVICE := ufw-docker)
$(eval DOCKER_STACK :=)
$(eval MYOS_STACK :=)
$(eval MYOS_STACK_FILE :=)
$(call app-bootstrap,$(lastword $(subst /, ,$(SETUP_UFW_REPOSITORY))))
# target ufw-build: Build ufw-docker docker
@@ -26,21 +32,22 @@ ufw-install:
$(call app-install,$(SETUP_UFW_REPOSITORY))
# target ufw-up: Start ufw-docker docker
ufw-up: COMPOSE_PROJECT_NAME := $(HOST_COMPOSE_PROJECT_NAME)
ufw-up: DOCKER_RUN_NETWORK :=
ufw-up: DOCKER_RUN_OPTIONS := --rm -d --cap-add NET_ADMIN -v /etc/ufw:/etc/ufw $(if wildcard /etc/default/ufw,-v /etc/default/ufw:/etc/default/ufw) --network host
ufw-up: DOCKER_RUN_OPTIONS := --restart always -d --cap-add NET_ADMIN -v /etc/ufw:/etc/ufw $(if wildcard /etc/default/ufw,-v /etc/default/ufw:/etc/default/ufw) --network host
ufw-up:
$(call app-up)
# target ufw-update: Call ufw and ufw-docker foreach service UFW_UPDATE
.PHONY: ufw-update
ufw-update: debug-UFW_UPDATE
$(eval name := $(COMPOSE_PROJECT_NAME))
ufw-update: stack $(if $(HOST_STACK),setup-ufw) debug-UFW_UPDATE
$(eval APP_COMPOSE_FILE :=)
$(eval DOCKER_SERVICE := ufw-docker)
$(eval project_name := $(COMPOSE_PROJECT_NAME))
$(foreach UPDATE,$(call UPPERCASE,$(UFW_UPDATE)), \
$(eval ufw_update := $($(if $(HOST_STACK),HOST_)$(UPDATE)_UFW_UPDATE)) \
$(eval ufw_docker := $($(if $(HOST_STACK),HOST_)$(UPDATE)_UFW_DOCKER)) \
$(foreach port,$(ufw_docker), \
$(call ufw-docker,$(if $(UFW_DELETE),delete) allow $(name)-$(call LOWERCASE,$(UPDATE)) $(port) ||:) \
$(call ufw-docker,$(if $(UFW_DELETE),delete) allow $(project_name)-$(call LOWERCASE,$(UPDATE))$(if $(HOST_STACK),,-1) $(port) ||:) \
) \
$(foreach port,$(ufw_update), \
$(call ufw,$(if $(UFW_DELETE),delete) allow $(port)) \
+5 -5
View File
@@ -19,13 +19,13 @@ define app-bootstrap
$(eval APP := $(or $(1), $(APP)))
$(eval APP_DIR := $(or $(2), $(RELATIVE)$(APP)))
$(eval APP_NAME := $(or $(3),$(subst -,,$(subst .,,$(call LOWERCASE,$(APP))))))
$(eval COMPOSE_PROJECT_NAME := $(if $(DOCKER_COMPOSE_PROJECT_NAME),$(DOCKER_COMPOSE_PROJECT_NAME),$(subst .,,$(call LOWERCASE,$(USER)-$(APP_NAME)-$(ENV)$(addprefix -,$(subst /,,$(subst -,,$(APP_PATH))))))))
$(eval COMPOSE_SERVICE_NAME := $(if $(DOCKER_COMPOSE_SERVICE_NAME),$(DOCKER_COMPOSE_SERVICE_NAME),$(subst _,-,$(COMPOSE_PROJECT_NAME))))
$(eval COMPOSE_PROJECT_NAME := $(or $(DOCKER_COMPOSE_PROJECT_NAME),$(subst .,,$(call LOWERCASE,$(USER)-$(APP_NAME)-$(ENV)$(addprefix -,$(subst /,,$(subst -,,$(APP_PATH))))))))
$(eval COMPOSE_SERVICE_NAME := $(or $(DOCKER_COMPOSE_SERVICE_NAME),$(subst _,-,$(COMPOSE_PROJECT_NAME))))
$(eval DOCKER_BUILD_DIR := $(APP_DIR))
$(call compose-file,$(APP_DIR) $(APP_DIR)/$(or $(APP_DOCKER_DIR),$(DOCKER_DIR)),docker-compose)
$(call compose-file,apps apps/$(APP),$(APP))
$(eval APP_COMPOSE_FILE := $(COMPOSE_FILE))
$(foreach stackz,$(STACK),$(call docker-stack,$(stackz)))
$(eval APP_COMPOSE_FILE ?= $(COMPOSE_FILE))
$(foreach stackz,$(or $(DOCKER_STACK),$(STACK)),$(call docker-stack,$(stackz)))
$(call compose-file,$(MYOS_STACK),$(MYOS_STACK_FILE))
$(call .env,$(APP_DIR)/.env,$(APP_DIR)/.env.dist $(APP_DIR)/.env.example $(APP_DIR)/.env.sample)
endef
@@ -86,7 +86,7 @@ define app-docker
$(eval dockerfile := $(or $(1)))
$(if $(wildcard $(dockerfile)),
$(eval service := $(or $(DOCKER_SERVICE),$(subst .,,$(call LOWERCASE,$(lastword $(subst /, ,$(patsubst %/Dockerfile,%,$(dockerfile)))))),undefined))
$(eval docker := ${COMPOSE_SERVICE_NAME}-$(service))
$(eval docker := $(or $(DOCKER_COMPOSE_SERVICE_NAME),$(COMPOSE_SERVICE_NAME))-$(service))
$(eval DOCKER_IMAGE := $(DOCKER_REPOSITORY)/$(service):$(DOCKER_IMAGE_TAG))
$(eval DOCKER_LABELS := SERVICE_NAME=$(docker) SERVICE_TAGS=$(call urlprefix,$(APP_PATH),,$(service).$(APP_HOST)))
$(eval DOCKER_NAME := $(docker))
+2 -2
View File
@@ -83,7 +83,7 @@ endef
# add variables definition to the .env file
define .env_update
$(call INFO,.env_update,$(env_file)$(comma) $(env_dist)$(comma) $(env_over))
touch $(env_file) $(if $(VERBOSE)$(DEBUG),,2> /dev/null)
touch $(env_file) $(if $(VERBOSE)$(DEBUG),,2> /dev/null) ||:
printenv \
|awk -F '=' 'NR == FNR { if($$1 !~ /^(#|$$)/) { A[$$1]; next } } !($$1 in A)' - $(env_dist) \
|cat $(env_over) - \
@@ -101,5 +101,5 @@ define .env_update
awk '{while(match($$0,"[$$]{[^}]*}")) {var=substr($$0,RSTART+2,RLENGTH-3);gsub("[$$]{"var"}",ENVIRON[var])} print}') \
|sed -e /^$$/d -e /^#/d \
|sort \
>> $(env_file);
>> $(env_file) $(if $(VERBOSE)$(DEBUG),,2> /dev/null) ||:;
endef