Provide support for air gapped env for ims 10/72310/1
authorSylvain Desbureaux <sylvain.desbureaux@orange.com>
Wed, 24 Mar 2021 07:23:03 +0000 (08:23 +0100)
committerCédric Ollivier <cedric.ollivier@orange.com>
Fri, 2 Apr 2021 08:07:39 +0000 (10:07 +0200)
Sometimes, tested Kubernetes doesn't have direct access to Internet but
access through repository mirrors.

This patch handles this case for ims test cases.

Signed-off-by: Sylvain Desbureaux <sylvain.desbureaux@orange.com>
Change-Id: I3b5e78fcf43ca7af6bcfd2d87fa4bb0705373697
(cherry picked from commit 9c95b5f46e57365c1f6e7e5c9073f7fe2ad48a66)

25 files changed:
README.md
functest_kubernetes/ims/astaire-depl.yaml
functest_kubernetes/ims/bono-depl.yaml
functest_kubernetes/ims/cassandra-depl.yaml
functest_kubernetes/ims/chronos-depl.yaml
functest_kubernetes/ims/ellis-depl.yaml
functest_kubernetes/ims/etcd-depl.yaml
functest_kubernetes/ims/helm/templates/astaire-depl.yaml
functest_kubernetes/ims/helm/templates/bono-depl.yaml
functest_kubernetes/ims/helm/templates/cassandra-depl.yaml
functest_kubernetes/ims/helm/templates/chronos-depl.yaml
functest_kubernetes/ims/helm/templates/ellis-depl.yaml
functest_kubernetes/ims/helm/templates/etcd-depl.yaml
functest_kubernetes/ims/helm/templates/homer-depl.yaml
functest_kubernetes/ims/helm/templates/homestead-depl.yaml
functest_kubernetes/ims/helm/templates/homestead-prov-depl.yaml
functest_kubernetes/ims/helm/templates/ralf-depl.yaml
functest_kubernetes/ims/helm/templates/sprout-depl.yaml
functest_kubernetes/ims/helm/values.yaml
functest_kubernetes/ims/homer-depl.yaml
functest_kubernetes/ims/homestead-depl.yaml
functest_kubernetes/ims/homestead-prov-depl.yaml
functest_kubernetes/ims/ims.py
functest_kubernetes/ims/ralf-depl.yaml
functest_kubernetes/ims/sprout-depl.yaml

index 1348434..d6d131f 100644 (file)
--- a/README.md
+++ b/README.md
@@ -123,7 +123,7 @@ sudo docker run --env-file env \
 To test a Kubernetes without access to Internet, repository mirrors needs to be
 provided.
 
-Currently, only rally and security tests supports this feature.
+Currently, only ims, rally and security tests supports this feature.
 
 There's two ways for providing the repository mirrors:
 
@@ -133,6 +133,7 @@ There's two ways for providing the repository mirrors:
   - `DOCKERHUB_REPO` for DockerHub repository (`docker.io`)
   - `GCR_REPO` for Google Cloud repository (`gcr.io`)
   - `K8S_GCR_REPO` for Kubernetes repository (`k8s.gcr.io`)
+  - `QUAY_REPO` for Quay repository (`quay.io`)
 
 All needed images are given in
 [functest-kubernetes/ci/images.txt](functest-kubernetes/ci/images.txt)
index 2ceebfd..d00b790 100644 (file)
@@ -15,10 +15,10 @@ spec:
       terminationGracePeriodSeconds: 120
       initContainers:
         - name: wait-on-cassandra
-          image: busybox:1.28
+          image: {{ dockerhub_repo }}/busybox:1.28
           command: ['sh', '-c', 'until nslookup cassandra; do echo waiting for cassandra to start ...; sleep 2; done']
       containers:
-      - image: "ollivier/clearwater-astaire:hunter"
+      - image: "{{ dockerhub_repo }}/ollivier/clearwater-astaire:hunter"
         name: astaire
         ports:
         - containerPort: 22
@@ -47,7 +47,7 @@ spec:
           preStop:
             exec:
               command: ["/bin/bash", "-c", "/usr/bin/pre-stop"]
-      - image: busybox:1.28
+      - image: {{ dockerhub_repo }}/busybox:1.28
         name: tailer
         command: [ "tail", "-F", "/var/log/astaire/astaire_current.txt" ]
         volumeMounts:
index d850716..3537927 100644 (file)
@@ -15,10 +15,10 @@ spec:
     spec:
       initContainers:
         - name: wait-on-sprout
-          image: busybox:1.28
+          image: {{ dockerhub_repo }}/busybox:1.28
           command: ['sh', '-c', 'until nslookup sprout; do echo waiting for sprout to start ...; sleep 2; done']
       containers:
-      - image: "ollivier/clearwater-bono:hunter"
+      - image: "{{ dockerhub_repo }}/ollivier/clearwater-bono:hunter"
         name: bono
         ports:
         - containerPort: 22
@@ -54,7 +54,7 @@ spec:
         volumeMounts:
         - name: bonologs
           mountPath: /var/log/bono
-      - image: busybox:1.28
+      - image: {{ dockerhub_repo }}/busybox:1.28
         name: tailer
         command: [ "tail", "-F", "/var/log/bono/bono_current.txt" ]
         volumeMounts:
index 50f8c87..8f33abc 100644 (file)
@@ -14,10 +14,10 @@ spec:
     spec:
       initContainers:
         - name: wait-on-etcd
-          image: busybox:1.28
+          image: {{ dockerhub_repo }}/busybox:1.28
           command: ['sh', '-c', 'until nslookup etcd; do echo waiting for etcd to start ...; sleep 2; done']
       containers:
-      - image: "ollivier/clearwater-cassandra:hunter"
+      - image: "{{ dockerhub_repo }}/ollivier/clearwater-cassandra:hunter"
         name: cassandra
         ports:
         - containerPort: 22
index 5f753f1..cd9c8bc 100644 (file)
@@ -16,11 +16,11 @@ spec:
     spec:
       terminationGracePeriodSeconds: 120
       initContainers:
-        - name: wait-on-cassandra
-          image: busybox:1.28
+        - name: {{ dockerhub_repo }}/wait-on-cassandra
+          image: {{ dockerhub_repo }}/busybox:1.28
           command: ['sh', '-c', 'until nslookup cassandra; do echo waiting for cassandra to start ...; sleep 2; done']
       containers:
-      - image: "ollivier/clearwater-chronos:hunter"
+      - image: "{{ dockerhub_repo }}/ollivier/clearwater-chronos:hunter"
         name: chronos
         ports:
         - containerPort: 22
@@ -48,7 +48,7 @@ spec:
           preStop:
             exec:
               command: ["/bin/bash", "-c", "/usr/bin/pre-stop"]
-      - image: busybox:1.28
+      - image: {{ dockerhub_repo }}/busybox:1.28
         name: tailer
         command: [ "tail", "-F", "/var/log/chronos/chronos_current.txt" ]
         volumeMounts:
index 9403dbb..6d69d62 100644 (file)
@@ -14,13 +14,13 @@ spec:
     spec:
       initContainers:
         - name: wait-on-homestead-prov
-          image: busybox:1.28
+          image: {{ dockerhub_repo }}/busybox:1.28
           command: ['sh', '-c', 'until nslookup homestead-prov; do echo waiting for homestead-prov to start ...; sleep 2; done']
         - name: wait-on-sprout
-          image: busybox:1.28
+          image: {{ dockerhub_repo }}/busybox:1.28
           command: ['sh', '-c', 'until nslookup sprout; do echo waiting for sprout to start ...; sleep 2; done']
       containers:
-      - image: "ollivier/clearwater-ellis:hunter"
+      - image: "{{ dockerhub_repo }}/ollivier/clearwater-ellis:hunter"
         name: ellis
         ports:
         - containerPort: 22
index c9e628f..0fc50cb 100644 (file)
@@ -45,7 +45,7 @@ spec:
           valueFrom:
             fieldRef:
               fieldPath: metadata.name
-        image: quay.io/coreos/etcd:v2.2.5
+        image: {{ quay_repo }}/coreos/etcd:v2.2.5
         name: etcd
         ports:
         - containerPort: 2379
index 11fcb1d..13bf000 100644 (file)
@@ -15,10 +15,10 @@ spec:
       terminationGracePeriodSeconds: 120
       initContainers:
         - name: wait-on-cassandra
-          image: busybox:1.28
+          image: {{ .Values.repo.dockerHub }}/busybox:1.28
           command: ['sh', '-c', 'until nslookup cassandra; do echo waiting for cassandra to start ...; sleep 2; done']
       containers:
-      - image: "{{ .Values.image.path }}-astaire:{{ .Values.image.tag }}"
+      - image: "{{ .Values.repo.dockerHub }}/{{ .Values.image.path }}-astaire:{{ .Values.image.tag }}"
         name: astaire
         ports:
         - containerPort: 22
@@ -47,7 +47,7 @@ spec:
           preStop:
             exec:
               command: ["/bin/bash", "-c", "/usr/bin/pre-stop"]
-      - image: busybox:1.28
+      - image: {{ .Values.repo.dockerHub }}/busybox:1.28
         name: tailer
         command: [ "tail", "-F", "/var/log/astaire/astaire_current.txt" ]
         volumeMounts:
index d3fb1b8..2ab749b 100644 (file)
@@ -15,10 +15,10 @@ spec:
     spec:
       initContainers:
         - name: wait-on-sprout
-          image: busybox:1.28
+          image: {{ .Values.repo.dockerHub }}/busybox:1.28
           command: ['sh', '-c', 'until nslookup sprout; do echo waiting for sprout to start ...; sleep 2; done']
       containers:
-      - image: "{{ .Values.image.path }}-bono:{{ .Values.image.tag }}"
+      - image: "{{ .Values.repo.dockerHub }}/{{ .Values.image.path }}-bono:{{ .Values.image.tag }}"
         name: bono
         ports:
         - containerPort: 22
@@ -54,7 +54,7 @@ spec:
         volumeMounts:
         - name: bonologs
           mountPath: /var/log/bono
-      - image: busybox:1.28
+      - image: {{ .Values.repo.dockerHub }}/busybox:1.28
         name: tailer
         command: [ "tail", "-F", "/var/log/bono/bono_current.txt" ]
         volumeMounts:
index fb04a78..d1850f5 100644 (file)
@@ -14,10 +14,10 @@ spec:
     spec:
       initContainers:
         - name: wait-on-etcd
-          image: busybox:1.28
+          image: {{ .Values.repo.dockerHub }}/busybox:1.28
           command: ['sh', '-c', 'until nslookup etcd; do echo waiting for etcd to start ...; sleep 2; done']
       containers:
-      - image: "{{ .Values.image.path }}-cassandra:{{ .Values.image.tag }}"
+      - image: "{{ .Values.repo.dockerHub }}/{{ .Values.image.path }}-cassandra:{{ .Values.image.tag }}"
         name: cassandra
         ports:
         - containerPort: 22
index 641ba47..6188754 100644 (file)
@@ -17,10 +17,10 @@ spec:
       terminationGracePeriodSeconds: 120
       initContainers:
         - name: wait-on-cassandra
-          image: busybox:1.28
+          image: {{ .Values.repo.dockerHub }}/busybox:1.28
           command: ['sh', '-c', 'until nslookup cassandra; do echo waiting for cassandra to start ...; sleep 2; done']
       containers:
-      - image: "{{ .Values.image.path }}-chronos:{{ .Values.image.tag }}"
+      - image: "{{ .Values.repo.dockerHub }}/{{ .Values.image.path }}-chronos:{{ .Values.image.tag }}"
         name: chronos
         ports:
         - containerPort: 22
@@ -48,7 +48,7 @@ spec:
           preStop:
             exec:
               command: ["/bin/bash", "-c", "/usr/bin/pre-stop"]
-      - image: busybox:1.28
+      - image: {{ .Values.repo.dockerHub }}/busybox:1.28
         name: tailer
         command: [ "tail", "-F", "/var/log/chronos/chronos_current.txt" ]
         volumeMounts:
index 0a29013..c8dd923 100644 (file)
@@ -14,13 +14,13 @@ spec:
     spec:
       initContainers:
         - name: wait-on-homestead-prov
-          image: busybox:1.28
+          image: {{ .Values.repo.dockerHub }}/busybox:1.28
           command: ['sh', '-c', 'until nslookup homestead-prov; do echo waiting for homestead-prov to start ...; sleep 2; done']
         - name: wait-on-sprout
-          image: busybox:1.28
+          image: {{ .Values.repo.dockerHub }}/busybox:1.28
           command: ['sh', '-c', 'until nslookup sprout; do echo waiting for sprout to start ...; sleep 2; done']
       containers:
-      - image: "{{ .Values.image.path }}-ellis:{{ .Values.image.tag }}"
+      - image: "{{ .Values.repo.dockerHub }}/{{ .Values.image.path }}-ellis:{{ .Values.image.tag }}"
         name: ellis
         ports:
         - containerPort: 22
index c9e628f..33fc2e8 100644 (file)
@@ -45,7 +45,7 @@ spec:
           valueFrom:
             fieldRef:
               fieldPath: metadata.name
-        image: quay.io/coreos/etcd:v2.2.5
+        image: {{ .Values.repo.quay }}//coreos/etcd:v2.2.5
         name: etcd
         ports:
         - containerPort: 2379
index 01bf9cd..073124f 100644 (file)
@@ -14,10 +14,10 @@ spec:
     spec:
       initContainers:
         - name: wait-on-cassandra
-          image: busybox:1.28
+          image: {{ .Values.repo.dockerHub }}/busybox:1.28
           command: ['sh', '-c', 'until nslookup cassandra; do echo waiting for cassandra to start ...; sleep 2; done']
       containers:
-      - image: "{{ .Values.image.path }}-homer:{{ .Values.image.tag }}"
+      - image: "{{ .Values.repo.dockerHub }}/{{ .Values.image.path }}-homer:{{ .Values.image.tag }}"
         name: homer
         ports:
         - containerPort: 22
index 782ff16..4e7f86a 100644 (file)
@@ -15,13 +15,13 @@ spec:
     spec:
       initContainers:
         - name: wait-on-cassandra
-          image: busybox:1.28
+          image: {{ .Values.repo.dockerHub }}/busybox:1.28
           command: ['sh', '-c', 'until nslookup cassandra; do echo waiting for cassandra to start ...; sleep 2; done']
         - name: wait-on-astaire
-          image: busybox:1.28
+          image: {{ .Values.repo.dockerHub }}/busybox:1.28
           command: ['sh', '-c', 'until nslookup astaire; do echo waiting for astaire to start ...; sleep 2; done']
       containers:
-      - image: "{{ .Values.image.path }}-homestead:{{ .Values.image.tag }}"
+      - image: "{{ .Values.repo.dockerHub }}/{{ .Values.image.path }}-homestead:{{ .Values.image.tag }}"
         name: homestead
         ports:
         - containerPort: 22
@@ -44,7 +44,7 @@ spec:
         volumeMounts:
         - name: homesteadlogs
           mountPath: /var/log/homestead
-      - image: busybox:1.28
+      - image: {{ .Values.repo.dockerHub }}/busybox:1.28
         name: tailer
         command: [ "tail", "-F", "/var/log/homestead/homestead_current.txt" ]
         volumeMounts:
index 59ec4e2..49e3e4b 100644 (file)
@@ -15,10 +15,10 @@ spec:
     spec:
       initContainers:
         - name: wait-on-homestead
-          image: busybox:1.28
+          image: {{ .Values.repo.dockerHub }}/busybox:1.28
           command: ['sh', '-c', 'until nslookup homestead; do echo waiting for homestead to start ...; sleep 2; done']
       containers:
-      - image: "{{ .Values.image.path }}-homestead-prov:{{ .Values.image.tag }}"
+      - image: "{{ .Values.repo.dockerHub }}/{{ .Values.image.path }}-homestead-prov:{{ .Values.image.tag }}"
         name: homestead-prov
         ports:
         - containerPort: 22
index b052eea..e115ee2 100644 (file)
@@ -15,10 +15,10 @@ spec:
     spec:
       initContainers:
         - name: wait-on-cassandra
-          image: busybox:1.28
+          image: {{ .Values.repo.dockerHub }}/busybox:1.28
           command: ['sh', '-c', 'until nslookup cassandra; do echo waiting for cassandra to start ...; sleep 2; done']
       containers:
-      - image: "{{ .Values.image.path }}-ralf:{{ .Values.image.tag }}"
+      - image: "{{ .Values.repo.dockerHub }}/{{ .Values.image.path }}-ralf:{{ .Values.image.tag }}"
         name: ralf
         ports:
         - containerPort: 22
@@ -41,7 +41,7 @@ spec:
         volumeMounts:
         - name: ralflogs
           mountPath: /var/log/ralf
-      - image: busybox:1.28
+      - image: {{ .Values.repo.dockerHub }}/busybox:1.28
         name: tailer
         command: [ "tail", "-F", "/var/log/ralf/ralf_current.txt" ]
         volumeMounts:
index 1ee4701..dd7ef49 100644 (file)
@@ -15,16 +15,16 @@ spec:
     spec:
       initContainers:
         - name: wait-on-ralf
-          image: busybox:1.28
+          image: {{ .Values.repo.dockerHub }}/busybox:1.28
           command: ['sh', '-c', 'until nslookup ralf; do echo waiting for ralf to start ...; sleep 2; done']
         - name: wait-on-chronos
-          image: busybox:1.28
+          image: {{ .Values.repo.dockerHub }}/busybox:1.28
           command: ['sh', '-c', 'until nslookup chronos; do echo waiting for chronos to start ...; sleep 2; done']
         - name: wait-on-homestead
-          image: busybox:1.28
+          image: {{ .Values.repo.dockerHub }}/busybox:1.28
           command: ['sh', '-c', 'until nslookup homestead; do echo waiting for homestead to start ...; sleep 2; done']
       containers:
-      - image: "{{ .Values.image.path }}-sprout:{{ .Values.image.tag }}"
+      - image: "{{ .Values.repo.dockerHub }}/{{ .Values.image.path }}-sprout:{{ .Values.image.tag }}"
         name: sprout
         ports:
         - containerPort: 22
@@ -47,7 +47,7 @@ spec:
         volumeMounts:
         - name: sproutlogs
           mountPath: /var/log/sprout
-      - image: busybox:1.28
+      - image: {{ .Values.repo.dockerHub }}/busybox:1.28
         name: tailer
         command: [ "tail", "-F", "/var/log/sprout/sprout_current.txt" ]
         volumeMounts:
index b2cb327..03866e3 100644 (file)
@@ -4,3 +4,6 @@
 image:
   path: ollivier/clearwater
   tag: hunter
+repo:
+  dockerHub: docker.io
+  quay: quay.io
index 564b237..665d618 100644 (file)
@@ -14,10 +14,10 @@ spec:
     spec:
       initContainers:
         - name: wait-on-cassandra
-          image: busybox:1.28
+          image: {{ dockerhub_repo }}/busybox:1.28
           command: ['sh', '-c', 'until nslookup cassandra; do echo waiting for cassandra to start ...; sleep 2; done']
       containers:
-      - image: "ollivier/clearwater-homer:hunter"
+      - image: "{{ dockerhub_repo }}/ollivier/clearwater-homer:hunter"
         name: homer
         ports:
         - containerPort: 22
index 82ea0ce..d8b8a65 100644 (file)
@@ -15,13 +15,13 @@ spec:
     spec:
       initContainers:
         - name: wait-on-cassandra
-          image: busybox:1.28
+          image: {{ dockerhub_repo }}/busybox:1.28
           command: ['sh', '-c', 'until nslookup cassandra; do echo waiting for cassandra to start ...; sleep 2; done']
         - name: wait-on-astaire
-          image: busybox:1.28
+          image: {{ dockerhub_repo }}/busybox:1.28
           command: ['sh', '-c', 'until nslookup astaire; do echo waiting for astaire to start ...; sleep 2; done']
       containers:
-      - image: "ollivier/clearwater-homestead:hunter"
+      - image: "{{ dockerhub_repo }}/ollivier/clearwater-homestead:hunter"
         name: homestead
         ports:
         - containerPort: 22
@@ -44,7 +44,7 @@ spec:
         volumeMounts:
         - name: homesteadlogs
           mountPath: /var/log/homestead
-      - image: busybox:1.28
+      - image: {{ dockerhub_repo }}/busybox:1.28
         name: tailer
         command: [ "tail", "-F", "/var/log/homestead/homestead_current.txt" ]
         volumeMounts:
index c194cea..efcbd04 100644 (file)
@@ -15,10 +15,10 @@ spec:
     spec:
       initContainers:
         - name: wait-on-homestead
-          image: busybox:1.28
+          image: {{ dockerhub_repo }}/busybox:1.28
           command: ['sh', '-c', 'until nslookup homestead; do echo waiting for homestead to start ...; sleep 2; done']
       containers:
-      - image: "ollivier/clearwater-homestead-prov:hunter"
+      - image: "{{ dockerhub_repo }}/ollivier/clearwater-homestead-prov:hunter"
         name: homestead-prov
         ports:
         - containerPort: 22
index adb4602..49a6637 100644 (file)
@@ -13,11 +13,13 @@ from __future__ import division
 
 import abc
 import logging
+import os
 import time
 import subprocess
 import re
 import yaml
 
+from jinja2 import Template
 from kubernetes import client
 from kubernetes import config
 from kubernetes import watch
@@ -39,6 +41,8 @@ class Vims(testcase.TestCase):  # pylint: disable=too-many-instance-attributes
     test_image_name = "ollivier/clearwater-live-test:hunter"
     test_container_name = "live-test"
     ns_generate_name = "ims-"
+    dockerhub_repo = os.getenv("MIRROR_REPO", "docker.io")
+    quay_repo = os.getenv("MIRROR_REPO", "quay.io")
 
     __logger = logging.getLogger(__name__)
 
@@ -218,7 +222,12 @@ class K8sVims(Vims):
             with open(pkg_resources.resource_filename(
                     'functest_kubernetes',
                     'ims/{}-depl.yaml'.format(deployment))) as yfile:
-                body = yaml.safe_load(yfile)
+                template = Template(yfile.read())
+                body = yaml.safe_load(template.render(
+                    dockerhub_repo=os.getenv(
+                        "DOCKERHUB_REPO", self.dockerhub_repo),
+                    quay_repo=os.getenv(
+                        "QUAY_REPO", self.quay_repo)))
                 resp = self.appsv1.create_namespaced_deployment(
                     body=body, namespace=self.namespace)
                 self.__logger.info("Deployment %s created", resp.metadata.name)
@@ -270,8 +279,11 @@ class HelmVims(Vims):
 
         See https://github.com/Metaswitch/clearwater-docker for more details
         """
+        dockerhub_repo = os.getenv("DOCKERHUB_REPO", self.dockerhub_repo)
+        quay_repo = os.getenv("QUAY_REPO", self.quay_repo)
         cmd = [
-            "helm", "install", "clearwater",
+            "helm", "install", "clearwater", "--set",
+            "repo.dockerHub={},repo.quay={}".format(dockerhub_repo, quay_repo),
             pkg_resources.resource_filename("functest_kubernetes", "ims/helm"),
             "-n", self.namespace]
         output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)
index de2b93e..c1ce59c 100644 (file)
@@ -15,10 +15,10 @@ spec:
     spec:
       initContainers:
         - name: wait-on-cassandra
-          image: busybox:1.28
+          image: {{ dockerhub_repo }}/busybox:1.28
           command: ['sh', '-c', 'until nslookup cassandra; do echo waiting for cassandra to start ...; sleep 2; done']
       containers:
-      - image: "ollivier/clearwater-ralf:hunter"
+      - image: "{{ dockerhub_repo }}/ollivier/clearwater-ralf:hunter"
         name: ralf
         ports:
         - containerPort: 22
@@ -41,7 +41,7 @@ spec:
         volumeMounts:
         - name: ralflogs
           mountPath: /var/log/ralf
-      - image: busybox:1.28
+      - image: {{ dockerhub_repo }}/busybox:1.28
         name: tailer
         command: [ "tail", "-F", "/var/log/ralf/ralf_current.txt" ]
         volumeMounts:
index 5e18248..b3840a8 100644 (file)
@@ -15,16 +15,16 @@ spec:
     spec:
       initContainers:
         - name: wait-on-ralf
-          image: busybox:1.28
+          image: {{ dockerhub_repo }}/busybox:1.28
           command: ['sh', '-c', 'until nslookup ralf; do echo waiting for ralf to start ...; sleep 2; done']
         - name: wait-on-chronos
-          image: busybox:1.28
+          image: {{ dockerhub_repo }}/busybox:1.28
           command: ['sh', '-c', 'until nslookup chronos; do echo waiting for chronos to start ...; sleep 2; done']
         - name: wait-on-homestead
-          image: busybox:1.28
+          image: {{ dockerhub_repo }}/busybox:1.28
           command: ['sh', '-c', 'until nslookup homestead; do echo waiting for homestead to start ...; sleep 2; done']
       containers:
-      - image: "ollivier/clearwater-sprout:hunter"
+      - image: "{{ dockerhub_repo }}/ollivier/clearwater-sprout:hunter"
         name: sprout
         ports:
         - containerPort: 22
@@ -47,7 +47,7 @@ spec:
         volumeMounts:
         - name: sproutlogs
           mountPath: /var/log/sprout
-      - image: busybox:1.28
+      - image: {{ dockerhub_repo }}/busybox:1.28
         name: tailer
         command: [ "tail", "-F", "/var/log/sprout/sprout_current.txt" ]
         volumeMounts: