#!/bin/bash defaultimage="ansible:deb13" export ANSIBLE_HOST_KEY_CHECKING=False export ANSIBLE_SSH_ARGS='-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' export ANSIBLE_CONFIG=./ansible.cfg # Ermittle den nächsten freien Container-Namen base_name="ansible" network_name="ansible-dualstack" counter=1 while docker ps -a --format '{{.Names}}' | grep -q "^${base_name}-${counter}$"; do counter=$((counter + 1)) done container_name="${base_name}-${counter}" if docker network inspect "$network_name" >/dev/null 2>&1; then network_ipv6_enabled=$(docker network inspect -f '{{.EnableIPv6}}' "$network_name" 2>/dev/null) if [ "$network_ipv6_enabled" != "true" ]; then echo "Docker-Netzwerk '$network_name' existiert bereits ohne IPv6-Unterstuetzung." >&2 echo "Bitte Netzwerk entfernen oder einen anderen Netzwerknamen verwenden." >&2 exit 1 fi else if ! docker network create --driver bridge --ipv6 "$network_name" >/dev/null; then echo "Docker-Netzwerk '$network_name' mit IPv6 konnte nicht erstellt werden." >&2 echo "Pruefe, ob Docker IPv6 fuer benutzerdefinierte Bridge-Netze unterstuetzt." >&2 exit 1 fi fi docker run --rm -dit \ --name "$container_name" \ --hostname "$container_name" \ --network "$network_name" \ -e ANSIBLE_HOST_KEY_CHECKING=False \ -e ANSIBLE_SSH_ARGS='-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' \ -e ANSIBLE_CONFIG=./ansible.cfg \ -v "$(pwd):/ansible" \ -v ansible_ssh_keys:/root/.ssh \ -w /ansible \ $defaultimage \ "/bin/bash" docker exec "$container_name" sh -lc "mkdir -p /root/.ssh && chmod 700 /root/.ssh && printf 'Host *\n StrictHostKeyChecking no\n UserKnownHostsFile /dev/null\n' > /root/.ssh/config && chmod 600 /root/.ssh/config" container_ipv4=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{if .IPAddress}}{{.IPAddress}}{{end}}{{end}}' "$container_name" 2>/dev/null) container_ipv6=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{if .GlobalIPv6Address}}{{.GlobalIPv6Address}}{{end}}{{end}}' "$container_name" 2>/dev/null) container_os=$(docker exec "$container_name" sh -c 'grep PRETTY_NAME /etc/os-release 2>/dev/null | cut -d= -f2 | tr -d "\"" 2>/dev/null') echo "-----------------------------------" echo "Container Name : $container_name" echo "Container IPv4 : ${container_ipv4:-n/a}" echo "Container IPv6 : ${container_ipv6:-n/a}" echo "Container OS : ${container_os:-n/a}" echo "-----------------------------------" docker attach "$container_name"