AA
Возможные варианты:
- пробрасывать приватный ключ с хостовой системы (он там уже есть), подходит в текущем варианте (пока все агенты на одном хосте), но в перспективе - плохо (планируется часть агентов вынести на др. сервера)
- "зашивать" приватный ключ при сборке докер образа агента (
COPY
)- недавно подняли vault, пока сильно не эксплуатируем. Его использовать выглядит наиболее правильно.
Вариант с vault: при сборке образа с агентом CI или же уже при старте контейнера с агентом дополнительно указывать нечто такое:
при старте контейнера:
docker run --rm -e vault_token=Secret_token -e vault_adress=https://vault.test.ru -it debian:stretch bashили при сборке:
mkdir ~/.ssh/ && curl -s -H "X-Vault-Token: $vault_token" -X GET $vault_adress/v1/private_ssh_keys/user_1 | jq -r '.data.user_1' > ~/.ssh/id_rsa && chmod 600 ~/.ssh/id_rsa
Dockerfile:Сразу ремарка - CI не от гитлаба (да, там чуть удобней, что агент сразу имеет доступ к репо, паплайн которого был запущен при коммите)
...
RUN apt-get update && apt-get install -y curl jq openssh-client git
RUN mkdir ~/.ssh/ && curl -s -H "X-Vault-Token: Jdn3j22d..." -X GET https://vault.test.ru/v1/private_ssh_keys/user_1 | jq -r '.data.user_1' > ~/.ssh/id_rsa && chmod 600 ~/.ssh/id_rsa
Вопрос: как правильнее сделать/делается?