Подтвердить что ты не робот

Автоматизировать использование локального ключа SSH для развертывания git с доступным

Я работаю с бродягой и правдой. Я хочу автоматизировать роль развертывания для пользователя (Здесь вы можете проверить свое репо). Для этого я пытаюсь развернуть свой локальный ключ ssh в свой VPS и мой гостевой гостевой компьютер (я пытаюсь переадресовать агент SSH).

ЗАДАЧА

Автоматизировать процесс развертывания с помощью git с помощью ansible. Я уже сделал это:

---

- name: read-write git checkout from github
  git: repo={{ repository }} dest=/home/site

Где:

---
# Variables here are applicable to all host groups

repository: [email protected]:dgnest/dgnest.git

ПРОБЛЕМА

Когда я это делаю: "бродяжничество", консоль останавливается здесь:

TASK: [deployment | read-write git checkout from github] ********************** 

Это потому, что я не установил ключи ssh.

я TRIED

Я хотел бы использовать параметр key_file, который имеет модуль git. Но он тоже не работает.

---                                                                             

- name: read-write git checkout from github                                     
  git: repo={{ repository }} dest=/home/site key_file=/home/oscar/.ssh/id_rsa.pub

Другой вариант - скопировать мой ~/ssh/id_rsa.pub в каждый VPS и бродягу, но в этом случае моя проблема - обращаться со всеми разными пользователями. Вагрант использует "бродячего" пользователя, а мой VPS использует другие, поэтому мне пришлось поместить свой локальный ключ ssh в каждого из этих пользователей?

Надеюсь, ты поможешь мне. Спасибо.

UPDATE:

Я только что автоматизировал ответ @leucos (спасибо). Копирование закрытых и общедоступных ключей rsa. Я разделяю эту ссылку с реализацией.

4b9b3361

Ответ 1

Если вы выберете способ key_file, я предполагаю, что ключ должен быть на машине VPS/бродяга. Поэтому сначала вы можете скопировать его. Обратите внимание, что вам нужен закрытый ключ, а не публичный.

Для вашего второго варианта вы можете нажать свой ключ для определенных пользователей в зависимости от типа экземпляра. Предположим, что пользователь в VPS является vpsuser, и что вы развертываете в основном на этих VPS, вы можете сделать:

group_vars/all:

deploy_user=vpsuser

group_vars/бродячая

deploy_user=vagrant

Тогда у вас может быть такая игра, как:

- name: send key to remote deploy user
  copy: src=files/private_key dest=~/{{deploy_user}}/.ssh/priv_key

- name: read-write git checkout from github                                     
  git: repo={{ repository }} dest=/home/site key_file=~/{{deploy_user}}/.ssh/priv_key

Однако я понятия не имею, как можно запросить пароль для удаленного частного ключа (я не думаю, что ansible позволяет пересылку агента аутентификации по умолчанию (проверьте вывод -vvvv), вам, возможно, придется поиграть со своим ~/.ansible.cfg).

Я предлагаю вам использовать определенный ключ для развертывания (с perm-версиями только для вашего репозитория git). Таким образом, ваш личный ключ не покинет вашу машину. Сделайте этот специальный ключ без пароля. Я считаю, что компромисс в сфере безопасности является приемлемым, поскольку - он просто защитит ваш код, - ваш код выведен на машине, где секретный ключ, так что игра уже завершена.

Другим вариантом является распространение вашего приложения из локальной проверки путем использования: сделать tarball, скопировать файлы, untar, и вы настроены. Таким образом, вам не нужно оставлять учетные данные безопасности на вашем VPS.

Удачи.

Ответ 2

Вам не нужно копировать локальный ключ SSH на удаленные серверы. Вместо этого вы просто создаете файл с именем ansible.cfg в каталоге, в котором запускаете сценарии развертывания, и задайте следующие параметры:

[ssh_connection]
ssh_args = -o ForwardAgent=yes

Чтобы он, теперь ваш локальный идентификатор перенаправляется на удаленные серверы, которыми вы управляете с помощью Ansible.