diff --git a/execute.sh b/execute.sh index c6b2be2..c20dcf5 100644 --- a/execute.sh +++ b/execute.sh @@ -8,15 +8,32 @@ 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 \ @@ -28,12 +45,14 @@ docker run --rm -dit \ 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_ip=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' "$container_name" 2>/dev/null) +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 IP : ${container_ip:-n/a}" +echo "Container IPv4 : ${container_ipv4:-n/a}" +echo "Container IPv6 : ${container_ipv6:-n/a}" echo "Container OS : ${container_os:-n/a}" echo "-----------------------------------"