Buenas :-)
La documentación de Molecule no parece ser lo mejor que tiene, pero el código no es muy grande y algunas cosas sí están bien documentadas ahí.
Mirando el caso que comentabas, me daba la impresión de que sí se podía hacer sin tanta complicación. Que, aunque la doc no lo dejara claro, sí se podía.
Una cosa que tiendo a hacer en los docker-compose (desde la versión 3) es tratar de evitar las configuraciones de red. En la inmensa mayoría de los casos es mejor definir un nombre de red y que docker se maneje solo. Me he encontrado muchas configuraciones de rangos de IP a mano y cosas así y suelen ser un problema para mantener y totalmente innecesarias.
Viendo esto, decidí probar el mismo enfoque, miré a ver si se podía definir la red en el archivo 'molecule.yml' en el apartado 'platforms' y sí se puede.
Pongo aquí el ejemplo que hice (dejé solo la parte importante):
---
driver:
name: docker
platforms:
- name: instance1
image:
docker.io/pycontribs/centos:7 pre_build_image: true
networks:
- name: fakenet
- name: instance2
image:
docker.io/pycontribs/centos:7 pre_build_image: true
networks:
- name: fakenet
Esto me crea una red 'fakenet' y mete a los dos contenedores en ella.
Ahora puedo crear las instancias con 'molecule create' y luego entrar en una:
$ molecule login -h instance1
[root@instance1 /]#
Y hago un ping a la otra:
[root@instance1 /]# ping instance2
PING instance2 (172.20.0.3) 56(84) bytes of data.
64 bytes from instance2.fakenet (172.20.0.3): icmp_seq=1 ttl=64 time=0.174 ms
64 bytes from instance2.fakenet (172.20.0.3): icmp_seq=2 ttl=64 time=0.088 ms
^C
Con esto ya deberías poder ver ambos hosts desde los playbooks y desde los tests. No sé si te falla alguna otra cosa.
Algo que sí probé y me falló es que añadirle la propiedad 'hosname' a cada instancia. Es decir, eso funciona bien, pero luego no puedes hacer ping a la otra porque sí que no te lo añade al '/etc/hosts'. Quizás era eso lo que estabas intentando y te fallaba, acceder vía hostname, en vez de por nombre de instancia.
Por lo que entiendo, el nombre de la instancia es el equivalente al nombre del 'servicio' en el docker-compose, que es lo que realmente llamarías desde otro contenedor si usas docker-compose.
Ah, otra cosa que probé es hace el login y el ping sin haber añadido la propiedad de 'networks' y también falla. Así que la clave está en definir la misma red para cada instancia que quieres que se vea.
¿Te ayuda esto? ¿Iban por ahí los tiros?
Por cierto, me apunto a una sesión de molecule/testinfra/pytest, etc. Aunque casi que prefiero en fin de semana, que entre semana suelo ir más justo de tiempo y con ganas de desconectar de la pantalla :-P
Un saludo.