diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..6f8585b --- /dev/null +++ b/.drone.yml @@ -0,0 +1,23 @@ +--- +kind: pipeline +type: docker +name: powerdns + +steps: + +- name: deploy_local + pull: never + image: ${DCAPE_COMPOSE} + commands: + - . setup config + - make update + volumes: + - name: dockersock + path: /var/run/docker.sock + +volumes: +- name: dockersock + host: + path: /var/run/docker.sock + +# docker run powerdns pdnsutil check-zone diff --git a/Makefile b/Makefile index 308d787..ed4b49c 100644 --- a/Makefile +++ b/Makefile @@ -1,32 +1,75 @@ -SHELL = /bin/bash -CFG=.env -SOURCES=$(wildcard *.sql) -OBJECTS=$(SOURCES:.sql=.done) +SHELL = /bin/sh +CFG =.env -all: $(CFG) $(OBJECTS) +SOURCES ?= $(wildcard *.sql) +OBJECTS = $(SOURCES:.sql=.done) +OBJECTSDIRECT = $(SOURCES:.sql=.direct) -up: all +# ------------------------------------------------------------------------------ +# шаблон файла .env + +define CONFIG_DEF +# dcape-dns config file, generated by make $(CFG) + +# Postgresql container name (access via docker) +PG_CONTAINER=dcape_db_1 + +# PowerDNS DB user name +PGUSER=pdns + +# PowerDNS DB name +PGDATABASE=pdns + +# Used ONLY for direct DB access without docker (start-direct) +PGPASSWORD= + +endef +export CONFIG_DEF + +all: help + +# ------------------------------------------------------------------------------ + +-include $(CFG) +export + +# ------------------------------------------------------------------------------ +# dcape v1 comparibility + +start-hook: update + +start-direct: update-direct + +stop: + +$(CFG): $(CFG).sample + @[ -f $@ ] || cp $< $@ + +# ------------------------------------------------------------------------------ + +update: $(OBJECTS) %.done: %.sql @echo "*** $< ***" - @cat $< | docker exec -i $$PG_CONTAINER psql -U $$PG_USER > $@ + @csum=$$(md5sum $< | sed 's/ .*//') ; \ + cat $< | docker exec -i $$PG_CONTAINER psql -U $$PGUSER -d $$PGDATABASE -vcsum=$$csum > $@ + +# ------------------------------------------------------------------------------ + +update-direct: $(CFG) $(OBJECTSDIRECT) + +%.direct: %.sql + @echo "*** $< ***" + @source $(CFG) && cat $< | PGPASSWORD=$$PGPASSWORD psql -h localhost -U $$PGUSER > $@ + +# ------------------------------------------------------------------------------ clean: rm -rf *.done -# шаблон файла .env - -define CONFIG_DEF -# dcape-dns-config $(CFG) file, generated by make $(CFG) - -# Postgresql container name -PG_CONTAINER=dcape_db_1 - -# PowerDNS DB user (and database) name -PG_USER=dns -endef -export CONFIG_DEF - -$(CFG): +$(CFG).sample: @echo "*** $@ ***" - @[ -f $@ ] || { echo "$$CONFIG_DEF" > $@ ; echo >&2 "Warning: Created default $@" ; } + @[ -f $@ ] || echo "$$CONFIG_DEF" > $@ + +## generate sample config +config: $(CFG).sample