TGViewer
Сочный DevOps Сочный DevOps @andtree_sec · 420 subscribers
Post #221 267
Немножко про молекула тесты...

У нас принято использовать в переменных lookup плагин для доступа к переменным из волт. Пример
kafka_server_username: "{{ lookup('community.hashi_vault.vault_kv2_get', vault_secret_path ~ '/kafka/env', engine_mount_point=vault_mount, token=vault_token, url=vault_url).secret['kafka_server_username'] }}"


Помним что данный плагин всегда выполняется на control plane хосте, а не на конечном узле, как например либой ansible модуль. Если молекула у нас запускается в docker. Тут будет проблема доступа до контейнера vault. Дело в том, что в контейнере с раннером, внутри которого запускаются контейнеры с хостами под полекула тесты доступа до ip адреса волт контейнера у нас нет. Получим ошибку timeout.

Проблему можно решить, если у нас проброшен docker.sock. Сначала определяем динамически docker GW так:

export MOLECULE_VAULT_URL="http://$(python3 -c "
data = open('/proc/net/route').readlines()
for line in data:
parts = line.split()
if parts[1] == '00000000': # default route
gw = int(parts[2], 16)
print(f'{gw&0xff}.{(gw>>8)&0xff}.{(gw>>16)&0xff}.{(gw>>24)&0xff}')
break
"):8200"

Это можно выполнить в before_script в сиай, который запускает молекула.

Затем используем эту переменную в тестах, например:
vault_url: "{{ lookup('env', 'MOLECULE_VAULT_URL') | default('http://172.17.0.1:8200') }}"


Решить подобным образом проблему с доступность, если у нас dind не получится, там еще один сетевой слой. В таком случае лучше вообще не использовать lookup, а читать переменные через модуль в самих тасках.

#molecule
  • ❤ 3
  • 👍 1
More from @andtree_sec
  1. Sep 7, 2026Давненько не было сообщений. Скорее всего в будущем они уйдут в telegraf, который я еще не…
  2. Jul 6, 2026Последнее время на работе часто приходится работать с apache flink и даже что-то писать на…
  3. May 20, 2026Очередной небольшой проект. Веб-приложение, которое агрегирует через стандартный механиз g…
  4. May 15, 2026Включаем профилирование в ansible Профилирование, это вывод даты, времени запуска и итогов…
  5. Apr 17, 2026Так выглядит общий dashbord работы с инцидентами.
  6. Apr 17, 2026Мой очередной pet-проект - система управления инцидентами - induty. Полный код с README на…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →