diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 5522a9d..8d5e9df 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -6,44 +6,45 @@
   cancel-in-progress: true
 
 jobs:
-  build-prometheus-ethtool-exporter:
-    runs-on: ubuntu-latest
-    steps:
-      - uses: actions/checkout@v3.0.2 
-        with:
-          fetch-depth: 0
-      - uses: tj-actions/changed-files@v29.0.3
-        id: changed-files
-        with:
-          files: images/prometheus-ethtool-exporter/*
-      - uses: docker/setup-qemu-action@v2.0.0
-        if: steps.changed-files.outputs.any_changed == 'true'
-      - uses: docker/setup-buildx-action@v2.0.0
-        if: steps.changed-files.outputs.any_changed == 'true'
-      - run: echo PROJECT_REF=$(cat images/prometheus-ethtool-exporter/ref) >> $GITHUB_ENV
-        if: steps.changed-files.outputs.any_changed == 'true'
-      - uses: docker/login-action@v2.0.0
-        if: steps.changed-files.outputs.any_changed == 'true'
-        with:
-          registry: quay.io
-          username: ${{ secrets.QUAY_USERNAME }}
-          password: ${{ secrets.QUAY_ROBOT_TOKEN }}
-      - uses: docker/build-push-action@v3.1.1
-        if: steps.changed-files.outputs.any_changed == 'true'
-        with:
-          context: images/prometheus-ethtool-exporter
-          cache-from: type=gha,scope=prometheus-ethtool-exporter
-          cache-to: type=gha,mode=max,scope=prometheus-ethtool-exporter
-          platforms: linux/amd64,linux/arm64
-          push: true
-          build-args: |
-            PROJECT_REF=${{ env.PROJECT_REF }}
-          tags: |
-            quay.io/vexxhost/ethtool-exporter:${{ env.PROJECT_REF }}
+  # build-prometheus-ethtool-exporter:
+  #   runs-on: ubuntu-latest
+  #   steps:
+  #     - uses: actions/checkout@v3.0.2 
+  #       with:
+  #         fetch-depth: 0
+  #     - uses: tj-actions/changed-files@v29.0.2
+  #       id: changed-files
+  #       with:
+  #         files: images/prometheus-ethtool-exporter/*
+  #     - uses: docker/setup-qemu-action@v2.0.0
+  #       if: steps.changed-files.outputs.any_changed == 'true'
+  #     - uses: docker/setup-buildx-action@v2.0.0
+  #       if: steps.changed-files.outputs.any_changed == 'true'
+  #     - run: echo PROJECT_REF=$(cat images/prometheus-ethtool-exporter/ref) >> $GITHUB_ENV
+  #       if: steps.changed-files.outputs.any_changed == 'true'
+  #     - uses: docker/login-action@v2.0.0
+  #       if: steps.changed-files.outputs.any_changed == 'true'
+  #       with:
+  #         registry: quay.io
+  #         username: ${{ secrets.QUAY_USERNAME }}
+  #         password: ${{ secrets.QUAY_ROBOT_TOKEN }}
+  #     - uses: docker/build-push-action@v3.1.1
+  #       if: steps.changed-files.outputs.any_changed == 'true'
+  #       with:
+  #         context: images/prometheus-ethtool-exporter
+  #         cache-from: type=gha,scope=prometheus-ethtool-exporter
+  #         cache-to: type=gha,mode=max,scope=prometheus-ethtool-exporter
+  #         platforms: linux/amd64,linux/arm64
+  #         push: true
+  #         build-args: |
+  #           PROJECT_REF=${{ env.PROJECT_REF }}
+  #         tags: |
+  #           quay.io/vexxhost/ethtool-exporter:${{ env.PROJECT_REF }}
 
   molecule:
     runs-on: ubuntu-latest
     # needs:
+    #   - build-prometheus-ethtool-exporter
     #   - build-openstack-images
     steps:
       - uses: actions/checkout@v3.0.2
diff --git a/ci/image_tags_test.go b/ci/image_tags_test.go
index 7478560..75025d6 100644
--- a/ci/image_tags_test.go
+++ b/ci/image_tags_test.go
@@ -1,29 +1,50 @@
 package linters
 
 import (
+	"fmt"
 	"os"
 	"strings"
 	"testing"
 
 	"github.com/stretchr/testify/assert"
+	"github.com/stretchr/testify/require"
 	"gopkg.in/yaml.v3"
 )
 
-func TestPrometheusEthtoolExporterTag(t *testing.T) {
-	imageFile, err := os.ReadFile("../images/prometheus-ethtool-exporter/ref")
-	assert.NoError(t, err)
+func getImageTag(t *testing.T, file string) string {
+	imageFile, err := os.ReadFile(file)
+	require.NoError(t, err)
 
-	imageTag := strings.TrimSpace(string(imageFile))
+	return strings.TrimSpace(string(imageFile))
+}
 
-	data, err := os.ReadFile("../roles/prometheus_ethtool_exporter/defaults/main.yml")
-	assert.NoError(t, err)
+func getAnsibleTag(t *testing.T, role string) string {
+	path := fmt.Sprint("../roles/", role, "/defaults/main.yml")
+	data, err := os.ReadFile(path)
+	require.NoError(t, err)
 
 	defaults := make(map[interface{}]interface{})
 	err = yaml.Unmarshal(data, &defaults)
-	assert.NoError(t, err)
+	require.NoError(t, err)
 
-	ansibleTag, ok := defaults["prometheus_ethtool_exporter_image_tag"]
-	if assert.True(t, ok) {
-		assert.Equal(t, imageTag, ansibleTag)
-	}
+	key := fmt.Sprint(role, "_image_tag")
+	ansibleTag, ok := defaults[key]
+	require.True(t, ok)
+
+	return ansibleTag.(string)
+}
+
+func assertImageTag(t *testing.T, imageTagFile string, ansibleRole string) {
+	imageTag := getImageTag(t, imageTagFile)
+	ansibleTag := getAnsibleTag(t, ansibleRole)
+
+	assert.Equal(t, imageTag, ansibleTag)
+}
+
+func TestPrometheusEthtoolExporterTag(t *testing.T) {
+	assertImageTag(t, "../images/prometheus-ethtool-exporter/ref", "prometheus_ethtool_exporter")
+}
+
+func TestOpenstackHelmKeystoneTag(t *testing.T) {
+	assertImageTag(t, "../images/openstack/projects/keystone/wallaby/ref", "openstack_helm_keystone")
 }
