60 Commits

Author SHA1 Message Date
d4aa21b680 change dockerfile to wiki-cafe version of passportjs repo
All checks were successful
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is passing
2024-09-20 22:09:23 -04:00
4c286521eb update to latest wiki version
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2024-09-18 16:39:53 +00:00
9e349de285 update wiki version
All checks were successful
continuous-integration/drone/push Build is passing
2024-07-19 14:22:34 +00:00
3wc
6d356d4af6 auto_tag: true
[ci skip]
2023-12-05 14:43:19 -03:00
3wc
8bbf4369cd Reinstate unwelcome manual Grunt step
All checks were successful
continuous-integration/drone/push Build is passing
2023-11-17 21:42:30 +00:00
3wc
7dddc84ff0 Drop forked node-oauth, upgrade to wiki 0.31
All checks were successful
continuous-integration/drone Build is passing
2023-11-17 21:29:06 +00:00
3wc
cbc0d0a5d7 Install forked version of node-oauth to fix OAuth2
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-07 19:15:14 -08:00
3wc
20329546d2 Switch to git.coopcloud.tech URL 2022-12-07 16:59:14 -08:00
3wc
d7892255ee Restore previous YOLOing-patched-wiki-security-passportjs
All checks were successful
continuous-integration/drone/push Build is passing
2022-11-22 19:29:54 -08:00
3wc
f2053f9314 Fix repo setting to fix Docker build?
All checks were successful
continuous-integration/drone/push Build is passing
2022-11-22 13:26:32 -08:00
3wc
00be948c9b Try flipping settings order to fix registry
Some checks failed
continuous-integration/drone/push Build is failing
2022-11-22 13:25:02 -08:00
3wc
0f45783feb Set custom registry for docker build
Some checks failed
continuous-integration/drone/push Build is failing
2022-11-22 13:18:55 -08:00
3wc
8645ae54f8 Automatically build images using Drone
Some checks failed
continuous-integration/drone Build is failing
2022-11-22 12:42:56 -08:00
6eea65be60 lower the k8s experiment instructions on the pages
The change in README aims to make the tagging, building, publishing
instructions together as an offer for docker savvy folks to take
control of their own docker images and publishing flows.

Also expecting a bump in versions to bring in a patch update to
wiki-client
2022-10-05 11:52:13 -06:00
6eb8631f9e add add'l docker build instructions 2022-09-24 11:33:15 -06:00
502d6ccec7 add add'l docker build instructions 2022-09-24 11:22:42 -06:00
cb3aa63370 upgrade to wiki 0.28.0 2022-09-24 11:13:27 -06:00
e59495665c upgrade to wiki 0.27.0 2021-11-23 20:55:33 -07:00
fb79fe0dc8 upgrade to wiki 0.25.0 2021-10-09 17:54:38 -06:00
bd2619a14b upgrade to wiki 0.24.0 2021-04-24 10:10:40 -06:00
54f1c382f5 recent browsers do the right thing with *.localhost
with this update we can remove the last mention of localtest.me
2021-02-28 13:46:36 -07:00
218128db23 Improve development docs
We've learned how to use kubectl patch for local testing

We've also abandoned the automation between github and dockerhub
because we publish updates with sufficient irregularity that it is
better if we take the steps more manually and verify each as we go.
2021-02-28 13:40:10 -07:00
6f9ed1279c upgrade to wiki 0.23.0 + wiki-client 0.23.0 with feeling
previous attempt didn't actually install the new wiki-client
fixed the previous single & between cd and npm install --save
2021-02-28 13:30:18 -07:00
2ff3dcad1e correct wiki-client version number 2021-02-28 09:57:40 -07:00
eab72db590 Move release notes for 1.0.0 into its own file 2021-02-28 09:31:17 -07:00
04c3ba7fe1 upgrade wiki-client to v0.23.0 2021-02-28 09:19:18 -07:00
8d7d0e5119 upgrade to wiki@0.23 2021-02-28 09:10:10 -07:00
1cf4d8e6ae moved example k8s deployment .yaml to deploy.wiki.do 2021-01-18 00:10:15 -07:00
2705d760bf rename default branch to main 2021-01-10 16:11:53 -07:00
ad1c5af0d8 change domain names in kubernetes example to use localhost
Now that both chrome and firefox understand *.localhost domains we can
remove our suggestion of using localtest.me subdomains.

Also update the brew install instructions now that brew cask install
is deprecated in favor of brew install --cask

My favorite improvement is finding a way to use yaml block labels and
references to reduce the duplication in the ingress config.

I suppose the last important thing to mention about this changes is
that k3d seems to have switched from traefik to nginx for its ingress
loadbalancer. We no longer need the traefik annotation.
2021-01-10 16:05:24 -07:00
b2b868f0be upgrade to wiki@0.22 2021-01-10 15:59:46 -07:00
aa23f2f9b3 version 1.0.6 2020-08-29 12:44:03 -06:00
517e7b3e6a Upgrade to wiki 0.21.2 2020-08-29 12:42:28 -06:00
d5b43b160a add NPM_CONFIG_PREFIX environment variable
Should remove one step from the instructions for developing plugins.
It's a step I consistently miss in my haste to get on with the hacking
and don't notice myself skip.
2020-08-29 12:37:30 -06:00
f94133b505 bump to wiki-client@0.20.1 and wiki-server@0.17.5 2020-04-19 17:35:00 -06:00
60c869a141 Anticipating next wiki release with updates to wiki-client & -server 2020-02-17 09:55:38 -07:00
347dff8ea8 Clarify our use versions and improve guidance for tagging
git push --tags sends all the tags to the server.
git push origin <tag> sends only the new tag to the server.
2020-02-06 09:08:06 -07:00
82dacc05d9 Upgrade to wiki 0.21.0 2020-02-06 08:56:49 -07:00
f67be8dbb8 Install and unseal vault for experiments with secrets management 2020-01-20 00:19:05 -07:00
c4bd44f3f4 Provide example farm configuration for friends security plugin 2020-01-19 15:22:03 -07:00
9d83a6768d Ensure localhost is included in k8s cluster TLS cert
See explanation here:
https://github.com/rancher/k3d/issues/143\#issuecomment-552634281

--server-arg passes the --tls-san=... argument through to k3s server.
Docs for that arg are here:
https://rancher.com/docs/k3s/latest/en/installation/install-options/
2020-01-19 15:13:24 -07:00
45dbb893d1 Simplest wiki command that could possibly work
Now that we've figured out how to mount local directories into the k8s
cluster, we have moved all the configuration into ~/.wiki-k8s/config.json
2020-01-19 15:11:12 -07:00
eaa86fd867 Simplify persistence configuration & expose macos folders
We now map ~/.wiki-k8s in MacOS into the .wiki folder inside the
container and similarly with MacOS ~/workspace/fedwiki

First, when we create the k3d cluster, we include directives that are
passed through to docker to mount the MacOS directories into the
kubernetes host.

Second, we use hostPath volumes in the kubernetes deployment config.

These will work great for the primary use case of a local wiki.
Deployments to remote kubernetes clusters will want to do this with
the PersistentVolumeClaim that was removed with this change.

One luxury of using hostPath and the legacy_security is that we no
longer require an init container.
2020-01-12 19:29:41 -07:00
37d6785ee2 Change the insecure wiki to a farm for *.simple.localtest.me 2020-01-12 16:55:14 -07:00
27a80c7b25 Start an insecure wiki under simple.localtest.me
Bootstrapping a simpler development environment
2020-01-12 15:30:42 -07:00
1eb8c99d2c Upgrade to wiki 0.20.0 2020-01-09 22:41:29 -07:00
5c326ed1ae Add help to remember how to start all the things 2019-12-25 13:08:08 -07:00
fb2aa0f67c Add example kubernetes deployment
This configuration partially works with kubernetes 1.15 running
locally using Docker Desktop for Mac and kind (k8s in docker).

For completeness, we installed kind & created a cluster like this:

    cd /tmp/ && GO111MODULE="on" go get sigs.k8s.io/kind
    kind create cluster --name workshop
    export KUBECONFIG="$(kind get kubeconfig-path --name="workshop")"

We describe finicky details discovered while creating wiki.yaml.

The persistent volume when mounted in wiki-config begins its life with
all files owned by root. This prevented our node user inside the
container from creating the config files inside .wiki. It took a while
to discover the correct securityContext for the wiki-config container.

We tested this configuration as follows:

    alias k=kubectl
    k apply -f wiki.yaml
    export POD=$(k get pod -lapp=wiki -o jsonpath='{.items[*].metadata.name}')
    export PASSWORD=$(k exec svc/wiki-service -- jq -r .admin .wiki/config.json)
    k port-forward svc/wiki-service 3000:80 > /dev/null &
    pbcopy <<<"$PASSWORD"
    open http://localhost:3000
    # click lock icon in the browser to login to wiki page
    # paste the password from the clipboard
    # click wiki to toggle editing on
    # make a few edits to the wiki page

Something about authentication is NOT working for anything except
localhost. When we try the same tests using http://localtest.me or
configuring foo.local in the MacOS /etc/hosts file, for some reason
the cookies don't seem to be passed through to the server. All edits
on other pages end up in browser localStorage.

Nevertheless, I'll commit what I have for now.
2019-11-22 12:24:34 -07:00
fb81d51e29 Use default node user & dumb-init & remove config assumptions
By default the wiki will run in farm mode with friends security
2019-11-16 16:49:43 -07:00
5e6f732fed Bump wiki to version 0.19.0 2019-08-14 12:07:10 -04:00
f85afce8c8 Change base image to node:10-alpine & wiki to 0.17.0 2019-03-27 22:26:09 -06:00
76280f3e7b Update wiki to 0.16.2 2019-03-11 08:00:53 -06:00
356afda8a7 Update wiki version for security fix 2018-11-27 21:10:15 -08:00
e9bd94e860 remind myself how to publish plugin experiments 2018-02-28 08:23:21 -07:00
b0be20f5f3 point to local-farm.wiki.dbbs.co instead 2018-02-25 22:32:46 -07:00
26329ee584 upgrade to wiki-0.14.0 and move configure-wiki to separate step
We should only need to run the configure-wiki script once instead of
every time we start the container.  Also, I don't think that script
was correctly handling PID 1 role (e.g. don't think we forwarded
signals to node nor reaped zombies)
2018-02-25 21:58:43 -07:00
e37d746c69 upgrade to node-8 and to wiki-0.13.0 2017-12-11 08:02:50 -07:00
86548c594a upgrade to wiki 0.12.2
includes update to client and several plugins:
calendar, markdown, and html
2017-11-06 18:00:57 -07:00
ef34fdc759 enable github-based npm packages for WIKI_PACKAGE
npm needs git installed in order to install packages from github
2017-10-02 07:10:55 -06:00
e22b66240d enabled building scoped packages & bumped version to 0.12.1 2017-09-20 17:50:00 -06:00
11 changed files with 402 additions and 179 deletions

14
.drone.yml Normal file
View File

@ -0,0 +1,14 @@
---
kind: pipeline
name: publish docker image
steps:
- name: build and publish
image: plugins/docker
settings:
username: 3wordchant
password:
from_secret: git_coopcloud_tech_token_3wc
repo: git.coopcloud.tech/wiki-cafe/wiki-farm
auto_tag: true
tags: latest
registry: git.coopcloud.tech

View File

@ -1,19 +1,35 @@
FROM node:4-slim
FROM node:lts-alpine
RUN apk add --update --no-cache \
dumb-init \
git \
jq
WORKDIR "/home/node"
ARG WIKI_PACKAGE=wiki@0.37.0
USER node
RUN npm install -g --prefix . $WIKI_PACKAGE
RUN cd lib/node_modules/wiki/node_modules && \
rm -r wiki-security-passportjs && \
git clone https://git.coopcloud.tech/wiki-cafe/wiki-security-passportjs.git
RUN cd lib/node_modules/wiki/node_modules/wiki-security-passportjs && \
npm install && \
node_modules/grunt/bin/grunt
RUN mkdir -p .wiki
VOLUME "/home/node/.wiki"
RUN useradd --create-home app \
&& apt-get update \
&& apt-get install -y --no-install-recommends \
jq
WORKDIR /home/app
ARG VERSION=0.12.0
RUN su app -c "npm install -g --prefix . wiki@$VERSION"
RUN su app -c "mkdir .wiki"
COPY configure-and-launch-wiki set-owner-name ./
RUN chown app configure-and-launch-wiki set-owner-name
VOLUME "/home/app/.wiki"
ENV DOMAIN=localhost
ENV OWNER_NAME="The Owner"
ENV COOKIE=insecure
EXPOSE 3000
USER app
CMD ["./configure-and-launch-wiki"]
ENV PATH="${PATH}:/home/node/bin"
ENV NPM_CONFIG_PREFIX="${HOME}"
ENTRYPOINT ["dumb-init"]
CMD ["wiki", "--farm"]

View File

@ -1,59 +1,61 @@
# Federated Wiki Farm
http://fed.wiki.org
Start Playing Federated Wiki: http://start.fed.wiki
### Get acquainted with wiki.
### Run a local wiki farm
Launch the container:
``` bash
docker run -p 3000:3000 -it --rm \
dobbs/farm
```
docker run -p 3000:3000 -it --rm \
dobbs/farm
Visit http://localhost:3000
Visit http://localhost:3000 and http://anything.localhost:3000
### Make your wiki survive a reboot
### Run a local wiki that will survive a reboot
Create a volume:
docker run -p 3000:3000 -it --rm \
-v ~/.wiki:/home/node/.wiki \
dobbs/farm
``` bash
docker volume create dot-wiki
```
Launch the container:
``` bash
docker run -p 3000:3000 -it --rm \
-v dot-wiki:/home/app/.wiki \
dobbs/farm
```
Visit http://localhost:3000
### Make your wiki a local farm
We're going to use http://localtest.me instead of localhost for our
domain name. See http://readme.localtest.me for more info.
Let's also use a different volume for this one:
``` bash
docker volume create localtest.me
```
Specify the domain name when you launch your wiki
``` bash
docker run -p 3000:3000 -it --rm \
-v localtest.me:/home/app/.wiki \
-e DOMAIN=localtest.me \
dobbs/farm
```
Open http://this.localtest.me:3000 in one tab.
Open http://that.localtest.me:3000 in another.
Your wiki pages and configuration will be saved in the ~/.wiki folder.
# Development
This image's tag does not match the version of the included wiki
software. Our version indicates the scale of changes in this tiny
devops pipeline.
Testing new images locally:
``` bash
VERSION=0.12.0
docker build --build-arg VERSION=$VERSION -t dobbs/farm:$VERSION .
git tag -am "" $VERSION
TAG=1.0.14-prefer-title
IMAGE=dobbs/farm:$TAG
docker build --tag $IMAGE .
```
# Publish containers
GitHub
``` bash
git tag -am "" "$TAG"
git push --atomic origin main "$TAG"
```
Docker Hub
``` bash
docker build --tag $IMAGE . # if you haven't already
docker build --tag dobbs/farm:latest . # if you haven't already
docker push $IMAGE
docker push dobbs/farm:latest
```
# Experiment with K8S
With the local kubernetes example (see [examples/k8s/README.md](./examples/k8s/README.md)):
``` bash
k3d image import $IMAGE --cluster wiki
kubectl patch deployment.apps/wiki-deployment \
--type='json' \
-p='[{"op": "replace", "path": "/spec/template/spec/containers/0/image", "value":"'$IMAGE'"}]'
```

15
RELEASE-NOTES-1.0.0.md Normal file
View File

@ -0,0 +1,15 @@
# Release Notes for 1.0.0
This is a significant **breaking** change from pre-1.0 releases. Especially:
* changed the user from `app` (`uid=1001(app) gid=1001(app) groups=1001(app)`)
to `node` (`uid=1000(node) gid=1000(node) groups=1000(node),1000(node)`)
* no longer installing `bash`, `configure-wiki`, nor `set-owner-name`
* no longer creating `/home/app/.wiki/wiki.json`
Those changes in particular will impose some work on authors upgrading
from previous versions.
The last non-breaking revision is 0.52.0 https://github.com/dobbs/farm/tree/0.52.0#readme

View File

@ -1,77 +0,0 @@
#!/bin/bash -eu
set -o pipefail
main() {
initialize-environment-vars
assert-file-privileges || report-errors-and-exit
ensure-owner-file
ensure-config-file
show-configs
exec-wiki
}
initialize-environment-vars() {
ERRORS=''
readonly OWNER_FILE=/home/app/.wiki/$DOMAIN.owner.json
readonly CONFIG_FILE=/home/app/.wiki/config.json
}
assert-file-privileges() {
[ -w /home/app/.wiki ] \
|| ERRORS="app cannot write to /home/app/.wiki\n${ERRORS}"
[ ${#ERRORS} == 0 ]
}
report-errors-and-exit() {
echo -e $ERRORS
echo "exiting."
exit 1
}
ensure-owner-file() {
if [ ! -r "$OWNER_FILE" ]; then
jq -n --arg name "$OWNER_NAME" --arg secret $(random-string) \
'.name = $name | .friend.secret = $secret' > $OWNER_FILE
fi
}
ensure-config-file() {
if [ ! -r "$CONFIG_FILE" ]; then
> $CONFIG_FILE \
jq -n -M \
--arg admin $(jq -r .friend.secret $OWNER_FILE) \
--arg random $(random-string) \
--arg cookie $COOKIE \
--arg domain $DOMAIN \
--arg owner $OWNER_FILE \
'
.admin = $admin
| .autoseed = true
| .farm = true
| .cookieSecret = $random
| .secure_cookie = ("secure" == $cookie)
| .security_type = "friends"
| .wikiDomains[$domain].id = "/home/app/.wiki/\($domain).owner.json"
'
fi
}
random-string() {
node -e 'console.log(require("crypto").randomBytes(64).toString("hex"))'
}
show-configs() {
set -x
ls -l $OWNER_FILE $CONFIG_FILE
cat $OWNER_FILE
cat $CONFIG_FILE
set +x
}
exec-wiki() {
exec /home/app/bin/wiki
}
main

56
examples/k8s/README.md Normal file
View File

@ -0,0 +1,56 @@
# Wiki Farm in Kubernetes
There are easier ways to get started with federated wiki. Here we are
using wiki to drive some learning about kubernetes.
# We're using MacOS, Docker Desktop, and k3d
brew install --cask docker
brew install k3d
mkdir -p ~/.wiki-k8s ~/workspace/fedwiki
k3d create \
--server-arg --tls-san="127.0.0.1" \
--publish 80:80 \
-v "$HOME/.wiki-k8s:/macos/.wiki-k8s" \
-v "$HOME/workspace/fedwiki:/macos/fedwiki" \
--name wiki
# example ~/.wiki-k8s/config.json
{
"admin": "any memorable password",
"autoseed": true,
"farm": true,
"cookieSecret": "any random string",
"secure_cookie": false,
"security_type": "friends",
"wikiDomains": {
"localhost": {
"id": "/home/node/.wiki/localhost.owner.json"
},
"example.com": {
"id": "/home/node/.wiki/example.com.owner.json"
}
}
}
# example ~/.wiki-k8s/localhost.owner.json
`.friend.secret` must match the `.admin` field from `config.json`
{
"name": "The Owner",
"friend": {
"secret": "any memorable password"
}
}
# Deploy Wiki
kubectl apply -f http://deploy.wiki.do/assets/wiki/wiki.yaml
# Play with the wiki
open http://wiki.localhost

View File

@ -0,0 +1,29 @@
# HashiCorp Vault in kubernetes
HashiCorp recomend installing vault via helm. Your author prefers
plain old kubernetes configs.
So we generated the yaml via helm's template command.
helm template incubator/vault \
--name-template=vault \
--replicaCount=1 \
--set vault.dev=false \
--set vault.config.storage.file.path=/macos/.wiki-k8s/vault \
| egrep -v 'heritage: "?Helm"?' \
> vault.html
kubectl apply -k .
kubectl port-forward svc/vault 8200:8200 &> /dev/null &
export VAULT_ADDR=http://127.0.0.1:8200
vault status
vault operator init
vault operator unseal
# paste key-fragment 1
vault operator unseal
# paste key-fragment 2
vault operator unseal
# paste key-fragment 3
vault login
# paste root token

View File

@ -0,0 +1,16 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: vault
spec:
template:
spec:
containers:
- name: vault
volumeMounts:
- name: vault-data
mountPath: /macos/.wiki-k8s/vault
volumes:
- name: vault-data
hostPath:
path: /macos/.wiki-k8s/vault

View File

@ -0,0 +1,10 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
images:
- name: vault
newName: vault
newTag: 1.3.1
resources:
- vault.yaml
patchesStrategicMerge:
- deployment-volumes.yaml

View File

@ -0,0 +1,181 @@
---
# Source: vault/templates/clusterrolebinding.yaml
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: vault
labels:
app: vault
release: "vault"
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: system:auth-delegator
subjects:
- kind: ServiceAccount
name: vault
namespace: default
---
# Source: vault/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: "vault-config"
labels:
app: "vault"
release: "vault"
data:
config.json: |
{"listener":{"tcp":{"address":"[::]:8200","cluster_address":"[::]:8201","tls_disable":true}},"storage":{"file":{"path":"/macos/.wiki-k8s/vault"}}}
---
# Source: vault/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: vault
labels:
app: vault
release: vault
annotations:
{}
spec:
selector:
matchLabels:
app: vault
release: vault
replicas: 1
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
template:
metadata:
labels:
app: vault
release: vault
annotations:
checksum/config: 6868eb00aa48ca9485c365c3523ae431e7031233a1c046817a32c61e24ea817d
spec:
containers:
- name: vault
image: "vault:1.2.3"
imagePullPolicy: IfNotPresent
command: ["vault", "server", "-config", "/vault/config/config.json"]
ports:
- containerPort: 8200
name: api
- containerPort: 8201
name: cluster-address
livenessProbe:
# Alive if Vault is successfully responding to requests
httpGet:
path: /v1/sys/health?standbyok=true&uninitcode=204&sealedcode=204&
port: 8200
scheme: HTTP
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
# Ready depends on preference
httpGet:
path: /v1/sys/health?standbycode=204&uninitcode=204&
port: 8200
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 10
securityContext:
readOnlyRootFilesystem: true
capabilities:
add:
- IPC_LOCK
env:
- name: POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: VAULT_API_ADDR
value: "http://$(POD_IP):8200"
- name: VAULT_CLUSTER_ADDR
value: "https://$(POD_IP):8201"
- name: VAULT_LOG_LEVEL
value: "info"
resources:
{}
volumeMounts:
- name: vault-config
mountPath: /vault/config/
- name: vault-root
mountPath: /root/
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- podAffinityTerm:
labelSelector:
matchLabels:
app: 'vault'
release: 'vault'
topologyKey: kubernetes.io/hostname
weight: 100
serviceAccountName: vault
volumes:
- name: vault-config
configMap:
name: "vault-config"
- name: vault-root
emptyDir: {}
---
# Source: vault/templates/pdb.yaml
apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
name: vault
spec:
maxUnavailable: 1
selector:
matchLabels:
app: vault
release: vault
---
# Source: vault/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
name: vault
labels:
app: vault
release: vault
spec:
type: ClusterIP
ports:
- port: 8200
protocol: TCP
targetPort: 8200
name: api
selector:
app: vault
release: vault
---
# Source: vault/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: vault
labels:
app: vault
release: "vault"
---
# Source: vault/templates/tests/test-vault-status.yaml
apiVersion: v1
kind: Pod
metadata:
name: "vault-vault-status-test"
annotations:
"helm.sh/hook": test-success
spec:
containers:
- name: vault-vault-status-test
image: "vault:1.2.3"
env:
- name: VAULT_ADDR
value: http://vault.default:8200
command: ["sh", "-c", "vault status"]
restartPolicy: Never

View File

@ -1,39 +0,0 @@
#!/bin/bash -eu
set -o pipefail
usage() {
cat <<EOF
Usage: $(basename $0) NAME
replaces the owner's name in $OWNER_FILE
EOF
}
main() {
initialize-environment-vars $@ || { usage; exit 1; }
backup-and-save-name
report-success
}
initialize-environment-vars() {
readonly OWNER_FILE=/home/app/.wiki/$DOMAIN.owner.json
readonly OWNER_BACKUP_FILE=$OWNER_FILE-saved-$(date --iso-8601=minutes)
readonly NAME=${@:-missing}
[ ! "$NAME" == "missing" ]
}
backup-and-save-name() {
mv $OWNER_FILE $OWNER_BACKUP_FILE
jq ".name = \"$NAME\"" $OWNER_BACKUP_FILE > $OWNER_FILE
}
report-success() {
cat <<EOF
Owner's name changed to "$NAME"
Previous config is saved in ${OWNER_BACKUP_FILE##$PWD/}
EOF
}
main "$@"