diff --git a/roles/defaults/vars.go b/roles/defaults/vars.go
index 4dc1e7d..4c11748 100644
--- a/roles/defaults/vars.go
+++ b/roles/defaults/vars.go
@@ -12,6 +12,20 @@
 	varsFile []byte
 )
 
+func GetImages() (map[string]string, error) {
+	path, err := yaml.PathString("$._atmosphere_images")
+	if err != nil {
+		return nil, err
+	}
+
+	var images map[string]string
+	if err := path.Read(bytes.NewReader(varsFile), &images); err != nil {
+		return nil, err
+	}
+
+	return images, nil
+}
+
 func GetImageByKey(key string) (string, error) {
 	path, err := yaml.PathString("$._atmosphere_images." + key)
 	if err != nil {
diff --git a/roles/defaults/vars_test.go b/roles/defaults/vars_test.go
new file mode 100644
index 0000000..e70e545
--- /dev/null
+++ b/roles/defaults/vars_test.go
@@ -0,0 +1,50 @@
+package defaults
+
+import (
+	"context"
+	"fmt"
+	"slices"
+	"strings"
+	"testing"
+
+	"github.com/containers/image/v5/docker"
+	"github.com/stretchr/testify/require"
+)
+
+func TestImageExist(t *testing.T) {
+	images, err := GetImages()
+	require.NoError(t, err)
+
+	var uniqueImages []string
+	for _, image := range images {
+		if slices.Contains(uniqueImages, image) {
+			continue
+		}
+
+		uniqueImages = append(uniqueImages, image)
+	}
+
+	for _, image := range uniqueImages {
+		// NOTE(mnaser): ParseReference does not allow both tag & digest,
+		//               so we strip the tags from the image name.
+		nameWithTag := strings.Split(image, "@")[0]
+		name := strings.Split(nameWithTag, ":")[0]
+		digest := strings.Split(image, "@")[1]
+		image := fmt.Sprintf("%s@%s", name, digest)
+
+		t.Run(image, func(t *testing.T) {
+			t.Parallel()
+
+			ref, err := docker.ParseReference(fmt.Sprintf("//%s", image))
+			require.NoError(t, err)
+
+			ctx := context.Background()
+			img, err := ref.NewImage(ctx, nil)
+			require.NoError(t, err)
+			defer img.Close()
+
+			_, _, err = img.Manifest(ctx)
+			require.NoError(t, err)
+		})
+	}
+}
