chore: add glance images (#809)

diff --git a/.github/renovate.json b/.github/renovate.json
index f929484..0263121 100644
--- a/.github/renovate.json
+++ b/.github/renovate.json
@@ -4,6 +4,22 @@
     "docker:pinDigests",
     "helpers:pinGitHubActionDigests"
   ],
+  "pip_requirements": {
+    "fileMatch": ["upper-constraints.txt"]
+  },
+  "customManagers": [
+    {
+      "customType": "regex",
+      "fileMatch": [
+        "roles/defaults/vars/main\\.yml"
+      ],
+      "datasourceTemplate": "docker",
+      "versioningTemplate": "docker",
+      "matchStrings": [
+        "  \\w+?: (?<depName>[^:\\s]*):(?<currentValue>[^:@\\s]*)@?(?<currentDigest>sha256:[a-f0-9]+)?"
+      ]
+    }
+  ],
   "packageRules": [
     {
       "enabled": false,
@@ -30,19 +46,11 @@
         "quay.io/skopeo",
         "registry.k8s.io/"
       ]
-    }
-  ],
-  "customManagers": [
+    },
     {
-      "customType": "regex",
-      "fileMatch": [
-        "roles/defaults/vars/main\\.yml"
-      ],
-      "datasourceTemplate": "docker",
-      "versioningTemplate": "docker",
-      "matchStrings": [
-        "  \\w+?: (?<depName>[^:\\s]*):(?<currentValue>[^:@\\s]*)@?(?<currentDigest>sha256:[a-f0-9]+)?"
-      ]
+      "enabled": false,
+      "matchUpdateTypes": ["major"],
+      "matchFileNames": ["images/cloud-archive-builder/**/upper-constraints.txt"]
     }
   ],
   "regex": {
diff --git a/Earthfile b/Earthfile
index 01e536c..b08c82a 100644
--- a/Earthfile
+++ b/Earthfile
@@ -41,7 +41,7 @@
 image:
   FROM ./images/base+image
   ENV ANSIBLE_PIPELINING=True
-  DO ./images+APT_INSTALL --packages "rsync openssh-client"
+  DO ./images+APT_INSTALL --PACKAGES "rsync openssh-client"
   COPY +build.venv.runtime/venv /venv
   ENV PATH=/venv/bin:$PATH
   COPY +build.collections/ /usr/share/ansible
diff --git a/images/Earthfile b/images/Earthfile
index c87a870..b19d68b 100644
--- a/images/Earthfile
+++ b/images/Earthfile
@@ -2,9 +2,18 @@
 
 APT_INSTALL:
   COMMAND
-  ARG packages
+  ARG PACKAGES
   RUN \
     apt-get update && \
-    apt-get install --no-install-recommends -y ${packages} && \
+    apt-get install --no-install-recommends -y ${PACKAGES} && \
     apt-get clean && \
     rm -rf /var/lib/apt/lists/*
+
+CREATE_PROJECT_USER:
+  COMMAND
+  ARG PROJECT
+  RUN \
+    groupadd -g 42424 ${PROJECT} && \
+    useradd -u 42424 -g 42424 -M -d /var/lib/${PROJECT} -s /usr/sbin/nologin -c "${PROJECT} User" ${PROJECT} && \
+    mkdir -p /etc/${PROJECT} /var/log/${PROJECT} /var/lib/${PROJECT} /var/cache/${PROJECT} && \
+    chown -Rv ${PROJECT}:${PROJECT} /etc/${PROJECT} /var/log/${PROJECT} /var/lib/${PROJECT} /var/cache/${PROJECT}
diff --git a/images/builder/Earthfile b/images/builder/Earthfile
index b7025b4..f4e92d3 100644
--- a/images/builder/Earthfile
+++ b/images/builder/Earthfile
@@ -2,6 +2,6 @@
 
 image:
   FROM ../base+image
-  DO ../+APT_INSTALL --packages "build-essential git python3-dev python3-pip python3-venv"
+  DO ../+APT_INSTALL --PACKAGES "build-essential git python3-dev python3-pip python3-venv"
   ARG POETRY_VERSION=1.4.2
   RUN pip3 install --no-cache-dir poetry==${POETRY_VERSION}
diff --git a/images/cloud-archive-base/Earthfile b/images/cloud-archive-base/Earthfile
new file mode 100644
index 0000000..75e2c73
--- /dev/null
+++ b/images/cloud-archive-base/Earthfile
@@ -0,0 +1,21 @@
+VERSION 0.7
+
+image:
+  FROM ../base+image
+  DO ../+APT_INSTALL --PACKAGES "ca-certificates lsb-release python3-distutils sudo ubuntu-cloud-keyring"
+  ARG RELEASE
+  IF [ "$(lsb_release -sc)" = "jammy" ]
+    IF [ "${RELEASE}" = "yoga" ]
+      # NOTE: Yoga shipped with 22.04, so no need to add an extra repository.
+      RUN echo "" > /etc/apt/sources.list.d/cloudarchive.list
+    ELSE IF [ "${RELEASE}" = "zed" ]
+      RUN echo "deb http://ubuntu-cloud.archive.canonical.com/ubuntu $(lsb_release -sc)-updates/${RELEASE} main" > /etc/apt/sources.list.d/cloudarchive.list
+    ELSE IF [ "${RELEASE}" = "2023.1" ]
+      RUN echo "deb http://ubuntu-cloud.archive.canonical.com/ubuntu $(lsb_release -sc)-updates/antelope main" > /etc/apt/sources.list.d/cloudarchive.list
+    ELSE IF [ "${RELEASE}" = "2023.2" ]
+      RUN echo "deb http://ubuntu-cloud.archive.canonical.com/ubuntu $(lsb_release -sc)-updates/bobcat main" > /etc/apt/sources.list.d/cloudarchive.list
+    ELSE
+      RUN echo "${RELEASE} is not supported on $(lsb_release -sc)"
+      RUN exit 1
+    END
+  END
diff --git a/images/cloud-archive-builder/2023.1/upper-constraints.txt b/images/cloud-archive-builder/2023.1/upper-constraints.txt
new file mode 100644
index 0000000..60d4724
--- /dev/null
+++ b/images/cloud-archive-builder/2023.1/upper-constraints.txt
@@ -0,0 +1,592 @@
+ntlm-auth==1.5.0
+voluptuous==0.13.1
+chardet==5.0.0
+enum-compat==0.0.3
+rsa==4.9
+restructuredtext-lint==1.4.0
+netmiko==4.1.2
+sshtunnel==0.4.0
+PasteDeploy==2.1.1
+typing==3.7.4.3
+python-saharaclient==4.1.0
+Routes==2.5.1
+rtslib-fb==2.1.75
+oslo.limit==2.1.0
+tzdata==2022.4
+smmap==5.0.0
+confget==4.1.1
+XStatic-Angular-Bootstrap==2.5.0.0
+WebOb==1.8.7
+sphinxcontrib-actdiag==3.0.0
+pecan==1.4.2
+ryu==4.34
+os-api-ref==2.3.0
+python-ldap==3.4.3
+oslo.concurrency==5.1.1
+websocket-client==1.4.1
+osprofiler==3.4.3
+os-resource-classes==1.1.0
+tabulate==0.9.0
+python-ironic-inspector-client==4.9.0
+lxml==4.9.1
+vintage==0.4.1
+ntc-templates==3.1.0
+rst2txt==1.1.0
+setproctitle==1.3.2
+pytest==7.2.0
+python-slugify==6.1.2
+cursive==0.2.3
+oslo.service==3.1.1
+django-appconf==1.0.5
+sphinxcontrib-nwdiag==2.0.0
+rbd-iscsi-client==0.1.8
+requests-aws==0.1.8
+alabaster==0.7.12
+pbr==5.11.1
+munch==2.5.0
+waiting==1.4.1
+attrs==22.1.0
+microversion-parse==1.0.1
+Pint==0.19.2
+oslo.i18n==6.0.0
+jsonpath-rw-ext==1.2.2
+python-mistralclient==5.0.0
+oslo.context==5.1.1
+python-senlinclient==3.0.0
+rcssmin==1.1.0
+pycadf==3.1.1
+grpcio==1.49.1
+pysendfile==2.0.1
+sniffio==1.3.0
+fixtures==4.0.1
+neutron-lib==3.4.1
+XStatic-FileSaver==1.3.2.0
+oslo.metrics==0.6.0
+storage-interfaces==1.0.4
+persist-queue==0.8.0
+pystache==0.6.0
+XStatic-Font-Awesome==4.7.0.0
+nose==1.3.7
+nosehtmloutput==0.0.7
+waitress==2.1.2
+os-refresh-config==13.1.0
+pysnmp==4.4.12
+Mako==1.2.3
+pyScss==1.4.0
+sphinxcontrib-htmlhelp==2.0.0
+XStatic-jQuery==1.12.4.1
+ddt==1.6.0
+XStatic-Graphlib==2.1.7.0
+pyserial==3.5
+moto==3.1.16
+infi.dtypes.wwn==0.1.1
+python-freezerclient==5.1.0
+os-xenapi==0.3.4
+python-vitrageclient==4.7.0
+nosexcover==1.0.11
+krest==1.3.3
+psycopg2==2.9.4
+networkx==2.8.7
+XStatic-Angular==1.8.2.2
+pyngus==2.3.1
+Pillow==9.2.0
+zuul-sphinx==0.6.0
+tripleo-common==17.0.0
+tripleo-ansible==6.0.0
+Tempita==0.5.2
+ply==3.11
+google-api-core==2.10.2
+requests-toolbelt==0.10.0
+simplejson==3.17.6
+types-paramiko==2.11.6
+immutables==0.19
+python-swiftclient==4.2.0
+pyOpenSSL==22.1.0
+monasca-common==3.7.0
+zeroconf==0.39.1
+scipy==1.9.1
+python-gnupg==0.5.0
+mypy-extensions==0.4.3
+rsd-lib==1.2.0
+XStatic-Jasmine==2.4.1.2
+googleapis-common-protos==1.56.4
+python-glanceclient==4.3.0
+jaraco.classes==3.2.3
+pyinotify==0.9.6
+debtcollector==2.5.0
+requests-unixsocket==0.3.0
+responses==0.21.0
+croniter==1.3.7
+horizon==23.1.0
+octavia-lib==3.2.0
+python-watcherclient==4.1.0
+MarkupSafe==2.1.1
+pypowervm==1.1.27
+ruamel.yaml.clib==0.2.6
+doc8==0.11.2
+pymongo==4.2.0
+python-cloudkittyclient==4.7.0
+soupsieve==2.3.2.post1
+sqlparse==0.4.3
+oslotest==4.5.0
+jsonpointer==2.3
+defusedxml==0.7.1
+netaddr==0.8.0
+pyghmi==1.5.53
+sphinxcontrib-blockdiag==3.0.0
+thrift==0.16.0
+gnocchiclient==7.0.7
+wcwidth==0.2.5
+sphinxcontrib.datatemplates==0.9.1
+jsonpath-rw==1.4.0
+prettytable==3.4.1
+vine==5.0.0
+taskflow==5.1.0
+traceback2==1.4.0
+arrow==1.2.3
+semantic-version==2.10.0
+async-timeout==4.0.2
+virtualbmc==3.0.1
+deprecation==2.1.0
+SQLAlchemy==1.4.41
+pyroute2==0.7.3
+google-auth==2.12.0
+kazoo==2.9.0
+pyspnego==0.6.0
+XStatic-roboto-fontface==0.5.0.0
+pyudev==0.24.0
+eventlet==0.33.1
+openstack-doc-tools==3.3.1
+oslo.messaging==14.2.1
+jira==3.4.1
+extras==1.0.0
+PyJWT==2.5.0
+typing_extensions==4.4.0
+XStatic-lodash==4.16.4.2
+zVMCloudConnector==1.6.3
+paramiko==2.11.0
+ifaddr==0.2.0
+reno==4.0.0
+ncclient==0.6.13
+imagesize==1.4.1
+pydot==1.4.2
+urllib3==1.26.12
+graphviz==0.20.1
+PyKMIP==0.10.0
+whereto==0.4.0
+pywbem==1.4.1
+python-subunit==1.4.2
+tornado==6.2
+pycparser==2.21
+mock==4.0.3
+PyYAML==6.0
+beautifulsoup4==4.11.1
+os-net-config==16.0.0
+ovs==2.17.1.post1
+cryptography==38.0.2
+httpcore==0.15.0
+URLObject==2.4.3
+nocasedict==1.0.4
+task-core==0.2.1
+psycopg2-binary==2.9.4
+openstack-release-test==3.3.1
+validations-libs==1.8.0
+pylxd==2.3.1
+pycryptodomex==3.15.0
+anyjson==0.3.3
+requests-mock==1.10.0
+os-apply-config==13.1.0
+prometheus-client==0.14.1
+oslosphinx==4.18.0
+gunicorn==20.1.0
+storpool==7.1.0
+textfsm==1.1.2
+python-3parclient==4.2.12
+unittest2==1.1.0
+django-compressor==4.1
+libvirt-python==8.8.0
+python-zunclient==4.6.0
+tzlocal==4.2
+sphinxcontrib-jsmath==1.0.1
+python-novaclient==18.3.0
+pact==1.12.0
+bcrypt==4.0.0
+os-client-config==2.1.0
+XStatic-Angular-Gettext==2.4.1.0
+Deprecated==1.2.13
+h11==0.12.0
+Pygments==2.13.0
+XStatic-Hogan==2.0.0.3
+XStatic-objectpath==1.2.1.0
+python-manilaclient==4.4.0
+sphinxcontrib-serializinghtml==1.1.5
+requests==2.28.1
+snowballstemmer==2.2.0
+Jinja2==3.1.2
+XStatic-Bootstrap-SCSS==3.4.1.0
+pyzabbix==1.2.1
+ptyprocess==0.7.0
+threadloop==1.0.2
+amqp==5.1.1
+ruamel.yaml==0.17.21
+websockify==0.10.0
+gssapi==1.8.1
+XStatic-JQuery.quicksearch==2.0.3.2
+mpmath==1.2.1
+python-binary-memcached==0.31.1
+django-debreach==2.1.0
+sphinx-feature-classification==1.1.0
+django-pymemcache==1.0.0
+XStatic-JQuery-Migrate==1.2.1.2
+pytest-html==3.2.0
+appdirs==1.4.4
+tinyrpc==1.1.5
+google-auth-httplib2==0.1.0
+daiquiri==3.2.1
+influxdb==5.3.1
+funcparserlib==1.0.0
+passlib==1.7.4
+dib-utils==0.0.11
+cliff==4.2.0
+os-brick==6.2.2
+ansible-runner==2.2.1
+pytz-deprecation-shim==0.1.0.post0
+scp==0.14.4
+python-zaqarclient==2.5.1
+lockfile==0.12.2
+ldappool==3.0.0
+termcolor==2.0.1
+joblib==1.2.0
+google-api-python-client==2.64.0
+castellan==4.1.0
+oslo.versionedobjects==3.1.0
+ssh-python==0.10.0
+enmerkar==0.7.1
+webcolors==1.12
+aodhclient==3.2.0
+autobahn==22.7.1
+SQLAlchemy-Utils==0.38.3
+retryz==0.1.9
+pluggy==1.0.0
+coverage==6.5.0
+freezegun==1.2.2
+toml==0.10.2
+pycdlib==1.13.0
+pyperclip==1.8.2
+cassandra-driver==3.25.0
+XStatic-Angular-Schema-Form==0.8.13.0
+gabbi==2.4.0
+nwdiag==3.0.0
+XStatic-bootswatch==3.3.7.0
+pytest-xdist==2.5.0
+XStatic-JS-Yaml==3.8.1.0
+XStatic-term.js==0.0.7.0
+oslo.log==5.2.0
+nodeenv==1.7.0
+gossip==2.4.0
+suds-community==1.1.2
+importlib-metadata==5.0.0
+oslo.middleware==5.1.1
+XStatic-mdi==1.6.50.2
+django-pyscss==2.0.2
+uritemplate==4.1.1
+docutils==0.17.1
+threadpoolctl==3.1.0
+os-ken==2.6.0
+ujson==5.5.0
+selenium==3.141.0
+mypy==0.982
+mistral-lib==2.8.0
+dogtag-pki==11.2.1
+XStatic-Angular-UUID==0.0.4.0
+purestorage==1.19.0
+sphinxcontrib-seqdiag==3.0.0
+os-win==5.9.0
+capacity==1.3.14
+retrying==1.3.3
+XStatic-Dagre==0.6.4.1
+platformdirs==2.5.2
+pydotplus==2.0.2
+boto3==1.24.89
+jeepney==0.8.0
+stestr==4.0.1
+oslo.serialization==5.1.1
+warlock==2.0.1
+exabgp==4.2.21
+sphinxcontrib-httpdomain==1.8.0
+metalsmith==1.10.0
+s3transfer==0.6.0
+text-unidecode==1.3
+sphinxcontrib-svg2pdfconverter==1.2.0
+murano-pkg-check==0.3.0
+oslo.vmware==4.1.1
+XStatic-moment==2.8.4.3
+autopage==0.5.1
+sqlalchemy-migrate==0.13.0
+gitdb==4.0.9
+python-monascaclient==2.7.0
+ldap3==2.9.1
+requests-ntlm==1.1.0
+sphinx-rtd-theme==0.5.1
+automaton==3.1.0
+os-service-types==1.7.0
+keyring==23.9.3
+elementpath==3.0.2
+testscenarios==0.5.0
+sphinxcontrib-pecanwsme==0.10.0
+sadisplay==0.4.9
+infinisdk==206.1.2
+packaging==21.3
+XStatic-Dagre-D3==0.4.17.0
+nose-exclude==0.5.0
+psutil==5.9.2
+py==1.11.0
+txaio==22.2.1
+elasticsearch==2.4.1
+django-nose==1.4.7
+asgiref==3.5.2
+XStatic-JQuery.TableSorter==2.14.5.2
+pifpaf==3.1.5
+pysmi==0.3.4
+blockdiag==3.0.0
+testtools==2.5.0
+infi.dtypes.iqn==0.4.0
+XStatic-tv4==1.2.7.0
+XStatic-JSEncrypt==2.3.1.1
+python-cinderclient==9.3.0
+keystonemiddleware==10.2.0
+django-formtools==2.4
+XStatic-Spin==1.2.5.3
+tap-as-a-service==11.0.0
+os-traits==2.10.0
+typepy==1.3.0
+SecretStorage==3.3.3
+opentracing==2.4.0
+XStatic-Rickshaw==1.5.1.0
+iso8601==1.1.0
+tooz==3.2.0
+linecache2==1.0.0
+oauth2client==4.1.3
+idna==3.4
+yamlloader==1.1.0
+protobuf==4.21.7
+pyhcl==0.4.4
+sushy==4.4.2
+python-neutronclient==9.0.0
+pika==1.3.0
+oslo.cache==3.3.1
+WebTest==3.0.0
+openstack.nose-plugin==0.11
+os-collect-config==13.1.0
+edgegrid-python==1.3.1
+python-qpid-proton==0.37.0
+python-octaviaclient==3.4.0
+pysaml2==7.2.1
+requests-oauthlib==1.3.1
+oslo.reports==3.0.0
+bitmath==1.3.3.1
+ceilometermiddleware==3.1.0
+testrepository==0.0.20
+sympy==1.11.1
+Logbook==1.5.3
+PyNaCl==1.5.0
+osc-lib==2.7.0
+python-consul==1.1.0
+more-itertools==8.14.0
+seqdiag==3.0.0
+numpy==1.23.3
+msgpack==1.0.4
+Sphinx==4.5.0
+oslo.config==9.1.1
+openstackdocstheme==3.1.0
+osc-placement==4.1.0
+zake==0.2.2
+python-rsdclient==1.0.2
+flux==1.3.5
+python-solumclient==3.7.0
+krb5==0.4.0
+PyMySQL==1.0.2
+uhashring==2.1
+kubernetes==24.2.0
+httplib2==0.20.4
+betamax==0.8.1
+construct==2.10.68
+pytest-metadata==2.0.2
+pyparsing==3.0.9
+geomet==0.2.1.post1
+distlib==0.3.6
+XStatic-Moment-Timezone==0.5.22.0
+dogpile.cache==1.1.8
+python-barbicanclient==5.5.0
+salt==3005.1
+api-object-schema==2.0.0
+WSME==0.11.0
+tomli==2.0.1
+proboscis==1.2.6.0
+oslo.upgradecheck==2.1.1
+stevedore==5.0.0
+pywinrm==0.4.3
+botocore==1.27.89
+xmltodict==0.13.0
+pyasn1==0.4.8
+directord==0.12.0
+oslo.rootwrap==7.0.1
+Django==3.2.16
+pexpect==4.8.0
+contextvars==2.4
+cmd2==2.4.2
+python-json-logger==2.0.4
+redis==4.3.4
+jmespath==1.0.1
+click==8.1.3
+XStatic-smart-table==1.4.13.2
+kuryr-lib==2.7.0
+scrypt==0.8.20
+jsonpatch==1.32
+python-daemon==2.3.1
+types-cryptography==3.3.23
+os-testr==3.0.0
+cotyledon==1.7.3
+xattr==0.9.9
+systemd-python==234
+python-memcached==1.59
+openstacksdk==1.0.1
+six==1.16.0
+dulwich==0.20.46
+dfs-sdk==1.2.27
+sentinels==1.0.0
+kombu==5.2.4
+distro==1.7.0
+zstd==1.5.2.6
+yaql==2.0.0
+requestsexceptions==1.4.0
+testresources==2.0.1
+falcon==3.1.0
+etcd3gw==2.1.0
+Flask-RESTful==0.3.9
+GitPython==3.1.30
+python-ironicclient==5.1.0
+XStatic==1.0.2
+XStatic-Angular-FileUpload==12.0.4.0
+python-openstackclient==6.2.0
+pyzmq==20.0.0
+nocaselist==1.0.6
+oslo.db==12.3.1
+simplegeneric==0.8.1
+python-pcre==0.7
+yappi==1.4.0
+mbstrdecoder==1.1.1
+abclient==0.2.3
+pymemcache==3.5.2
+wrapt==1.14.1
+oslo.privsep==3.1.0
+sphinxcontrib-apidoc==0.3.0
+oslo.policy==4.1.1
+python-muranoclient==2.6.0
+hvac==1.0.2
+pyeclib==1.6.1
+wsgi-intercept==1.10.0
+ndg-httpsclient==0.5.1
+pyrsistent==0.18.1
+repoze.lru==0.7
+rfc3986==1.5.0
+tenacity==6.3.1
+python-designateclient==5.2.0
+future==0.18.3
+Paste==3.5.2
+pytest-django==4.5.2
+jaeger-client==4.8.0
+XStatic-Json2yaml==0.1.1.0
+boto==2.49.0
+os-vif==3.1.1
+hyperlink==21.0.0
+mitba==1.1.1
+python-masakariclient==8.1.0
+Werkzeug==2.2.2
+pyasn1-modules==0.2.8
+APScheduler==3.9.1
+monotonic==1.6
+xmlschema==2.1.1
+python-troveclient==8.1.0
+etcd3==0.12.0
+cachez==0.1.2
+XStatic-Bootstrap-Datepicker==1.4.0.0
+CouchDB==1.2
+netifaces==0.11.0
+cachetools==5.2.0
+ws4py==0.5.1
+sphinxcontrib-qthelp==1.0.3
+keystoneauth1==5.1.2
+statsd==3.3.0
+XenAPI==2.14
+python-keystoneclient==5.1.0
+ceilometer==20.0.0
+diskimage-builder==3.25.0
+heat-translator==2.7.0
+python-magnumclient==4.1.0
+docker==6.0.0
+storops==1.2.11
+anyio==3.6.1
+XStatic-Angular-lrdragndrop==1.0.2.4
+ovsdbapp==2.2.1
+aniso8601==9.0.1
+rjsmin==1.2.0
+icalendar==4.1.0
+decorator==5.1.1
+DateTimeRange==1.2.0
+cffi==1.15.1
+python-cyborgclient==2.1.0
+futurist==2.4.1
+jsonschema==4.16.0
+sphinxcontrib-devhelp==1.0.2
+python-blazarclient==3.6.0
+alembic==1.8.1
+execnet==1.9.0
+glance-store==4.3.1
+sphinxcontrib-programoutput==0.17
+storpool.spopenstack==3.1.0
+sphinx-testing==1.0.1
+dnspython==2.2.1
+oauthlib==3.2.1
+Babel==2.10.3
+logutils==0.3.5
+zipp==3.8.1
+greenlet==1.1.3
+XStatic-Angular-Vis==4.16.0.0
+iniconfig==1.1.1
+confluent-kafka==1.9.2
+xvfbwrapper==0.2.9
+tosca-parser==2.8.0
+charset-normalizer==2.1.1
+Flask==2.2.2
+httpx==0.23.0
+sqlalchemy-filters==0.12.0
+marathon==0.13.0
+sphinxcontrib-runcmd==0.2.0
+confspirator==0.3.0
+fasteners==0.18
+sortedcontainers==2.4.0
+python-linstor==1.13.0
+filelock==3.8.0
+python-tackerclient==1.13.0
+python-heatclient==3.2.0
+kafka-python==2.0.2
+oslo.utils==6.1.0
+gitdb2==4.0.2
+requests-kerberos==0.14.0
+itsdangerous==2.1.2
+XStatic-jquery-ui==1.13.0.1
+monasca-statsd==2.6.0
+python-dateutil==2.8.2
+virtualenv==20.16.5
+colorama==0.4.5
+confetti==2.5.3
+ironic-lib==5.4.0
+pytz==2022.4
+pytest-forked==1.4.0
+XStatic-D3==3.5.17.0
+actdiag==3.0.0
+sysv-ipc==1.1.0
+sphinxcontrib-applehelp==1.0.2
+scikit-learn==1.1.2
+pytest-cov==4.0.0
diff --git a/images/cloud-archive-builder/2023.2/upper-constraints.txt b/images/cloud-archive-builder/2023.2/upper-constraints.txt
new file mode 100644
index 0000000..432b540
--- /dev/null
+++ b/images/cloud-archive-builder/2023.2/upper-constraints.txt
@@ -0,0 +1,600 @@
+voluptuous==0.13.1
+chardet==5.1.0
+enum-compat==0.0.3
+rsa==4.9
+restructuredtext-lint==1.4.0
+netmiko==4.1.2
+sshtunnel==0.4.0
+PasteDeploy==3.0.1
+typing==3.7.4.3
+python-saharaclient==4.2.0
+Routes==2.5.1
+rtslib-fb==2.1.75
+oslo.limit==2.2.0
+tzdata==2023.3
+smmap==5.0.0
+confget==5.1.1
+XStatic-Angular-Bootstrap==2.5.0.0
+WebOb==1.8.7
+sphinxcontrib-actdiag==3.0.0
+pecan==1.4.2
+os-api-ref==3.0.0
+python-ldap==3.4.3
+oslo.concurrency==5.2.0
+websocket-client==1.5.1
+osprofiler==4.1.0
+os-resource-classes==1.1.0
+tabulate==0.9.0
+python-ironic-inspector-client==5.0.0
+lxml==4.9.2
+vintage==0.4.1
+ntc-templates==3.3.0
+rst2txt==1.1.0
+setproctitle==1.3.2
+pytest==7.3.1
+python-slugify==8.0.1
+cursive==0.2.3
+oslo.service==3.2.0
+django-appconf==1.0.5
+sphinxcontrib-jquery==4.1
+sphinxcontrib-nwdiag==2.0.0
+rbd-iscsi-client==0.1.8
+requests-aws==0.1.8
+alabaster==0.7.13
+pbr==5.11.1
+munch==2.5.0
+waiting==1.4.1
+attrs==23.1.0
+microversion-parse==1.0.1
+Pint==0.20.1
+oslo.i18n==6.1.0
+jsonpath-rw-ext==1.2.2
+python-mistralclient==5.1.0
+oslo.context==5.2.0
+python-senlinclient==3.1.0
+rcssmin==1.1.1
+pycadf==3.1.1
+grpcio==1.54.0
+pysendfile==2.0.1
+sniffio==1.3.0
+fixtures==4.0.1
+neutron-lib==3.8.0
+tripleo-ansible==6.0.0
+XStatic-FileSaver==1.3.2.0
+oslo.metrics==0.7.0
+storage-interfaces==1.0.5
+persist-queue==0.8.0
+pystache==0.6.0
+XStatic-Font-Awesome==4.7.0.0
+nose==1.3.7
+nosehtmloutput==0.0.7
+waitress==2.1.2
+os-refresh-config==13.1.0
+pysnmp==4.4.12
+pysnmp-lextudio==5.0.26
+types-PyYAML==6.0.12.9
+Mako==1.2.4
+pyScss==1.4.0
+sphinxcontrib-htmlhelp==2.0.1
+XStatic-jQuery==3.5.1.1
+ddt==1.6.0
+XStatic-Graphlib==2.1.7.0
+pyserial==3.5
+moto==4.1.7
+infi.dtypes.wwn==0.1.1
+python-freezerclient==5.2.0
+os-xenapi==0.3.4
+python-vitrageclient==4.8.0
+nosexcover==1.0.11
+krest==1.3.6
+psycopg2==2.9.6
+networkx==3.1
+XStatic-Angular==1.8.2.2
+pyngus==2.3.1
+Pillow==9.5.0
+zuul-sphinx==0.6.0
+tripleo-common==18.0.0
+Tempita==0.5.2
+ply==3.11
+google-api-core==2.11.0
+requests-toolbelt==0.10.1
+simplejson==3.19.1
+types-paramiko==3.0.0.7
+immutables==0.19
+python-swiftclient==4.4.0
+pyOpenSSL==23.1.1
+monasca-common==3.8.0
+zeroconf==0.56.0
+scipy==1.10.1
+opentelemetry-exporter-otlp==1.17.0
+python-gnupg==0.5.0
+mypy-extensions==1.0.0
+rsd-lib==1.2.0
+XStatic-Jasmine==2.4.1.2
+googleapis-common-protos==1.59.0
+python-glanceclient==4.4.0
+jaraco.classes==3.2.3
+pyinotify==0.9.6
+debtcollector==2.5.0
+requests-unixsocket==0.3.0
+responses==0.23.1
+croniter==1.3.14
+horizon==23.3.0
+octavia-lib==3.3.0
+python-watcherclient==4.2.0
+MarkupSafe==2.1.2
+pypowervm==1.1.27
+ruamel.yaml.clib==0.2.7
+doc8==0.11.2
+pymongo==4.3.3
+python-cloudkittyclient==4.8.0
+soupsieve==2.4.1
+sqlparse==0.4.4
+oslotest==4.5.0
+jsonpointer==2.3
+defusedxml==0.7.1
+opentelemetry-sdk==1.17.0
+netaddr==0.8.0
+pyghmi==1.5.61
+sphinxcontrib-blockdiag==3.0.0
+thrift==0.16.0
+gnocchiclient==7.0.8
+backoff==2.2.1
+wcwidth==0.2.6
+sphinxcontrib.datatemplates==0.9.2
+jsonpath-rw==1.4.0
+prettytable==3.7.0
+vine==5.0.0
+taskflow==5.4.0
+traceback2==1.4.0
+arrow==1.2.3
+semantic-version==2.10.0
+async-timeout==4.0.2
+virtualbmc==3.1.0
+deprecation==2.1.0
+SQLAlchemy==1.4.41
+pyroute2==0.7.7
+google-auth==2.17.3
+kazoo==2.9.0
+pyspnego==0.8.0
+XStatic-roboto-fontface==0.5.0.0
+pyudev==0.24.1
+eventlet==0.33.3
+openstack-doc-tools==3.3.1
+oslo.messaging==14.4.1
+jira==3.5.0
+extras==1.0.0
+PyJWT==2.6.0
+typing_extensions==4.5.0
+XStatic-lodash==4.16.4.2
+zVMCloudConnector==1.6.3
+paramiko==3.1.0
+ifaddr==0.2.0
+reno==4.0.0
+ncclient==0.6.13
+imagesize==1.4.1
+pydot==1.4.2
+urllib3==1.26.15
+graphviz==0.20.1
+PyKMIP==0.10.0
+whereto==0.4.0
+pywbem==1.6.1
+python-subunit==1.4.2
+tornado==6.3.1
+pycparser==2.21
+mock==5.0.2
+PyYAML==6.0
+beautifulsoup4==4.12.2
+os-net-config==16.0.0
+ovs==2.17.1.post1
+cryptography==40.0.2
+httpcore==0.17.0
+URLObject==2.4.3
+nocasedict==2.0.0
+task-core==0.2.1
+psycopg2-binary==2.9.6
+openstack-release-test==4.1.0
+validations-libs==1.9.0
+pylxd==2.3.1
+pycryptodomex==3.17
+requests-mock==1.10.0
+os-apply-config==13.1.0
+prometheus-client==0.16.0
+oslosphinx==4.18.0
+gunicorn==20.1.0
+storpool==7.3.0
+textfsm==1.1.2
+python-3parclient==4.2.12
+unittest2==1.1.0
+django-compressor==4.3.1
+libvirt-python==9.2.0
+python-zunclient==4.7.0
+tzlocal==4.3
+sphinxcontrib-jsmath==1.0.1
+python-novaclient==18.4.0
+pact==1.12.0
+bcrypt==4.0.1
+exceptiongroup==1.1.1
+os-client-config==2.1.0
+XStatic-Angular-Gettext==2.4.1.0
+Deprecated==1.2.13
+h11==0.14.0
+Pygments==2.15.1
+XStatic-Hogan==2.0.0.3
+XStatic-objectpath==1.2.1.0
+python-manilaclient==4.6.0
+sphinxcontrib-serializinghtml==1.1.5
+requests==2.28.2
+snowballstemmer==2.2.0
+Jinja2==3.1.2
+XStatic-Bootstrap-SCSS==3.4.1.0
+pyzabbix==1.3.0
+ptyprocess==0.7.0
+threadloop==1.0.2
+amqp==5.1.1
+ruamel.yaml==0.17.21
+websockify==0.10.0
+gssapi==1.8.2
+XStatic-JQuery.quicksearch==2.0.3.2
+mpmath==1.3.0
+python-binary-memcached==0.31.2
+django-debreach==2.1.0
+sphinx-feature-classification==1.1.0
+django-pymemcache==1.0.0
+XStatic-JQuery-Migrate==3.3.2.1
+pytest-html==3.2.0
+appdirs==1.4.4
+tinyrpc==1.1.6
+google-auth-httplib2==0.1.0
+daiquiri==3.2.1
+influxdb==5.3.1
+funcparserlib==1.0.1
+passlib==1.7.4
+dib-utils==0.0.11
+cliff==4.3.0
+os-brick==6.4.0
+ansible-runner==2.3.2
+pytz-deprecation-shim==0.1.0.post0
+scp==0.14.5
+python-zaqarclient==2.6.0
+lockfile==0.12.2
+ldappool==3.0.0
+termcolor==2.2.0
+joblib==1.2.0
+google-api-python-client==2.86.0
+castellan==4.3.0
+oslo.versionedobjects==3.2.0
+ssh-python==1.0.0
+enmerkar==0.7.1
+webcolors==1.13
+aodhclient==3.3.0
+autobahn==23.1.2
+SQLAlchemy-Utils==0.41.0
+retryz==0.1.9
+pluggy==1.0.0
+coverage==7.2.3
+freezegun==1.2.2
+toml==0.10.2
+pycdlib==1.14.0
+pyperclip==1.8.2
+cassandra-driver==3.26.0
+XStatic-Angular-Schema-Form==0.8.13.0
+opentelemetry-exporter-otlp-proto-http==1.17.0
+gabbi==2.4.0
+nwdiag==3.0.0
+XStatic-bootswatch==3.3.7.0
+pytest-xdist==3.2.1
+XStatic-JS-Yaml==3.8.1.0
+XStatic-term.js==0.0.7.0
+oslo.log==5.3.0
+nodeenv==1.7.0
+gossip==2.4.0
+suds-community==1.1.2
+importlib-metadata==6.0.1
+oslo.middleware==5.2.0
+XStatic-mdi==1.6.50.2
+django-pyscss==2.0.2
+uritemplate==4.1.1
+docutils==0.18.1
+threadpoolctl==3.1.0
+os-ken==2.7.0
+ujson==5.7.0
+selenium==3.141.0
+mypy==1.2.0
+mistral-lib==2.9.0
+dogtag-pki==11.2.1
+XStatic-Angular-UUID==0.0.4.0
+purestorage==1.19.0
+sphinxcontrib-seqdiag==3.0.0
+os-win==5.9.0
+capacity==1.3.14
+retrying==1.3.4
+XStatic-Dagre==0.6.4.1
+platformdirs==3.2.0
+pydotplus==2.0.2
+boto3==1.26.118
+jeepney==0.8.0
+stestr==4.0.1
+oslo.serialization==5.2.0
+warlock==2.0.1
+exabgp==4.2.21
+sphinxcontrib-httpdomain==1.8.1
+metalsmith==2.0.1
+s3transfer==0.6.0
+text-unidecode==1.3
+sphinxcontrib-svg2pdfconverter==1.2.2
+murano-pkg-check==0.3.0
+oslo.vmware==4.2.0
+XStatic-moment==2.8.4.3
+autopage==0.5.1
+sqlalchemy-migrate==0.13.0
+gitdb==4.0.10
+python-monascaclient==2.8.0
+ldap3==2.9.1
+opentelemetry-api==1.17.0
+requests-ntlm==1.2.0
+automaton==3.2.0
+os-service-types==1.7.0
+keyring==23.13.1
+elementpath==4.1.1
+testscenarios==0.5.0
+sphinxcontrib-pecanwsme==0.11.0
+sadisplay==0.4.9
+infinisdk==215.1.5
+packaging==23.1
+opentelemetry-exporter-otlp-proto-grpc==1.17.0
+XStatic-Dagre-D3==0.4.17.0
+nose-exclude==0.5.0
+psutil==5.9.5
+py==1.11.0
+txaio==23.1.1
+elasticsearch==2.4.1
+django-nose==1.4.7
+asgiref==3.6.0
+XStatic-JQuery.TableSorter==2.14.5.2
+pifpaf==3.1.5
+pysmi==0.3.4
+blockdiag==3.0.0
+testtools==2.6.0
+infi.dtypes.iqn==0.4.0
+XStatic-tv4==1.2.7.0
+XStatic-JSEncrypt==2.3.1.1
+python-cinderclient==9.4.0
+keystonemiddleware==10.4.1
+django-formtools==2.4
+XStatic-Spin==1.2.5.3
+tap-as-a-service==12.0.0.0rc1
+os-traits==3.0.0
+typepy==1.3.0
+SecretStorage==3.3.3
+opentracing==2.4.0
+XStatic-Rickshaw==1.5.1.0
+iso8601==1.1.0
+tooz==4.2.0
+linecache2==1.0.0
+oauth2client==4.1.3
+idna==3.4
+yamlloader==1.2.2
+protobuf==4.22.3
+pyhcl==0.4.4
+sushy==4.5.1
+python-neutronclient==11.0.0
+pika==1.3.1
+oslo.cache==3.5.0
+WebTest==3.0.0
+openstack.nose-plugin==0.11
+os-collect-config==13.1.0
+edgegrid-python==1.3.1
+python-qpid-proton==0.38.0
+python-octaviaclient==3.5.1
+pysaml2==7.3.1
+requests-oauthlib==1.3.1
+oslo.reports==3.1.0
+bitmath==1.3.3.1
+ceilometermiddleware==3.2.0
+testrepository==0.0.20
+sympy==1.11.1
+Logbook==1.5.3
+PyNaCl==1.5.0
+osc-lib==2.8.1
+python-consul==1.1.0
+more-itertools==9.1.0
+seqdiag==3.0.0
+numpy==1.24.2
+msgpack==1.0.5
+Sphinx==6.2.1
+oslo.config==9.2.0
+openstackdocstheme==3.2.0
+osc-placement==4.2.0
+zake==0.2.2
+python-rsdclient==1.0.2
+flux==1.3.5
+python-solumclient==3.8.0
+krb5==0.5.0
+PyMySQL==1.0.3
+uhashring==2.3
+kubernetes==26.1.0
+httplib2==0.22.0
+betamax==0.8.1
+construct==2.10.68
+pytest-metadata==2.0.4
+pyparsing==3.0.9
+geomet==0.2.1.post1
+distlib==0.3.6
+XStatic-Moment-Timezone==0.5.22.0
+dogpile.cache==1.1.8
+python-barbicanclient==5.6.1
+salt==3006.0
+opentelemetry-semantic-conventions==0.38b0
+api-object-schema==2.0.0
+WSME==0.12.1
+tomli==2.0.1
+proboscis==1.2.6.0
+oslo.upgradecheck==2.2.0
+stevedore==5.1.0
+pywinrm==0.4.3
+botocore==1.29.118
+xmltodict==0.13.0
+pyasn1==0.4.8
+pyasn1-lextudio==1.1.2
+directord==0.12.0
+oslo.rootwrap==7.1.0
+Django==3.2.18
+pexpect==4.8.0
+contextvars==2.4
+cmd2==2.4.3
+python-json-logger==2.0.7
+redis==4.5.4
+jmespath==1.0.1
+click==8.1.3
+XStatic-smart-table==1.4.13.2
+kuryr-lib==2.8.0
+scrypt==0.8.20
+jsonpatch==1.32
+python-daemon==3.0.1
+os-testr==3.0.0
+cotyledon==1.7.3
+xattr==0.10.1
+systemd-python==235
+python-memcached==1.59
+openstacksdk==1.5.0
+looseversion==1.1.2
+six==1.16.0
+dulwich==0.21.3
+dfs-sdk==1.2.27
+sentinels==1.0.0
+kombu==5.2.4
+distro==1.8.0
+zstd==1.5.5.1
+yaql==2.0.0
+requestsexceptions==1.4.0
+testresources==2.0.1
+falcon==3.1.1
+etcd3gw==2.1.0
+Flask-RESTful==0.3.9
+GitPython==3.1.31
+python-ironicclient==5.4.0
+XStatic==1.0.3
+XStatic-Angular-FileUpload==12.2.13.0
+python-openstackclient==6.3.0
+pyzmq==25.0.2
+nocaselist==1.1.1
+oslo.db==14.1.0
+simplegeneric==0.8.1
+python-pcre==0.7
+yappi==1.4.0
+mbstrdecoder==1.1.2
+abclient==0.2.3
+pymemcache==4.0.0
+wrapt==1.15.0
+oslo.privsep==3.2.0
+sphinxcontrib-apidoc==0.3.0
+oslo.policy==4.2.1
+python-muranoclient==2.7.0
+hvac==1.1.0
+pyeclib==1.6.1
+wsgi-intercept==1.11.0
+ndg-httpsclient==0.5.1
+pyrsistent==0.19.3
+repoze.lru==0.7
+rfc3986==2.0.0
+tenacity==6.3.1
+python-designateclient==5.3.0
+future==0.18.3
+pytest-cov==4.0.0
+Paste==3.5.2
+pytest-django==4.5.2
+jaeger-client==4.8.0
+XStatic-Json2yaml==0.1.1.0
+boto==2.49.0
+os-vif==3.2.0
+hyperlink==21.0.0
+mitba==1.1.1
+python-masakariclient==8.2.0
+Werkzeug==2.2.3
+pyasn1-modules==0.3.0
+pyasn1-modules-lextudio==0.2.9
+APScheduler==3.10.1
+xmlschema==2.2.3
+python-troveclient==8.2.1
+etcd3==0.12.0
+cachez==0.1.2
+XStatic-Bootstrap-Datepicker==1.4.0.0
+CouchDB==1.2
+netifaces==0.11.0
+cachetools==5.3.0
+ws4py==0.5.1
+sphinxcontrib-qthelp==1.0.3
+keystoneauth1==5.3.0
+statsd==4.0.1
+XenAPI==23.8.0
+python-keystoneclient==5.2.0
+ceilometer==21.0.0.0rc1
+diskimage-builder==3.29.0
+heat-translator==2.8.0
+python-magnumclient==4.2.0
+docker==6.0.1
+storops==1.2.11
+anyio==3.6.2
+XStatic-Angular-lrdragndrop==1.0.2.6
+ovsdbapp==2.4.1
+aniso8601==9.0.1
+rjsmin==1.2.1
+icalendar==5.0.5
+decorator==5.1.1
+DateTimeRange==2.1.0
+cffi==1.15.1
+python-cyborgclient==2.2.1
+futurist==2.4.1
+jsonschema==4.17.3
+sphinxcontrib-devhelp==1.0.2
+python-blazarclient==3.7.0
+alembic==1.9.4
+execnet==1.9.0
+glance-store==4.6.1
+sphinxcontrib-programoutput==0.17
+storpool.spopenstack==3.2.0
+sphinx-testing==1.0.1
+dnspython==2.3.0
+oauthlib==3.2.2
+Babel==2.12.1
+logutils==0.3.5
+zipp==3.15.0
+greenlet==2.0.2
+XStatic-Angular-Vis==4.16.0.0
+iniconfig==2.0.0
+confluent-kafka==2.1.0
+xvfbwrapper==0.2.9
+tosca-parser==2.9.1
+charset-normalizer==3.1.0
+Flask==2.2.3
+httpx==0.24.0
+sqlalchemy-filters==0.13.0
+marathon==0.13.0
+sphinxcontrib-runcmd==0.2.0
+confspirator==0.3.0
+fasteners==0.18
+sortedcontainers==2.4.0
+python-linstor==1.18.0
+filelock==3.12.0
+python-tackerclient==1.14.0
+python-heatclient==3.3.0
+kafka-python==2.0.2
+oslo.utils==6.2.1
+gitdb2==4.0.2
+requests-kerberos==0.14.0
+itsdangerous==2.1.2
+XStatic-jquery-ui==1.13.0.1
+monasca-statsd==2.7.0
+python-dateutil==2.8.2
+virtualenv==20.22.0
+colorama==0.4.6
+confetti==2.5.3
+ironic-lib==5.5.0
+pytz==2023.3
+opentelemetry-proto==1.17.0
+XStatic-D3==3.5.17.0
+actdiag==3.0.0
+sysv-ipc==1.1.0
+sphinxcontrib-applehelp==1.0.4
+scikit-learn==1.2.2
diff --git a/images/cloud-archive-builder/Earthfile b/images/cloud-archive-builder/Earthfile
new file mode 100644
index 0000000..572a3e0
--- /dev/null
+++ b/images/cloud-archive-builder/Earthfile
@@ -0,0 +1,39 @@
+VERSION 0.7
+
+image:
+  ARG RELEASE
+  FROM ../cloud-archive-base+image --RELEASE=${RELEASE}
+  DO ../+APT_INSTALL --PACKAGES "\
+    build-essential \
+    curl \
+    git \
+    libssl-dev \
+    libpcre3-dev \
+    lsb-release \
+    openssh-client \
+    python3 \
+    python3-dev \
+    python3-pip \
+    python3-venv"
+  RUN --mount type=cache,target=/root/.cache \
+    python3 -m venv --upgrade --system-site-packages /var/lib/openstack
+  ENV UWSGI_PROFILE_OVERRIDE=ssl=true
+  RUN --mount type=cache,target=/root/.cache \
+    mkdir -p /wheels && \
+    /var/lib/openstack/bin/pip3 wheel --wheel-dir /wheels uwsgi
+  COPY ${RELEASE}/upper-constraints.txt /upper-constraints.txt
+  ARG PROJECT
+  ARG PROJECT_REF
+  ARG PROJECT_REPO=https://opendev.org/openstack/${PROJECT}
+  GIT CLONE --branch ${PROJECT_REF} ${PROJECT_REPO} /src
+  # TODO(mnaser): patches
+  ARG EXTRAS=""
+  ARG PIP_PACKAGES=""
+  RUN --mount=type=cache,target=/root/.cache \
+    /var/lib/openstack/bin/pip3 install \
+      --constraint /upper-constraints.txt \
+      --find-links /wheels/ \
+      uwsgi \
+      /src${EXTRAS} \
+      ${PIP_PACKAGES}
+  SAVE ARTIFACT /var/lib/openstack venv
diff --git a/images/cloud-archive-builder/zed/upper-constraints.txt b/images/cloud-archive-builder/zed/upper-constraints.txt
new file mode 100644
index 0000000..16a1aeb
--- /dev/null
+++ b/images/cloud-archive-builder/zed/upper-constraints.txt
@@ -0,0 +1,592 @@
+ntlm-auth==1.5.0
+voluptuous==0.13.1
+chardet==5.0.0
+enum-compat==0.0.3
+rsa==4.9
+restructuredtext-lint==1.4.0
+netmiko==4.1.2
+sshtunnel==0.4.0
+PasteDeploy==2.1.1
+typing==3.7.4.3
+python-saharaclient==4.0.2
+Routes==2.5.1
+rtslib-fb==2.1.75
+oslo.limit==2.0.1
+tzdata==2022.2
+smmap==5.0.0
+confget==4.1.0
+XStatic-Angular-Bootstrap==2.5.0.0
+WebOb==1.8.7
+sphinxcontrib-actdiag==3.0.0
+pecan==1.4.2
+ryu==4.34
+os-api-ref==2.3.0
+python-ldap==3.4.2
+oslo.concurrency==5.0.1
+websocket-client==1.4.0
+osprofiler==3.4.3
+os-resource-classes==1.1.0
+tabulate==0.8.10
+python-ironic-inspector-client==4.8.0
+lxml==4.9.1
+vintage==0.4.1
+ntc-templates==3.1.0
+rst2txt==1.1.0
+setproctitle==1.3.2
+pytest==7.1.2
+python-slugify==6.1.2
+cursive==0.2.2
+oslo.service==3.0.0
+django-appconf==1.0.5
+sphinxcontrib-nwdiag==2.0.0
+rbd-iscsi-client==0.1.8
+requests-aws==0.1.8
+alabaster==0.7.12
+pbr==5.10.0
+munch==2.5.0
+waiting==1.4.1
+attrs==22.1.0
+microversion-parse==1.0.1
+Pint==0.19.2
+oslo.i18n==5.1.0
+jsonpath-rw-ext==1.2.2
+python-mistralclient==4.5.0
+oslo.context==5.0.0
+python-senlinclient==2.5.0
+rcssmin==1.1.0
+pycadf==3.1.1
+grpcio==1.47.0
+pysendfile==2.0.1
+sniffio==1.2.0
+fixtures==4.0.1
+neutron-lib==3.1.2
+XStatic-FileSaver==1.3.2.0
+oslo.metrics==0.5.1
+storage-interfaces==1.0.4
+persist-queue==0.8.0
+pystache==0.6.0
+XStatic-Font-Awesome==4.7.0.0
+nose==1.3.7
+nosehtmloutput==0.0.7
+waitress==2.1.2
+os-refresh-config==13.1.0
+pysnmp==4.4.12
+Mako==1.2.2
+pyScss==1.4.0
+sphinxcontrib-htmlhelp==2.0.0
+XStatic-jQuery==1.12.4.1
+ddt==1.6.0
+XStatic-Graphlib==2.1.7.0
+pyserial==3.5
+moto==3.1.16
+infi.dtypes.wwn==0.1.1
+python-freezerclient==5.0.0
+os-xenapi==0.3.4
+python-vitrageclient==4.6.0
+nosexcover==1.0.11
+krest==1.3.3
+psycopg2==2.9.3
+networkx==2.8.6
+XStatic-Angular==1.8.2.2
+pyngus==2.3.1
+Pillow==9.2.0
+zuul-sphinx==0.6.0
+tripleo-common==16.4.0
+Tempita==0.5.2
+ply==3.11
+google-api-core==2.8.2
+requests-toolbelt==0.9.1
+simplejson==3.17.6
+suds-jurko==0.6
+types-paramiko==2.11.3
+immutables==0.18
+python-swiftclient==4.1.0
+pyOpenSSL==22.0.0
+monasca-common==3.6.0
+zeroconf==0.39.0
+scipy==1.9.1
+python-gnupg==0.5.0
+mypy-extensions==0.4.3
+rsd-lib==1.2.0
+XStatic-Jasmine==2.4.1.2
+googleapis-common-protos==1.56.4
+python-glanceclient==4.1.0
+pyinotify==0.9.6
+debtcollector==2.5.0
+requests-unixsocket==0.3.0
+responses==0.21.0
+croniter==1.3.5
+horizon==23.0.0
+octavia-lib==3.1.0
+python-watcherclient==4.0.0
+MarkupSafe==2.1.1
+pypowervm==1.1.27
+ruamel.yaml.clib==0.2.6
+doc8==0.11.2
+pymongo==4.2.0
+python-cloudkittyclient==4.6.0
+soupsieve==2.3.2.post1
+sqlparse==0.4.2
+oslotest==4.5.0
+jsonpointer==2.3
+defusedxml==0.7.1
+netaddr==0.8.0
+pyghmi==1.5.51
+sphinxcontrib-blockdiag==3.0.0
+thrift==0.16.0
+gnocchiclient==7.0.7
+wcwidth==0.2.5
+sphinxcontrib.datatemplates==0.9.1
+jsonpath-rw==1.4.0
+prettytable==3.4.1
+vine==5.0.0
+taskflow==5.0.0
+traceback2==1.4.0
+arrow==1.2.2
+semantic-version==2.10.0
+async-timeout==4.0.2
+virtualbmc==2.2.2
+deprecation==2.1.0
+SQLAlchemy==1.4.40
+pyroute2==0.7.2
+google-auth==2.11.0
+kazoo==2.8.0
+pyspnego==0.6.0
+XStatic-roboto-fontface==0.5.0.0
+pyudev==0.24.0
+eventlet==0.33.1
+openstack-doc-tools==3.3.1
+oslo.messaging==14.0.1
+jira==3.4.0
+extras==1.0.0
+PyJWT==2.4.0
+typing_extensions==4.3.0
+XStatic-lodash==4.16.4.2
+zVMCloudConnector==1.4.1
+paramiko==2.11.0
+ifaddr==0.2.0
+reno==3.5.0
+ncclient==0.6.13
+imagesize==1.4.1
+pydot==1.4.2
+urllib3==1.26.12
+graphviz==0.20.1
+PyKMIP==0.10.0
+whereto==0.4.0
+pywbem==1.4.1
+python-subunit==1.4.0
+tornado==6.2
+pycparser==2.21
+mock==4.0.3
+PyYAML==6.0
+beautifulsoup4==4.11.1
+os-net-config==15.2.0
+ovs==2.17.1.post1
+cryptography==36.0.2
+httpcore==0.15.0
+URLObject==2.4.3
+nocasedict==1.0.4
+task-core==0.2.1
+psycopg2-binary==2.9.3
+openstack-release-test==3.3.1
+validations-libs==1.7.1
+pylxd==2.3.1
+pycryptodomex==3.15.0
+anyjson==0.3.3
+requests-mock==1.9.3
+os-apply-config==13.1.0
+prometheus-client==0.14.1
+oslosphinx==4.18.0
+gunicorn==20.1.0
+storpool==7.1.0
+textfsm==1.1.2
+python-3parclient==4.2.12
+unittest2==1.1.0
+django-compressor==4.1
+libvirt-python==8.6.0
+python-zunclient==4.5.0
+tzlocal==4.2
+sphinxcontrib-jsmath==1.0.1
+python-novaclient==18.1.0
+pact==1.12.0
+bcrypt==4.0.0
+os-client-config==2.1.0
+XStatic-Angular-Gettext==2.4.1.0
+Deprecated==1.2.13
+h11==0.12.0
+Pygments==2.13.0
+XStatic-Hogan==2.0.0.3
+XStatic-objectpath==1.2.1.0
+python-manilaclient==4.1.2
+sphinxcontrib-serializinghtml==1.1.5
+requests==2.28.1
+snowballstemmer==2.2.0
+Jinja2==3.1.2
+XStatic-Bootstrap-SCSS==3.4.1.0
+pyzabbix==1.2.1
+ptyprocess==0.7.0
+threadloop==1.0.2
+amqp==5.1.1
+ruamel.yaml==0.17.21
+websockify==0.10.0
+gssapi==1.8.1
+XStatic-JQuery.quicksearch==2.0.3.2
+mpmath==1.2.1
+python-binary-memcached==0.31.1
+django-debreach==2.1.0
+sphinx-feature-classification==1.1.0
+django-pymemcache==1.0.0
+XStatic-JQuery-Migrate==1.2.1.2
+pytest-html==3.1.1
+appdirs==1.4.4
+tinyrpc==1.1.5
+google-auth-httplib2==0.1.0
+pkgutil_resolve_name==1.3.10;python_version=='3.8'
+daiquiri==3.2.1
+influxdb==5.3.1
+funcparserlib==1.0.0
+passlib==1.7.4
+dib-utils==0.0.11
+cliff==4.0.0
+os-brick==6.1.1
+ansible-runner==2.2.1
+pytz-deprecation-shim==0.1.0.post0
+scp==0.14.4
+python-zaqarclient==2.4.0
+lockfile==0.12.2
+ldappool==3.0.0
+termcolor==1.1.0
+joblib==1.1.0
+google-api-python-client==2.58.0
+castellan==4.0.0
+oslo.versionedobjects==3.0.1
+ssh-python==0.10.0
+enmerkar==0.7.1
+webcolors==1.12
+aodhclient==3.0.0
+autobahn==22.7.1
+SQLAlchemy-Utils==0.38.3
+retryz==0.1.9
+pluggy==1.0.0
+coverage==6.4.4
+freezegun==1.2.2
+toml==0.10.2
+pycdlib==1.13.0
+pyperclip==1.8.2
+cassandra-driver==3.25.0
+XStatic-Angular-Schema-Form==0.8.13.0
+gabbi==2.4.0
+nwdiag==3.0.0
+XStatic-bootswatch==3.3.7.0
+pytest-xdist==2.5.0
+XStatic-JS-Yaml==3.8.1.0
+XStatic-term.js==0.0.7.0
+oslo.log==5.0.0
+nodeenv==1.7.0
+gossip==2.4.0
+suds-community==1.1.2
+importlib-metadata==4.12.0
+oslo.middleware==5.0.0
+XStatic-mdi==1.6.50.2
+django-pyscss==2.0.2
+uritemplate==4.1.1
+docutils==0.17.1
+threadpoolctl==3.1.0
+os-ken==2.5.0
+ujson==5.4.0
+selenium==3.141.0
+mypy==0.971
+mistral-lib==2.7.0
+dogtag-pki==10.7.4.1
+XStatic-Angular-UUID==0.0.4.0
+purestorage==1.19.0
+sphinxcontrib-seqdiag==3.0.0
+os-win==5.7.1
+capacity==1.3.14
+retrying==1.3.3
+XStatic-Dagre==0.6.4.1
+platformdirs==2.5.2
+pydotplus==2.0.2
+boto3==1.24.61
+jeepney==0.8.0
+stestr==3.2.1
+oslo.serialization==5.0.0
+warlock==2.0.1
+exabgp==4.2.21
+sphinxcontrib-httpdomain==1.8.0
+metalsmith==1.8.0
+s3transfer==0.6.0
+text-unidecode==1.3
+sphinxcontrib-svg2pdfconverter==1.2.0
+murano-pkg-check==0.3.0
+oslo.vmware==4.0.1
+XStatic-moment==2.8.4.3
+autopage==0.5.1
+sqlalchemy-migrate==0.13.0
+gitdb==4.0.9
+python-monascaclient==2.6.0
+ldap3==2.9.1
+requests-ntlm==1.1.0
+sphinx-rtd-theme==0.5.1
+automaton==3.0.1
+os-service-types==1.7.0
+keyring==23.8.2
+elementpath==3.0.2
+testscenarios==0.5.0
+sphinxcontrib-pecanwsme==0.10.0
+sadisplay==0.4.9
+infinisdk==206.1.2
+packaging==21.3
+XStatic-Dagre-D3==0.4.17.0
+nose-exclude==0.5.0
+psutil==5.9.1
+py==1.11.0
+txaio==22.2.1
+elasticsearch==2.4.1
+django-nose==1.4.7
+asgiref==3.5.2
+XStatic-JQuery.TableSorter==2.14.5.2
+pifpaf==3.1.5
+pysmi==0.3.4
+blockdiag==3.0.0
+testtools==2.5.0
+infi.dtypes.iqn==0.4.0
+XStatic-tv4==1.2.7.0
+XStatic-JSEncrypt==2.3.1.1
+python-cinderclient==9.1.1
+keystonemiddleware==10.1.0
+django-formtools==2.3
+XStatic-Spin==1.2.5.3
+tap-as-a-service==10.0.0
+os-traits==2.9.0
+typepy==1.3.0
+SecretStorage==3.3.3
+opentracing==2.4.0
+XStatic-Rickshaw==1.5.1.0
+iso8601==1.0.2
+tooz==3.1.0
+linecache2==1.0.0
+oauth2client==4.1.3
+idna==3.3
+yamlloader==1.1.0
+protobuf==4.21.5
+sushy==4.3.3
+python-neutronclient==8.1.0
+pika==1.3.0
+oslo.cache==3.2.0
+WebTest==3.0.0
+openstack.nose-plugin==0.11
+os-collect-config==13.1.0
+edgegrid-python==1.2.1
+python-qpid-proton==0.37.0
+python-octaviaclient==3.1.0
+pysaml2==7.2.1
+requests-oauthlib==1.3.1
+oslo.reports==2.4.0
+bitmath==1.3.3.1
+ceilometermiddleware==3.0.0
+python-nss==1.0.1
+testrepository==0.0.20
+sympy==1.11
+Logbook==1.5.3
+PyNaCl==1.5.0
+osc-lib==2.6.2
+python-consul==1.1.0
+seqdiag==3.0.0
+numpy==1.23.2
+msgpack==1.0.4
+Sphinx==4.5.0
+oslo.config==9.0.0
+openstackdocstheme==3.0.0
+osc-placement==4.0.0
+zake==0.2.2
+python-rsdclient==1.0.2
+flux==1.3.5
+python-solumclient==3.6.1
+krb5==0.4.0
+PyMySQL==1.0.2
+uhashring==2.1
+kubernetes==24.2.0
+httplib2==0.20.4
+betamax==0.8.1
+construct==2.10.68
+pytest-metadata==2.0.2
+pyparsing==3.0.9
+geomet==0.2.1.post1
+distlib==0.3.6
+XStatic-Moment-Timezone==0.5.22.0
+dogpile.cache==1.1.8
+python-barbicanclient==5.4.0
+salt==3005
+api-object-schema==2.0.0
+WSME==0.11.0
+tomli==2.0.1
+proboscis==1.2.6.0
+backports.zoneinfo==0.2.1;python_version=='3.8'
+oslo.upgradecheck==2.0.0
+stevedore==4.0.2
+pywinrm==0.4.3
+botocore==1.27.61
+xmltodict==0.13.0
+pyasn1==0.4.8
+directord==0.12.0
+oslo.rootwrap==6.3.1
+Django==3.2.15
+pexpect==4.8.0
+contextvars==2.4
+cmd2==2.4.2
+python-json-logger==2.0.4
+redis==4.3.4
+jmespath==1.0.1
+click==8.1.3
+XStatic-smart-table==1.4.13.2
+kuryr-lib==2.6.0
+scrypt==0.8.20
+jsonpatch==1.32
+python-daemon==2.3.1
+types-cryptography==3.3.23
+os-testr==3.0.0
+cotyledon==1.7.3
+xattr==0.9.9
+systemd-python==234
+python-memcached==1.59
+openstacksdk==0.101.0
+six==1.16.0
+dulwich==0.20.45
+dfs-sdk==1.2.27
+sentinels==1.0.0
+kombu==5.2.4
+distro==1.7.0
+zstd==1.5.2.5
+yaql==2.0.0
+requestsexceptions==1.4.0
+testresources==2.0.1
+falcon==3.1.0
+etcd3gw==2.1.0
+Flask-RESTful==0.3.9
+GitPython==3.1.27
+python-ironicclient==5.0.1
+XStatic==1.0.2
+XStatic-Angular-FileUpload==12.0.4.0
+python-openstackclient==6.0.0
+pyzmq==20.0.0
+nocaselist==1.0.6
+oslo.db==12.1.1
+simplegeneric==0.8.1
+python-pcre==0.7
+yappi==1.3.6
+mbstrdecoder==1.1.1
+abclient==0.2.3
+pymemcache==3.5.2
+wrapt==1.14.1
+oslo.privsep==3.0.1
+sphinxcontrib-apidoc==0.3.0
+oslo.policy==4.0.0
+python-muranoclient==2.5.0
+hvac==0.11.2
+pyeclib==1.6.1
+wsgi-intercept==1.10.0
+ndg-httpsclient==0.5.1
+pyrsistent==0.18.1
+repoze.lru==0.7
+rfc3986==1.5.0
+tenacity==6.3.1
+python-designateclient==5.0.0
+future==0.18.2
+Paste==3.5.2
+pytest-django==4.5.2
+jaeger-client==4.8.0
+XStatic-Json2yaml==0.1.1.0
+boto==2.49.0
+os-vif==2.8.0
+hyperlink==21.0.0
+mitba==1.1.1
+python-masakariclient==8.0.0
+Werkzeug==2.2.2
+pyasn1-modules==0.2.8
+APScheduler==3.9.1
+monotonic==1.6
+xmlschema==2.0.3
+python-troveclient==8.0.0
+etcd3==0.12.0
+cachez==0.1.2
+XStatic-Bootstrap-Datepicker==1.4.0.0
+CouchDB==1.2
+netifaces==0.11.0
+cachetools==5.2.0
+ws4py==0.5.1
+sphinxcontrib-qthelp==1.0.3
+keystoneauth1==5.0.0
+statsd==3.3.0
+XenAPI==2.14
+importlib-resources==5.9.0;python_version=='3.8'
+python-keystoneclient==5.0.1
+ceilometer==19.1.0
+diskimage-builder==3.24.0
+heat-translator==2.6.0
+python-magnumclient==4.0.0
+docker==6.0.0
+storops==1.2.11
+anyio==3.6.1
+XStatic-Angular-lrdragndrop==1.0.2.4
+ovsdbapp==2.1.1
+aniso8601==9.0.1
+rjsmin==1.2.0
+icalendar==4.1.0
+decorator==5.1.1
+DateTimeRange==1.2.0
+cffi==1.15.1
+python-cyborgclient==2.0.0
+futurist==2.4.1
+jsonschema==4.14.0
+sphinxcontrib-devhelp==1.0.2
+python-blazarclient==3.5.0
+alembic==1.8.1
+execnet==1.9.0
+glance-store==4.1.1
+sphinxcontrib-programoutput==0.17
+storpool.spopenstack==3.1.0
+sphinx-testing==1.0.1
+dnspython==2.2.1
+oauthlib==3.2.0
+Babel==2.10.3
+logutils==0.3.5
+zipp==3.8.1
+greenlet==1.1.3
+XStatic-Angular-Vis==4.16.0.0
+iniconfig==1.1.1
+confluent-kafka==1.9.2
+xvfbwrapper==0.2.9
+tosca-parser==2.6.0
+charset-normalizer==2.1.1
+Flask==2.2.2
+httpx==0.23.0
+sqlalchemy-filters==0.12.0
+marathon==0.13.0
+sphinxcontrib-runcmd==0.2.0
+confspirator==0.3.0
+fasteners==0.17.3
+sortedcontainers==2.4.0
+python-linstor==1.13.0
+filelock==3.8.0
+python-tackerclient==1.12.0
+python-heatclient==3.1.0
+kafka-python==2.0.2
+oslo.utils==6.0.2
+gitdb2==4.0.2
+requests-kerberos==0.14.0
+itsdangerous==2.1.2
+XStatic-jquery-ui==1.13.0.1
+monasca-statsd==2.5.0
+python-dateutil==2.8.2
+virtualenv==20.16.3
+colorama==0.4.5
+confetti==2.5.3
+ironic-lib==5.3.0
+pytz==2022.2.1
+pytest-forked==1.4.0
+XStatic-D3==3.5.17.0
+actdiag==3.0.0
+sysv-ipc==1.1.0
+sphinxcontrib-applehelp==1.0.2
+scikit-learn==1.1.2
diff --git a/images/glance/Earthfile b/images/glance/Earthfile
new file mode 100644
index 0000000..b104e42
--- /dev/null
+++ b/images/glance/Earthfile
@@ -0,0 +1,13 @@
+VERSION 0.7
+
+image:
+  # TODO: manage via renovate
+  ARG RELEASE=zed
+  ARG REF=06a18202ab52c64803f044b8f848ed1c160905d2
+  ARG PACKAGES="ceph-common lsscsi nvme-cli python3-rados python3-rbd qemu-utils sysfsutils udev util-linux"
+  ARG PIP_PACKAGES="glance_store[cinder]"
+  FROM ../openstack-service+image --RELEASE ${RELEASE} --PROJECT glance --PROJECT_REF ${REF} --PACKAGES "${PACKAGES}" --PIP_PACKAGES "${PIP_PACKAGES}"
+  COPY ../kubernetes+image/kubectl /usr/local/bin/kubectl
+  SAVE IMAGE --push \
+    ghcr.io/vexxhost/atmosphere/glance:${RELEASE} \
+    ghcr.io/vexxhost/atmosphere/glance:${REF}
diff --git a/images/kubernetes/Earthfile b/images/kubernetes/Earthfile
new file mode 100644
index 0000000..bf613b2
--- /dev/null
+++ b/images/kubernetes/Earthfile
@@ -0,0 +1,7 @@
+VERSION 0.7
+
+image:
+  FROM curlimages/curl:7.78.0
+  RUN curl -L "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/${TARGETOS}/${TARGETARCH}/kubectl" -o /tmp/kubectl
+  RUN chmod +x /tmp/kubectl
+  SAVE ARTIFACT /tmp/kubectl kubectl
diff --git a/images/openstack-service/Earthfile b/images/openstack-service/Earthfile
new file mode 100644
index 0000000..c3dee25
--- /dev/null
+++ b/images/openstack-service/Earthfile
@@ -0,0 +1,17 @@
+VERSION 0.7
+
+image:
+  ARG RELEASE
+  FROM ../cloud-archive-base+image --RELEASE=${RELEASE}
+  ARG PACKAGES
+  DO \
+    ../+APT_INSTALL \
+    --PACKAGES ${PACKAGES}
+  ARG PROJECT
+  ARG PROJECT_REF
+  ARG PIP_PACKAGES
+  DO ../+CREATE_PROJECT_USER --PROJECT=${PROJECT}
+  ENV PATH=/var/lib/openstack/bin:$PATH
+  COPY \
+    (../cloud-archive-builder+image/venv --RELEASE=${RELEASE} --PROJECT=${PROJECT} --PROJECT_REF=${PROJECT_REF} --PIP_PACKAGES=${PIP_PACKAGES}) \
+    /var/lib/openstack