Namespace
serversideup
Image / Tag
ansible:9.13-alpine-python3.11-v1.0.0
Content Digest
sha256:1a3470ce8706c10bb1bd299c0aefcd01e3442b3b9167f8ed4884f3f15506102c
Details
Created

2025-01-13 23:17:30 UTC

Size

193 MB

Content Digest
Labels
  • org.opencontainers.image.authors
    Jay Rogers (@jaydrogers)
  • org.opencontainers.image.description
    Run Ansible anywhere with a lightweight and powerful Docker image
  • org.opencontainers.image.documentation
    https://github.com/serversideup/docker-ansible
  • org.opencontainers.image.licenses
    GPL-3.0-or-later
  • org.opencontainers.image.source
    https://github.com/serversideup/docker-ansible
  • org.opencontainers.image.title
    serversideup/ansible
  • org.opencontainers.image.url
    https://github.com/serversideup/docker-ansible
  • org.opencontainers.image.vendor
    ServerSideUp
  • org.opencontainers.image.version
    v1.0.0

Environment
ANSIBLE_COLLECTIONS_PATH

/etc/ansible/collections

ANSIBLE_HOME

/etc/ansible

ANSIBLE_WORK_DIR

/ansible

DEBUG

false

GPG_KEY

A035C8C19219BA821ECEA86B64E628F8D684696D

LANG

C.UTF-8

PATH

/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

PYTHON_SHA256

2a9920c7a0cd236de33644ed980a13cbbc21058bfdc528febb6081575ed73be3

PYTHON_VERSION

3.11.11


Layers

[#000] sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b - 1.79% (3.46 MB)

[#001] sha256:99a1bc7353c62946b5992abb31549d0823f8904ca3ecedd64be6d502d48eeaca - 0.23% (448 KB)

[#002] sha256:68d9463d3caf6661f058fa6756216c7d78f0b37063fe66760d27be6b7d644050 - 7.95% (15.4 MB)

[#003] sha256:9edda734ffd05bef7132ecefe171e3bf5ad2c77b0ffe7884700234746e0037c6 - 0.0% (252 Bytes)

[#004] sha256:c92ed9637fac64e87bbdfb9cab43b98dfd59190bdfe7eb8401bf2253059c02bb - 0.0% (2.29 KB)

[#005] sha256:68a822a56f5d58acca42a30e2defd48583f0c7f220fc2c31de0e52d5b7e5bbd3 - 90.03% (174 MB)

[#006] sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 - 0.0% (32 Bytes)


History
2024-12-03 22:49:59 UTC (buildkit.dockerfile.v0)

ADD alpine-minirootfs-3.20.5-x86_64.tar.gz / # buildkit

2024-12-03 22:49:59 UTC (buildkit.dockerfile.v0)

CMD ["/bin/sh"]

2024-12-03 22:49:59 UTC (buildkit.dockerfile.v0)

ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

2024-12-03 22:49:59 UTC (buildkit.dockerfile.v0)

ENV LANG=C.UTF-8

2024-12-03 22:49:59 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c set -eux; apk add --no-cache ca-certificates tzdata ; # buildkit

2024-12-03 22:49:59 UTC (buildkit.dockerfile.v0)

ENV GPG_KEY=A035C8C19219BA821ECEA86B64E628F8D684696D

2024-12-03 22:49:59 UTC (buildkit.dockerfile.v0)

ENV PYTHON_VERSION=3.11.11

2024-12-03 22:49:59 UTC (buildkit.dockerfile.v0)

ENV PYTHON_SHA256=2a9920c7a0cd236de33644ed980a13cbbc21058bfdc528febb6081575ed73be3

2024-12-03 22:49:59 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c set -eux; apk add --no-cache --virtual .build-deps gnupg tar xz bluez-dev bzip2-dev dpkg-dev dpkg findutils gcc gdbm-dev libc-dev libffi-dev libnsl-dev libtirpc-dev linux-headers make ncurses-dev openssl-dev pax-utils readline-dev sqlite-dev tcl-dev tk tk-dev util-linux-dev xz-dev zlib-dev ; wget -O python.tar.xz "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz"; echo "$PYTHON_SHA256 *python.tar.xz" | sha256sum -c -; wget -O python.tar.xz.asc "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz.asc"; GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$GPG_KEY"; gpg --batch --verify python.tar.xz.asc python.tar.xz; gpgconf --kill all; rm -rf "$GNUPGHOME" python.tar.xz.asc; mkdir -p /usr/src/python; tar --extract --directory /usr/src/python --strip-components=1 --file python.tar.xz; rm python.tar.xz; cd /usr/src/python; gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; ./configure --build="$gnuArch" --enable-loadable-sqlite-extensions --enable-option-checking=fatal --enable-shared --with-lto --with-ensurepip ; nproc="$(nproc)"; EXTRA_CFLAGS="-DTHREAD_STACK_SIZE=0x100000"; LDFLAGS="${LDFLAGS:--Wl},--strip-all"; make -j "$nproc" "EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" "LDFLAGS=${LDFLAGS:-}" ; rm python; make -j "$nproc" "EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" "LDFLAGS=${LDFLAGS:--Wl},-rpath='\$\$ORIGIN/../lib'" python ; make install; cd /; rm -rf /usr/src/python; find /usr/local -depth \( \( -type d -a \( -name test -o -name tests -o -name idle_test \) \) -o \( -type f -a \( -name '*.pyc' -o -name '*.pyo' -o -name 'libpython*.a' \) \) \) -exec rm -rf '{}' + ; find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec scanelf --needed --nobanner --format '%n#p' '{}' ';' | tr ',' '\n' | sort -u | awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' | xargs -rt apk add --no-network --virtual .python-rundeps ; apk del --no-network .build-deps; export PYTHONDONTWRITEBYTECODE=1; python3 --version; pip3 install --disable-pip-version-check --no-cache-dir --no-compile 'setuptools==65.5.1' wheel ; pip3 --version # buildkit

2024-12-03 22:49:59 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c set -eux; for src in idle3 pip3 pydoc3 python3 python3-config; do dst="$(echo "$src" | tr -d 3)"; [ -s "/usr/local/bin/$src" ]; [ ! -e "/usr/local/bin/$dst" ]; ln -svT "$src" "/usr/local/bin/$dst"; done # buildkit

2024-12-03 22:49:59 UTC (buildkit.dockerfile.v0)

CMD ["python3"]

2025-01-13 23:14:08 UTC (buildkit.dockerfile.v0)

ARG BUILD_ANSIBLE_VARIATION=ansible

2025-01-13 23:14:08 UTC (buildkit.dockerfile.v0)

ARG BUILD_ANSIBLE_PATCH_VERSION=9.13.0

2025-01-13 23:14:08 UTC (buildkit.dockerfile.v0)

ARG PACKAGE_DEPENDENCIES=build-base,git,libffi-dev,jq,openssh-client,openssl-dev,rsync,shadow,sshpass,su-exec

2025-01-13 23:14:08 UTC (buildkit.dockerfile.v0)

ARG PUID=1000

2025-01-13 23:14:08 UTC (buildkit.dockerfile.v0)

ARG PGID=1000

2025-01-13 23:14:08 UTC (buildkit.dockerfile.v0)

ARG REPOSITORY_BUILD_VERSION=v1.0.0

2025-01-13 23:14:08 UTC (buildkit.dockerfile.v0)

ENV DEBUG=false ANSIBLE_WORK_DIR=/ansible ANSIBLE_HOME=/etc/ansible ANSIBLE_COLLECTIONS_PATH=/etc/ansible/collections

2025-01-13 23:14:08 UTC (buildkit.dockerfile.v0)

COPY --chown=root:root --chmod=755 src/rootfs / # buildkit

2025-01-13 23:17:30 UTC (buildkit.dockerfile.v0)

RUN |6 BUILD_ANSIBLE_VARIATION=ansible BUILD_ANSIBLE_PATCH_VERSION=9.13.0 PACKAGE_DEPENDENCIES=build-base,git,libffi-dev,jq,openssh-client,openssl-dev,rsync,shadow,sshpass,su-exec PUID=1000 PGID=1000 REPOSITORY_BUILD_VERSION=v1.0.0 /bin/sh -c serversideup-dep-install-alpine ${PACKAGE_DEPENDENCIES} && serversideup-dep-install-debian ${PACKAGE_DEPENDENCIES} && ARCH=$(uname -m) && if [ "${ARCH}" = "x86_64" ]; then YQ_BINARY="yq_linux_amd64"; elif [ "${ARCH}" = "aarch64" ]; then YQ_BINARY="yq_linux_arm64"; else echo "Unsupported architecture: ${ARCH}"; exit 1; fi && if [ -f /etc/alpine-release ]; then wget https://github.com/mikefarah/yq/releases/latest/download/${YQ_BINARY} -O /usr/bin/yq && chmod +x /usr/bin/yq; else wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/${YQ_BINARY} && chmod a+x /usr/local/bin/yq; fi && serversideup-create-unprivileged-user ansible "${PUID}" "${PGID}" && mkdir -p "${ANSIBLE_HOME}/tmp" && echo -e '[local]\nlocalhost ansible_host=127.0.0.1' > "${ANSIBLE_HOME}/hosts" && chown -R "${PUID}:${PGID}" "${ANSIBLE_HOME}" && chmod 1777 "${ANSIBLE_HOME}/tmp" && mkdir -p "${ANSIBLE_WORK_DIR}" && chown -R "${PUID}:${PGID}" "${ANSIBLE_WORK_DIR}" && mkdir -p /ssh && chmod 700 /ssh && chown "${PUID}:${PGID}" /ssh && ln -s /ssh /home/ansible/.ssh && echo "🤓 Installing ${BUILD_ANSIBLE_VARIATION}==${BUILD_ANSIBLE_PATCH_VERSION}" && pip3 install --no-cache-dir "${BUILD_ANSIBLE_VARIATION}==${BUILD_ANSIBLE_PATCH_VERSION}" && pip3 install --no-cache-dir ansible-lint passlib requests python-dateutil && ansible --version # buildkit

2025-01-13 23:17:30 UTC (buildkit.dockerfile.v0)

LABEL org.opencontainers.image.title=serversideup/ansible org.opencontainers.image.description=Run Ansible anywhere with a lightweight and powerful Docker image org.opencontainers.image.url=https://github.com/serversideup/docker-ansible org.opencontainers.image.source=https://github.com/serversideup/docker-ansible org.opencontainers.image.documentation=https://github.com/serversideup/docker-ansible org.opencontainers.image.vendor=ServerSideUp org.opencontainers.image.authors=Jay Rogers (@jaydrogers) org.opencontainers.image.version=v1.0.0 org.opencontainers.image.licenses=GPL-3.0-or-later

2025-01-13 23:17:30 UTC (buildkit.dockerfile.v0)

ENTRYPOINT ["/entrypoint.sh"]

2025-01-13 23:17:30 UTC (buildkit.dockerfile.v0)

WORKDIR /ansible

2025-01-13 23:17:30 UTC (buildkit.dockerfile.v0)

CMD ["ansible-playbook" "--version"]

Details
Created

2025-01-13 23:21:09 UTC

Size

190 MB

Content Digest
Labels
  • org.opencontainers.image.authors
    Jay Rogers (@jaydrogers)
  • org.opencontainers.image.description
    Run Ansible anywhere with a lightweight and powerful Docker image
  • org.opencontainers.image.documentation
    https://github.com/serversideup/docker-ansible
  • org.opencontainers.image.licenses
    GPL-3.0-or-later
  • org.opencontainers.image.source
    https://github.com/serversideup/docker-ansible
  • org.opencontainers.image.title
    serversideup/ansible
  • org.opencontainers.image.url
    https://github.com/serversideup/docker-ansible
  • org.opencontainers.image.vendor
    ServerSideUp
  • org.opencontainers.image.version
    v1.0.0

Environment
ANSIBLE_COLLECTIONS_PATH

/etc/ansible/collections

ANSIBLE_HOME

/etc/ansible

ANSIBLE_WORK_DIR

/ansible

DEBUG

false

GPG_KEY

A035C8C19219BA821ECEA86B64E628F8D684696D

LANG

C.UTF-8

PATH

/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

PYTHON_SHA256

2a9920c7a0cd236de33644ed980a13cbbc21058bfdc528febb6081575ed73be3

PYTHON_VERSION

3.11.11


Layers

[#000] sha256:0152682790bba2052e0b7dc52872083c01ea53c598fe87e3fe3eab5f9d4228cb - 2.06% (3.9 MB)

[#001] sha256:1bcd6e0cbc06e1fbb5ab80cef8d41b8775ebcc00733d4f1f30773085b1216524 - 0.23% (450 KB)

[#002] sha256:497031680e280a91d943516016e43443d1d2db397adf134ad1741da2ee912547 - 8.16% (15.5 MB)

[#003] sha256:01a8044108c0919cfc4bf41c32f793d7da5e8044762147918eb87bdede518755 - 0.0% (250 Bytes)

[#004] sha256:c92ed9637fac64e87bbdfb9cab43b98dfd59190bdfe7eb8401bf2253059c02bb - 0.0% (2.29 KB)

[#005] sha256:3fab2ec0cd89aa918e063bd10bc1d625a25dc7836b599bc192507a899067fbe2 - 89.55% (170 MB)

[#006] sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 - 0.0% (32 Bytes)


History
2024-12-03 22:49:59 UTC (buildkit.dockerfile.v0)

ADD alpine-minirootfs-3.20.5-aarch64.tar.gz / # buildkit

2024-12-03 22:49:59 UTC (buildkit.dockerfile.v0)

CMD ["/bin/sh"]

2024-12-03 22:49:59 UTC (buildkit.dockerfile.v0)

ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

2024-12-03 22:49:59 UTC (buildkit.dockerfile.v0)

ENV LANG=C.UTF-8

2024-12-03 22:49:59 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c set -eux; apk add --no-cache ca-certificates tzdata ; # buildkit

2024-12-03 22:49:59 UTC (buildkit.dockerfile.v0)

ENV GPG_KEY=A035C8C19219BA821ECEA86B64E628F8D684696D

2024-12-03 22:49:59 UTC (buildkit.dockerfile.v0)

ENV PYTHON_VERSION=3.11.11

2024-12-03 22:49:59 UTC (buildkit.dockerfile.v0)

ENV PYTHON_SHA256=2a9920c7a0cd236de33644ed980a13cbbc21058bfdc528febb6081575ed73be3

2024-12-03 22:49:59 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c set -eux; apk add --no-cache --virtual .build-deps gnupg tar xz bluez-dev bzip2-dev dpkg-dev dpkg findutils gcc gdbm-dev libc-dev libffi-dev libnsl-dev libtirpc-dev linux-headers make ncurses-dev openssl-dev pax-utils readline-dev sqlite-dev tcl-dev tk tk-dev util-linux-dev xz-dev zlib-dev ; wget -O python.tar.xz "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz"; echo "$PYTHON_SHA256 *python.tar.xz" | sha256sum -c -; wget -O python.tar.xz.asc "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz.asc"; GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$GPG_KEY"; gpg --batch --verify python.tar.xz.asc python.tar.xz; gpgconf --kill all; rm -rf "$GNUPGHOME" python.tar.xz.asc; mkdir -p /usr/src/python; tar --extract --directory /usr/src/python --strip-components=1 --file python.tar.xz; rm python.tar.xz; cd /usr/src/python; gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; ./configure --build="$gnuArch" --enable-loadable-sqlite-extensions --enable-option-checking=fatal --enable-shared --with-lto --with-ensurepip ; nproc="$(nproc)"; EXTRA_CFLAGS="-DTHREAD_STACK_SIZE=0x100000"; LDFLAGS="${LDFLAGS:--Wl},--strip-all"; make -j "$nproc" "EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" "LDFLAGS=${LDFLAGS:-}" ; rm python; make -j "$nproc" "EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" "LDFLAGS=${LDFLAGS:--Wl},-rpath='\$\$ORIGIN/../lib'" python ; make install; cd /; rm -rf /usr/src/python; find /usr/local -depth \( \( -type d -a \( -name test -o -name tests -o -name idle_test \) \) -o \( -type f -a \( -name '*.pyc' -o -name '*.pyo' -o -name 'libpython*.a' \) \) \) -exec rm -rf '{}' + ; find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec scanelf --needed --nobanner --format '%n#p' '{}' ';' | tr ',' '\n' | sort -u | awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' | xargs -rt apk add --no-network --virtual .python-rundeps ; apk del --no-network .build-deps; export PYTHONDONTWRITEBYTECODE=1; python3 --version; pip3 install --disable-pip-version-check --no-cache-dir --no-compile 'setuptools==65.5.1' wheel ; pip3 --version # buildkit

2024-12-03 22:49:59 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c set -eux; for src in idle3 pip3 pydoc3 python3 python3-config; do dst="$(echo "$src" | tr -d 3)"; [ -s "/usr/local/bin/$src" ]; [ ! -e "/usr/local/bin/$dst" ]; ln -svT "$src" "/usr/local/bin/$dst"; done # buildkit

2024-12-03 22:49:59 UTC (buildkit.dockerfile.v0)

CMD ["python3"]

2025-01-13 23:14:08 UTC (buildkit.dockerfile.v0)

ARG BUILD_ANSIBLE_VARIATION=ansible

2025-01-13 23:14:08 UTC (buildkit.dockerfile.v0)

ARG BUILD_ANSIBLE_PATCH_VERSION=9.13.0

2025-01-13 23:14:08 UTC (buildkit.dockerfile.v0)

ARG PACKAGE_DEPENDENCIES=build-base,git,libffi-dev,jq,openssh-client,openssl-dev,rsync,shadow,sshpass,su-exec

2025-01-13 23:14:08 UTC (buildkit.dockerfile.v0)

ARG PUID=1000

2025-01-13 23:14:08 UTC (buildkit.dockerfile.v0)

ARG PGID=1000

2025-01-13 23:14:08 UTC (buildkit.dockerfile.v0)

ARG REPOSITORY_BUILD_VERSION=v1.0.0

2025-01-13 23:14:08 UTC (buildkit.dockerfile.v0)

ENV DEBUG=false ANSIBLE_WORK_DIR=/ansible ANSIBLE_HOME=/etc/ansible ANSIBLE_COLLECTIONS_PATH=/etc/ansible/collections

2025-01-13 23:14:08 UTC (buildkit.dockerfile.v0)

COPY --chown=root:root --chmod=755 src/rootfs / # buildkit

2025-01-13 23:21:09 UTC (buildkit.dockerfile.v0)

RUN |6 BUILD_ANSIBLE_VARIATION=ansible BUILD_ANSIBLE_PATCH_VERSION=9.13.0 PACKAGE_DEPENDENCIES=build-base,git,libffi-dev,jq,openssh-client,openssl-dev,rsync,shadow,sshpass,su-exec PUID=1000 PGID=1000 REPOSITORY_BUILD_VERSION=v1.0.0 /bin/sh -c serversideup-dep-install-alpine ${PACKAGE_DEPENDENCIES} && serversideup-dep-install-debian ${PACKAGE_DEPENDENCIES} && ARCH=$(uname -m) && if [ "${ARCH}" = "x86_64" ]; then YQ_BINARY="yq_linux_amd64"; elif [ "${ARCH}" = "aarch64" ]; then YQ_BINARY="yq_linux_arm64"; else echo "Unsupported architecture: ${ARCH}"; exit 1; fi && if [ -f /etc/alpine-release ]; then wget https://github.com/mikefarah/yq/releases/latest/download/${YQ_BINARY} -O /usr/bin/yq && chmod +x /usr/bin/yq; else wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/${YQ_BINARY} && chmod a+x /usr/local/bin/yq; fi && serversideup-create-unprivileged-user ansible "${PUID}" "${PGID}" && mkdir -p "${ANSIBLE_HOME}/tmp" && echo -e '[local]\nlocalhost ansible_host=127.0.0.1' > "${ANSIBLE_HOME}/hosts" && chown -R "${PUID}:${PGID}" "${ANSIBLE_HOME}" && chmod 1777 "${ANSIBLE_HOME}/tmp" && mkdir -p "${ANSIBLE_WORK_DIR}" && chown -R "${PUID}:${PGID}" "${ANSIBLE_WORK_DIR}" && mkdir -p /ssh && chmod 700 /ssh && chown "${PUID}:${PGID}" /ssh && ln -s /ssh /home/ansible/.ssh && echo "🤓 Installing ${BUILD_ANSIBLE_VARIATION}==${BUILD_ANSIBLE_PATCH_VERSION}" && pip3 install --no-cache-dir "${BUILD_ANSIBLE_VARIATION}==${BUILD_ANSIBLE_PATCH_VERSION}" && pip3 install --no-cache-dir ansible-lint passlib requests python-dateutil && ansible --version # buildkit

2025-01-13 23:21:09 UTC (buildkit.dockerfile.v0)

LABEL org.opencontainers.image.title=serversideup/ansible org.opencontainers.image.description=Run Ansible anywhere with a lightweight and powerful Docker image org.opencontainers.image.url=https://github.com/serversideup/docker-ansible org.opencontainers.image.source=https://github.com/serversideup/docker-ansible org.opencontainers.image.documentation=https://github.com/serversideup/docker-ansible org.opencontainers.image.vendor=ServerSideUp org.opencontainers.image.authors=Jay Rogers (@jaydrogers) org.opencontainers.image.version=v1.0.0 org.opencontainers.image.licenses=GPL-3.0-or-later

2025-01-13 23:21:09 UTC (buildkit.dockerfile.v0)

ENTRYPOINT ["/entrypoint.sh"]

2025-01-13 23:21:09 UTC (buildkit.dockerfile.v0)

WORKDIR /ansible

2025-01-13 23:21:09 UTC (buildkit.dockerfile.v0)

CMD ["ansible-playbook" "--version"]

Danger Zone
Delete Tag

Please be careful as this will not just delete the reference but also the actual content!

For example when you have latest and v1.2.3 both pointing to the same image
the deletion of latest will also permanently remove v1.2.3.

Delete