summaryrefslogtreecommitdiff
path: root/sysutils/py-overlord
diff options
context:
space:
mode:
Diffstat (limited to 'sysutils/py-overlord')
-rw-r--r--sysutils/py-overlord/Makefile64
-rw-r--r--sysutils/py-overlord/distinfo3
-rw-r--r--sysutils/py-overlord/files/pkg-message.in49
-rw-r--r--sysutils/py-overlord/pkg-descr3
-rw-r--r--sysutils/py-overlord/pkg-plist134
5 files changed, 253 insertions, 0 deletions
diff --git a/sysutils/py-overlord/Makefile b/sysutils/py-overlord/Makefile
new file mode 100644
index 000000000000..e72fbbb948fe
--- /dev/null
+++ b/sysutils/py-overlord/Makefile
@@ -0,0 +1,64 @@
+PORTNAME= overlord
+DISTVERSIONPREFIX= v
+DISTVERSION= 0.17.0
+CATEGORIES= sysutils python
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER= dtxdf@FreeBSD.org
+COMMENT= Deploy FreeBSD jails as fast as you code
+WWW= https://github.com/DtxdF/${PORTNAME}
+
+LICENSE= BSD3CLAUSE
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}aiofiles>=0:devel/py-aiofiles@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}aiostalk>=0:net/py-aiostalk@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}asciitree>=0:graphics/py-asciitree@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}click>=0:devel/py-click@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}dnspython>=0:dns/py-dnspython@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}etcd3gw>=0:devel/py-etcd3gw@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}httpx-retries>=0:www/py-httpx-retries@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}humanfriendly>=0:textproc/py-humanfriendly@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}ifaddr>=0:net/py-ifaddr@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}mako>=0:textproc/py-mako@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}psutil>=0:sysutils/py-psutil@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}pyaml-env>=0:devel/py-pyaml-env@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}pyjwt>=0:www/py-pyjwt@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}pymemcache>=0:databases/py-pymemcache@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}python-dotenv>=0:www/py-python-dotenv@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}pyyaml>=0:devel/py-pyyaml@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}supervisor>=0:sysutils/py-supervisor@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}sysctl>=0:devel/py-sysctl@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}tornado>=0:www/py-tornado@${PY_FLAVOR} \
+ beanstalkd>=0:net/beanstalkd \
+ memcached>=0:databases/memcached
+
+USES= python
+USE_GITHUB= yes
+GH_ACCOUNT= DtxdF
+USE_PYTHON= distutils
+
+NO_ARCH= yes
+
+SUB_FILES= pkg-message
+SUB_LIST= PYTHON_PKGNAMEPREFIX=${PYTHON_PKGNAMEPREFIX}
+
+PORTDOCS= README.md
+
+OPTIONS_DEFINE= DOCS
+
+post-install:
+ ${INSTALL_DATA} ${WRKSRC}/.overlord.yml ${STAGEDIR}${PREFIX}/etc/overlord.yml.sample
+ @${MKDIR} ${STAGEDIR}${DATADIR}
+ ${INSTALL_DATA} ${WRKSRC}/supervisord/supervisord.d/overlord.ini ${STAGEDIR}${DATADIR}/overlord.ini
+ @cd ${WRKSRC} && \
+ ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_ARGS} install-libexec
+ @cd ${WRKSRC} && \
+ ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_ARGS} install-manpages
+ @${MKDIR} ${STAGEDIR}/var/log/overlord
+
+post-install-DOCS-on:
+ @${MKDIR} ${STAGEDIR}/${DOCSDIR}
+ ${INSTALL_DATA} ${WRKSRC}/README.md ${STAGEDIR}/${DOCSDIR}
+
+.include <bsd.port.mk>
diff --git a/sysutils/py-overlord/distinfo b/sysutils/py-overlord/distinfo
new file mode 100644
index 000000000000..1cc0b4fb4924
--- /dev/null
+++ b/sysutils/py-overlord/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1756939559
+SHA256 (DtxdF-overlord-v0.17.0_GH0.tar.gz) = c40fdc4560ff3ea3b66b0745d944346b1fcc478977686837f94d098aaf3bfcbf
+SIZE (DtxdF-overlord-v0.17.0_GH0.tar.gz) = 98993
diff --git a/sysutils/py-overlord/files/pkg-message.in b/sysutils/py-overlord/files/pkg-message.in
new file mode 100644
index 000000000000..edfa19208e46
--- /dev/null
+++ b/sysutils/py-overlord/files/pkg-message.in
@@ -0,0 +1,49 @@
+[
+{ type: install
+ message: <<EOM
+The configuration file can be found at the following path:
+ %%PREFIX%%/etc/overlord.yml
+Edit it to suit your needs before starting the Overlord services.
+
+1. If you have configured Overlord to use Beanstalkd and Memcache locally (by default),
+ you need to start those services.
+
+ - enable required services:
+ # sysrc beanstalkd_enable=YES
+ # sysrc memcached_enable=YES
+
+ - start required services:
+ # service beanstalkd start
+ # service memcached start
+
+2. If you have not installed Director or AppJail from the development repository and
+ prefer to install them from precompiled binaries:
+
+ - install Director:
+ # pkg install %%PYTHON_PKGNAMEPREFIX%%director
+
+ - install AppJail:
+ # pkg install -y appjail # or appjail-devel
+
+3. Set up supervisord in order to execute Overlord services:
+ - Some processes may rely on the assumption that rctl(4) is enabled, if it is not
+ already enabled, please enable it by adding to /boot/loader.conf:
+kern.racct.enable=1
+
+ Remember to reboot for the above change take effect.
+
+ - let supervisord.conf load files contained in this directory by adding to
+ %%PREFIX%%/etc/supervisord.conf:
+[include]
+files = %%DATADIR%%/overlord.ini
+
+ - enable supervisord:
+ # sysrc supervisord_enable=YES
+
+ - start supervisord:
+ # service supervisord start
+
+4. Enjoy.
+EOM
+}
+]
diff --git a/sysutils/py-overlord/pkg-descr b/sysutils/py-overlord/pkg-descr
new file mode 100644
index 000000000000..87bb391f289c
--- /dev/null
+++ b/sysutils/py-overlord/pkg-descr
@@ -0,0 +1,3 @@
+Overlord is a fast, distributed orchestrator for FreeBSD jails
+oriented to GitOps. You define a file with the service intended to
+run on your cluster and deployment takes seconds to minutes.
diff --git a/sysutils/py-overlord/pkg-plist b/sysutils/py-overlord/pkg-plist
new file mode 100644
index 000000000000..af60a66674b2
--- /dev/null
+++ b/sysutils/py-overlord/pkg-plist
@@ -0,0 +1,134 @@
+@sample(root,wheel,064) etc/overlord.yml.sample
+@dir /var/log/overlord
+libexec/overlord/safe-exc.sh
+libexec/overlord/vm-install-from-appjail-image.sh
+libexec/overlord/vm-install-from-components.sh
+libexec/overlord/vm-start.sh
+libexec/overlord/create.py
+share/man/man1/overlord.1.gz
+share/man/man5/overlord-spec.5.gz
+%%DATADIR%%/overlord.ini
+bin/overlord
+%%PYTHON_SITELIBDIR%%/overlord/__init__.py
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/__init__%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/__init__%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/cache%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/cache%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/chains%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/chains%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/client%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/client%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/config%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/config%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/dataplaneapi%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/dataplaneapi%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/default%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/default%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/director%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/director%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/environment%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/environment%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/etcd%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/etcd%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/exceptions%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/exceptions%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/jail%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/jail%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/jwt%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/jwt%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/metadata%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/metadata%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/process%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/process%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/queue%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/queue%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/signals%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/signals%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/skydns%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/skydns%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/sysexits%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/sysexits%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/tornado%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/tornado%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/trap%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/trap%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/util%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/util%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/version%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/version%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/vm%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/overlord/__pycache__/vm%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/overlord/cache.py
+%%PYTHON_SITELIBDIR%%/overlord/chains.py
+%%PYTHON_SITELIBDIR%%/overlord/client.py
+%%PYTHON_SITELIBDIR%%/overlord/commands/__init__.py
+%%PYTHON_SITELIBDIR%%/overlord/commands/__pycache__/__init__%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/overlord/commands/__pycache__/__init__%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/overlord/commands/__pycache__/apply%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/overlord/commands/__pycache__/apply%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/overlord/commands/__pycache__/cancel%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/overlord/commands/__pycache__/cancel%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/overlord/commands/__pycache__/config%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/overlord/commands/__pycache__/config%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/overlord/commands/__pycache__/destroy%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/overlord/commands/__pycache__/destroy%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/overlord/commands/__pycache__/info%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/overlord/commands/__pycache__/info%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/overlord/commands/__pycache__/logs%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/overlord/commands/__pycache__/logs%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/overlord/commands/__pycache__/poll%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/overlord/commands/__pycache__/poll%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/overlord/commands/__pycache__/serve%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/overlord/commands/__pycache__/serve%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/overlord/commands/__pycache__/spec%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/overlord/commands/__pycache__/spec%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/overlord/commands/__pycache__/token%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/overlord/commands/__pycache__/token%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/overlord/commands/__pycache__/watch%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/overlord/commands/__pycache__/watch%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/overlord/commands/apply.py
+%%PYTHON_SITELIBDIR%%/overlord/commands/cancel.py
+%%PYTHON_SITELIBDIR%%/overlord/commands/config.py
+%%PYTHON_SITELIBDIR%%/overlord/commands/destroy.py
+%%PYTHON_SITELIBDIR%%/overlord/commands/info.py
+%%PYTHON_SITELIBDIR%%/overlord/commands/logs.py
+%%PYTHON_SITELIBDIR%%/overlord/commands/poll.py
+%%PYTHON_SITELIBDIR%%/overlord/commands/serve.py
+%%PYTHON_SITELIBDIR%%/overlord/commands/spec.py
+%%PYTHON_SITELIBDIR%%/overlord/commands/token.py
+%%PYTHON_SITELIBDIR%%/overlord/commands/watch.py
+%%PYTHON_SITELIBDIR%%/overlord/config.py
+%%PYTHON_SITELIBDIR%%/overlord/dataplaneapi.py
+%%PYTHON_SITELIBDIR%%/overlord/default.py
+%%PYTHON_SITELIBDIR%%/overlord/director.py
+%%PYTHON_SITELIBDIR%%/overlord/environment.py
+%%PYTHON_SITELIBDIR%%/overlord/etcd.py
+%%PYTHON_SITELIBDIR%%/overlord/exceptions.py
+%%PYTHON_SITELIBDIR%%/overlord/jail.py
+%%PYTHON_SITELIBDIR%%/overlord/jwt.py
+%%PYTHON_SITELIBDIR%%/overlord/metadata.py
+%%PYTHON_SITELIBDIR%%/overlord/process.py
+%%PYTHON_SITELIBDIR%%/overlord/queue.py
+%%PYTHON_SITELIBDIR%%/overlord/signals.py
+%%PYTHON_SITELIBDIR%%/overlord/skydns.py
+%%PYTHON_SITELIBDIR%%/overlord/spec/__init__.py
+%%PYTHON_SITELIBDIR%%/overlord/spec/__pycache__/__init__%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/overlord/spec/__pycache__/__init__%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/overlord/spec/__pycache__/app_config%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/overlord/spec/__pycache__/app_config%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/overlord/spec/__pycache__/director_project%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/overlord/spec/__pycache__/director_project%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/overlord/spec/__pycache__/metadata%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/overlord/spec/__pycache__/metadata%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/overlord/spec/__pycache__/vm_jail%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/overlord/spec/__pycache__/vm_jail%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/overlord/spec/app_config.py
+%%PYTHON_SITELIBDIR%%/overlord/spec/director_project.py
+%%PYTHON_SITELIBDIR%%/overlord/spec/metadata.py
+%%PYTHON_SITELIBDIR%%/overlord/spec/vm_jail.py
+%%PYTHON_SITELIBDIR%%/overlord/sysexits.py
+%%PYTHON_SITELIBDIR%%/overlord/tornado.py
+%%PYTHON_SITELIBDIR%%/overlord/trap.py
+%%PYTHON_SITELIBDIR%%/overlord/util.py
+%%PYTHON_SITELIBDIR%%/overlord/version.py
+%%PYTHON_SITELIBDIR%%/overlord/vm.py