render "join" script into config map
This commit is contained in:
parent
3d2b4ab8d6
commit
4757f2f762
|
@ -50,3 +50,15 @@ spec:
|
||||||
- 8.8.4.4
|
- 8.8.4.4
|
||||||
#http_proxy: http://proxy.example.com:8080
|
#http_proxy: http://proxy.example.com:8080
|
||||||
#https_proxy: https://proxy.example.com:8080
|
#https_proxy: https://proxy.example.com:8080
|
||||||
|
---
|
||||||
|
apiVersion: promenade/v1
|
||||||
|
kind: Versions
|
||||||
|
metadata:
|
||||||
|
cluster: example
|
||||||
|
name: example
|
||||||
|
target: all
|
||||||
|
spec:
|
||||||
|
images:
|
||||||
|
promenade: quay.io/attcomdev/promenade:latest
|
||||||
|
packages:
|
||||||
|
docker: docker.io=1.12.6-0ubuntu1~16.04.1
|
||||||
|
|
|
@ -33,6 +33,7 @@ class Document:
|
||||||
'Node',
|
'Node',
|
||||||
'PrivateKey',
|
'PrivateKey',
|
||||||
'PublicKey',
|
'PublicKey',
|
||||||
|
'Versions',
|
||||||
}
|
}
|
||||||
|
|
||||||
def __init__(self, data):
|
def __init__(self, data):
|
||||||
|
@ -68,6 +69,9 @@ class Document:
|
||||||
def __getitem__(self, key):
|
def __getitem__(self, key):
|
||||||
return self.data['spec'][key]
|
return self.data['spec'][key]
|
||||||
|
|
||||||
|
def get(self, key, default=None):
|
||||||
|
return self.data['spec'].get(key, default)
|
||||||
|
|
||||||
|
|
||||||
class Configuration:
|
class Configuration:
|
||||||
def __init__(self, documents):
|
def __init__(self, documents):
|
||||||
|
|
|
@ -33,6 +33,7 @@ class Generator:
|
||||||
def generate_all(self, output_dir):
|
def generate_all(self, output_dir):
|
||||||
cluster = self.input_config['Cluster']
|
cluster = self.input_config['Cluster']
|
||||||
network = self.input_config['Network']
|
network = self.input_config['Network']
|
||||||
|
versions = self.input_config['Versions']
|
||||||
|
|
||||||
cluster_name = cluster.metadata['name']
|
cluster_name = cluster.metadata['name']
|
||||||
LOG.info('Generating configuration for cluster "%s"', cluster_name)
|
LOG.info('Generating configuration for cluster "%s"', cluster_name)
|
||||||
|
@ -91,6 +92,7 @@ class Generator:
|
||||||
network,
|
network,
|
||||||
sa_pub,
|
sa_pub,
|
||||||
sa_priv,
|
sa_priv,
|
||||||
|
versions,
|
||||||
]
|
]
|
||||||
|
|
||||||
for hostname, data in cluster['nodes'].items():
|
for hostname, data in cluster['nodes'].items():
|
||||||
|
@ -142,6 +144,7 @@ class Generator:
|
||||||
node,
|
node,
|
||||||
proxy_cert,
|
proxy_cert,
|
||||||
proxy_cert_key,
|
proxy_cert_key,
|
||||||
|
versions,
|
||||||
]
|
]
|
||||||
role_specific_documents = []
|
role_specific_documents = []
|
||||||
|
|
||||||
|
|
|
@ -38,7 +38,9 @@ class Renderer:
|
||||||
|
|
||||||
LOG.debug('Templating "%s" into "%s"', path, target_path)
|
LOG.debug('Templating "%s" into "%s"', path, target_path)
|
||||||
|
|
||||||
env = jinja2.Environment(undefined=jinja2.StrictUndefined)
|
env = jinja2.Environment(
|
||||||
|
loader=jinja2.PackageLoader('promenade', 'templates/include'),
|
||||||
|
undefined=jinja2.StrictUndefined)
|
||||||
env.filters['b64enc'] = _base64_encode
|
env.filters['b64enc'] = _base64_encode
|
||||||
|
|
||||||
with open(path) as f:
|
with open(path) as f:
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: drydock
|
||||||
|
spec: {}
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: promenade-join-sh
|
||||||
|
namespace: drydock
|
||||||
|
data:
|
||||||
|
join.sh: |-
|
||||||
|
{%- filter indent(4, True) %}
|
||||||
|
{% include "up.sh" %}
|
||||||
|
{%- endfilter %}
|
|
@ -0,0 +1,78 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
if [ "$(id -u)" != "0" ]; then
|
||||||
|
echo "This script must be run as root." 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "x$1" = "x" ]; then
|
||||||
|
echo "Path to node configuration required." 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
#Proxy Variables
|
||||||
|
http_proxy={{ config['Network'].get('http_proxy', '') }}
|
||||||
|
https_proxy={{ config['Network'].get('https_proxy', '') }}
|
||||||
|
no_proxy={{ config['Network'].get('no_proxy', '') }}
|
||||||
|
|
||||||
|
DOCKER_HTTP_PROXY=${DOCKER_HTTP_PROXY:-${HTTP_PROXY:-${http_proxy}}}
|
||||||
|
DOCKER_HTTPS_PROXY=${DOCKER_HTTPS_PROXY:-${HTTPS_PROXY:-${https_proxy}}}
|
||||||
|
DOCKER_NO_PROXY=${DOCKER_NO_PROXY:-${NO_PROXY:-${no_proxy}}}
|
||||||
|
|
||||||
|
|
||||||
|
mkdir -p /etc/docker
|
||||||
|
cat <<EOS > /etc/docker/daemon.json
|
||||||
|
{
|
||||||
|
"live-restore": true,
|
||||||
|
"storage-driver": "overlay2"
|
||||||
|
}
|
||||||
|
EOS
|
||||||
|
|
||||||
|
#Configuration for Docker Behind a Proxy
|
||||||
|
mkdir -p /etc/systemd/system/docker.service.d
|
||||||
|
|
||||||
|
#Set HTTPS Proxy Variable
|
||||||
|
cat <<EOF > /etc/systemd/system/docker.service.d/http-proxy.conf
|
||||||
|
[Service]
|
||||||
|
Environment="HTTP_PROXY=${DOCKER_HTTP_PROXY}"
|
||||||
|
EOF
|
||||||
|
|
||||||
|
#Set HTTPS Proxy Variable
|
||||||
|
cat <<EOF > /etc/systemd/system/docker.service.d/https-proxy.conf
|
||||||
|
[Service]
|
||||||
|
Environment="HTTPS_PROXY=${DOCKER_HTTPS_PROXY}"
|
||||||
|
EOF
|
||||||
|
|
||||||
|
#Set No Proxy Variable
|
||||||
|
cat <<EOF > /etc/systemd/system/docker.service.d/no-proxy.conf
|
||||||
|
[Service]
|
||||||
|
Environment="NO_PROXY=${DOCKER_NO_PROXY}"
|
||||||
|
EOF
|
||||||
|
|
||||||
|
#Reload systemd and docker if present
|
||||||
|
systemctl daemon-reload
|
||||||
|
systemctl restart docker || true
|
||||||
|
|
||||||
|
export DEBIAN_FRONTEND=noninteractive
|
||||||
|
apt-get update -qq
|
||||||
|
apt-get install -y -qq --no-install-recommends \
|
||||||
|
{{ config['Versions']['packages']['docker'] }}
|
||||||
|
|
||||||
|
if [ -f "${PROMENADE_LOAD_IMAGE}" ]; then
|
||||||
|
echo === Loading updated promenade image ===
|
||||||
|
docker load -i "${PROMENADE_LOAD_IMAGE}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
docker run -t --rm \
|
||||||
|
--net host \
|
||||||
|
-v /:/target \
|
||||||
|
{{ config['Versions']['images']['promenade'] }} \
|
||||||
|
promenade \
|
||||||
|
-v \
|
||||||
|
up \
|
||||||
|
--hostname $(hostname) \
|
||||||
|
--config-path /target$(realpath $1) 2>&1
|
||||||
|
|
||||||
|
touch /var/lib/prom.done
|
Loading…
Reference in New Issue