#linux #docker #ssh #automation #key
Вопрос:
Привет, у меня есть 3 контейнера Docker A, B и C. Мне нужно выполнить файл .sh, встроенный в файл, который должен выглядеть примерно так:
!#/bin/bash
ssh root@containerIP "mkdir /path/to/dir"
ssh root@containerIP "touch someFile.txt"
....
Мои файлы докеров для B amp; C::
FROM node
RUN apt-get update
# RUN apk add --update --no-cache openssh
COPY docker-entrypoint.sh /docker-entrypoint.sh
RUN chmod x /docker-entrypoint.sh
RUN apt-get install -y openssh-server
ENTRYPOINT ["sh", "/docker-entrypoint.sh"]
WORKDIR /home/debian
COPY ./ /home/debian
RUN git init
RUN git clone --branch master https://github.com/SamLProgrammer/LAB1SD.git
WORKDIR /home/debian/LAB1SD
RUN npm install
CMD ["node", "index.js"]
и файл Dockerfile для промежуточного программного обеспечения A является:
FROM node
RUN apt-get update
WORKDIR /home/debian
COPY ./ /home/debian
RUN git init
RUN git clone --branch another https://github.com/SamLProgrammer/DockerMiddlewareLab1.git
WORKDIR /home/debian/DockerMiddlewareLab1
RUN npm install
CMD ["node", "index.js"]
Моя проблема в том, что я не знаю ssh-ключ удаленных серверов (B amp; C). И весь процесс должен быть автоматизирован.
Итак, насколько я знаю, создание ssh-ключа-генератора невозможно, поскольку он генерирует ssh-ключ на удаленных серверах (B amp; C), а затем мне нужно скопировать этот файл ключа на «Сервер промежуточного программного обеспечения» (A). но в процессе меня попросят ввести (A) пароль ssh, который я не смогу ввести вручную из-за отсутствия доступа к терминалам B amp; C.
Вот почему я подумываю о создании файла .txt, содержащего ssh-ключ для (B amp; C), прежде чем запускать образы докеров в качестве контейнеров и устанавливать его в качестве своего ключа, чтобы мое промежуточное программное обеспечение (A) могло знать этот ключ ssh и выполнять команды SSH с помощью sshpass или что-то в этом роде.
Как я могу этого достичь? как я могу установить ssh-ключ из файла .txt при запуске изображений docker?. Или я планирую это очень неправильно? и что было бы правильным, чтобы сделать эти команды ssh автоматически выполняемыми, просто вызвав bash в моей ситуации?
Я довольно плохо разбираюсь в обходных путях этих инфраструктур автоматизации, любое предложение очень помогло бы мне. Спасибо
Комментарии:
1. Если вам нужно, чтобы приложение в контейнере A создавало файл, лучшим подходом было бы написать что-то вроде конечной точки HTTP в приложении Узла. Docker обычно не используется в качестве инфраструктуры автоматизации; более типичны такие инструменты, как Chef, Salt Stack или Ansible.
2. файл .txt, содержащий ключ, уже создан, и при запуске он будет скопирован в контейнер docker, но затем сгенерирует ssh-ключ из этого скопированного файла в удаленный контейнер.