diff --git a/prepare-vms/README.md b/prepare-vms/README.md
index f325946b..c86c4c81 100644
--- a/prepare-vms/README.md
+++ b/prepare-vms/README.md
@@ -87,26 +87,37 @@ You're all set!
```
workshopctl - the orchestration workshop swiss army knife
Commands:
-ami Show the AMI that will be used for deployment
-amis List Ubuntu AMIs in the current region
-build Build the Docker image to run this program in a container
-cards Generate ready-to-print cards for a group of VMs
-deploy Install Docker on a bunch of running VMs
-ec2quotas Check our EC2 quotas (max instances)
-help Show available commands
-ids List the instance IDs belonging to a given tag or token
-ips List the IP addresses of the VMs for a given tag or token
-kube Setup kubernetes clusters with kubeadm (must be run AFTER deploy)
-kubetest Check that all notes are reporting as Ready
-list List available groups in the current region
-opensg Open the default security group to ALL ingress traffic
-pull_images Pre-pull a bunch of Docker images
-retag Apply a new tag to a group of VMs
-start Start a group of VMs
-status List instance status for a given group
-stop Stop (terminate, shutdown, kill, remove, destroy...) instances
-test Run tests (pre-flight checks) on a group of VMs
-wrap Run this program in a container
+build Build the Docker image to run this program in a container
+cards Generate ready-to-print cards for a group of VMs
+deploy Install Docker on a bunch of running VMs
+disableaddrchecks Disable source/destination IP address checks
+disabledocker Stop Docker Engine and don't restart it automatically
+helmprom Install Helm and Prometheus
+help Show available commands
+ids (FIXME) List the instance IDs belonging to a given tag or token
+kubebins Install Kubernetes and CNI binaries but don't start anything
+kubereset Wipe out Kubernetes configuration on all nodes
+kube Setup kubernetes clusters with kubeadm (must be run AFTER deploy)
+kubetest Check that all nodes are reporting as Ready
+listall List VMs running on all configured infrastructures
+list List available groups for a given infrastructure
+netfix Disable GRO and run a pinger job on the VMs
+opensg Open the default security group to ALL ingress traffic
+ping Ping VMs in a given tag, to check that they have network access
+pssh Run an arbitrary command on all nodes
+pull_images Pre-pull a bunch of Docker images
+quotas Check our infrastructure quotas (max instances)
+remap_nodeports Remap NodePort range to 10000-10999
+retag (FIXME) Apply a new tag to a group of VMs
+ssh Open an SSH session to the first node of a tag
+start Start a group of VMs
+stop Stop (terminate, shutdown, kill, remove, destroy...) instances
+tags List groups of VMs known locally
+test Run tests (pre-flight checks) on a group of VMs
+weavetest Check that weave seems properly setup
+webssh Install a WEB SSH server on the machines (port 1080)
+wrap Run this program in a container
+www Run a web server to access card HTML and PDF
```
### Summary of What `./workshopctl` Does For You
diff --git a/prepare-vms/lib/ips-txt-to-html.py b/prepare-vms/lib/ips-txt-to-html.py
index 5bc1873c..6f0891cc 100755
--- a/prepare-vms/lib/ips-txt-to-html.py
+++ b/prepare-vms/lib/ips-txt-to-html.py
@@ -4,17 +4,12 @@ import sys
import yaml
import jinja2
-def prettify(l):
- l = [ip.strip() for ip in l]
- ret = [ "node{}: {}".format(i+1, s) for (i, s) in zip(range(len(l)), l) ]
- return ret
# Read settings from user-provided settings file
-SETTINGS = yaml.load(open(sys.argv[1]))
-
-clustersize = SETTINGS["clustersize"]
+context = yaml.safe_load(open(sys.argv[1]))
ips = list(open("ips.txt"))
+clustersize = context["clustersize"]
print("---------------------------------------------")
print(" Number of IPs: {}".format(len(ips)))
@@ -30,7 +25,9 @@ while ips:
ips = ips[clustersize:]
clusters.append(cluster)
-template_file_name = SETTINGS["cards_template"]
+context["clusters"] = clusters
+
+template_file_name = context["cards_template"]
template_file_path = os.path.join(
os.path.dirname(__file__),
"..",
@@ -39,18 +36,19 @@ template_file_path = os.path.join(
)
template = jinja2.Template(open(template_file_path).read())
with open("ips.html", "w") as f:
- f.write(template.render(clusters=clusters, **SETTINGS))
+ f.write(template.render(**context))
print("Generated ips.html")
+
try:
import pdfkit
with open("ips.html") as f:
pdfkit.from_file(f, "ips.pdf", options={
- "page-size": SETTINGS["paper_size"],
- "margin-top": SETTINGS["paper_margin"],
- "margin-bottom": SETTINGS["paper_margin"],
- "margin-left": SETTINGS["paper_margin"],
- "margin-right": SETTINGS["paper_margin"],
+ "page-size": context["paper_size"],
+ "margin-top": context["paper_margin"],
+ "margin-bottom": context["paper_margin"],
+ "margin-left": context["paper_margin"],
+ "margin-right": context["paper_margin"],
})
print("Generated ips.pdf")
except ImportError:
diff --git a/prepare-vms/settings/admin-dmuc.yaml b/prepare-vms/settings/admin-dmuc.yaml
index d4587009..6ac252c0 100644
--- a/prepare-vms/settings/admin-dmuc.yaml
+++ b/prepare-vms/settings/admin-dmuc.yaml
@@ -26,3 +26,5 @@ machine_version: 0.14.0
# Password used to connect with the "docker user"
docker_user_password: training
+
+image:
diff --git a/prepare-vms/settings/admin-kubenet.yaml b/prepare-vms/settings/admin-kubenet.yaml
index b18cb5de..e283b10e 100644
--- a/prepare-vms/settings/admin-kubenet.yaml
+++ b/prepare-vms/settings/admin-kubenet.yaml
@@ -26,3 +26,6 @@ machine_version: 0.14.0
# Password used to connect with the "docker user"
docker_user_password: training
+
+clusternumber: 100
+image:
diff --git a/prepare-vms/settings/admin-kuberouter.yaml b/prepare-vms/settings/admin-kuberouter.yaml
index 97f5283d..9e6c4133 100644
--- a/prepare-vms/settings/admin-kuberouter.yaml
+++ b/prepare-vms/settings/admin-kuberouter.yaml
@@ -26,3 +26,6 @@ machine_version: 0.14.0
# Password used to connect with the "docker user"
docker_user_password: training
+
+clusternumber: 200
+image:
diff --git a/prepare-vms/settings/admin-test.yaml b/prepare-vms/settings/admin-test.yaml
index 7390a51c..691b60f8 100644
--- a/prepare-vms/settings/admin-test.yaml
+++ b/prepare-vms/settings/admin-test.yaml
@@ -26,3 +26,5 @@ machine_version: 0.14.0
# Password used to connect with the "docker user"
docker_user_password: training
+
+image:
diff --git a/prepare-vms/settings/jerome.yaml b/prepare-vms/settings/jerome.yaml
index a618cc5a..4f68a3e4 100644
--- a/prepare-vms/settings/jerome.yaml
+++ b/prepare-vms/settings/jerome.yaml
@@ -26,4 +26,3 @@ machine_version: 0.14.0
# Password used to connect with the "docker user"
docker_user_password: training
-
diff --git a/prepare-vms/templates/cards.html b/prepare-vms/templates/cards.html
index 1f58b8f6..7a30cd41 100644
--- a/prepare-vms/templates/cards.html
+++ b/prepare-vms/templates/cards.html
@@ -1,12 +1,23 @@
-{# Feel free to customize or override anything in there! #}
+{#
+ The variables below can be customized here directly, or in your
+ settings.yaml file. Any variable in settings.yaml will be exposed
+ in here as well.
+#}
-{%- set url = "http://FIXME.container.training/" -%}
-{%- set pagesize = 9 -%}
-{%- set lang = "en" -%}
-{%- set event = "training session" -%}
-{%- set backside = False -%}
-{%- set image = "kube" -%}
-{%- set clusternumber = 100 -%}
+{%- set url = url
+ | default("http://FIXME.container.training/") -%}
+{%- set pagesize = pagesize
+ | default(9) -%}
+{%- set lang = lang
+ | default("en") -%}
+{%- set event = event
+ | default("training session") -%}
+{%- set backside = backside
+ | default(False) -%}
+{%- set image = image
+ | default("kube") -%}
+{%- set clusternumber = clusternumber
+ | default(None) -%}
{%- set image_src = {
"docker": "https://s3-us-west-2.amazonaws.com/www.breadware.com/integrations/docker.png",
@@ -161,7 +172,9 @@ img.kube {
{{ intro }}
+ {% if image_src %}
+ {% endif %}
| cluster: |