derive the certificates a server needs from what it routes
The hostnames are already declared, once, in the fabio route tags. A domains.txt would be a second source of truth free to disagree with what is actually served, so myos cert reads the tags instead and decides on its own which name needs a wildcard: one is asked for where a tag uses one, and it absorbs the concrete names it covers. A wildcard covers a single label, so a.b.example.org keeps its own certificate. dehydrated issues them: a shell script, no python, which fits a tool that has to install on any server. It answers http-01 itself on a port bound to the loopback and routed by fabio, and delegates dns-01 to a provider hook. The deploy hook writes the two file names fabio watches for, through a temporary name so fabio never reads half a certificate. Fixed on the way: the port parser wanted six spaces of indentation and the catalogue writes four, so every stack that binds its ports was reported unbound.
This commit is contained in:
@@ -19,7 +19,7 @@ done
|
||||
MYOS_ROOT=$(cd "$(dirname "$_self")/.." && pwd -P)
|
||||
export MYOS_ROOT
|
||||
|
||||
for _m in core str var tags naming stack config compose hooks context expose; do
|
||||
for _m in core str var tags naming stack config compose hooks context expose cert; do
|
||||
# shellcheck source=/dev/null
|
||||
. "$MYOS_ROOT/lib/$_m.sh"
|
||||
done
|
||||
@@ -70,6 +70,7 @@ Commands:
|
||||
export every setting of the stacks, as KEY=value
|
||||
env-update fill .env from the .env.dist templates
|
||||
expose [--strict] what the stacks publish, and to whom
|
||||
cert list|issue|renew|show certificates, derived from the routes
|
||||
doctor check the installation
|
||||
version print the myos version
|
||||
|
||||
@@ -148,6 +149,16 @@ for _c in $MYOS_CMDS; do
|
||||
done
|
||||
MYOS_CMDS=$_cmds
|
||||
|
||||
# cert takes a subcommand where the others take only stacks
|
||||
case $MYOS_CMDS in
|
||||
*cert*)
|
||||
case ${MYOS_REFS%% *} in
|
||||
list|domains|issue|renew|show)
|
||||
MYOS_VARS=${MYOS_REFS%% *}
|
||||
case $MYOS_REFS in *' '*) MYOS_REFS=${MYOS_REFS#* } ;; *) MYOS_REFS= ;; esac ;;
|
||||
esac ;;
|
||||
esac
|
||||
|
||||
# env, ls and doctor take variable names where the others take stacks
|
||||
case $MYOS_CMDS in
|
||||
env|ls|doctor)
|
||||
|
||||
Reference in New Issue
Block a user