Packer — Shell Script Provisioner для клонирования частного репозитория — автоматический запуск экземпляров EC2

Я огляделся, пытаясь найти способ заставить сборку Packer загрузить частный репозиторий для сборки ec2 ami, который будет использоваться для запуска новых экземпляров в конфигурации с автоматическим запуском, имея только что созданный экземпляр ec2. частное репо.

Кажется, что самый безопасный способ получить частное репо — это использовать ключ развертывания, но я считаю, что мне придется вручную добавлять каждый ключ развертывания в репо для каждого экземпляра… что противоречит цели автоматизации, если только я не делаю что-то не так. .

Мне интересно, как клонировать частный репозиторий через упаковщик, будь то через сценарий оболочки или другим способом. Я понимаю, что могу использовать Chef, но я не думаю, что мне нужно устанавливать другую зависимость, когда единственное, что я пытаюсь сделать, это клонировать репозиторий github.

Должен ли я писать сценарий типа отправки/ожидания, который использует URL-адрес клона https github?

Любая помощь приветствуется.


person chuuke    schedule 13.10.2014    source источник


Ответы (2)


Есть «обходной путь» с использованием ssh-agent. Я говорю обходной путь, потому что он не особенно элегантен. Было бы лучше иметь эту часть модуля Puppet (возможно, он уже есть).

Идея состоит в том, что вам нужно сгенерировать пару открытого/закрытого ключа для каждого вашего частного репозитория Github. Затем вы добавляете открытый ключ в качестве ключа развертывания в настройках проекта Github (Настройки/Ключи развертывания). Где вы храните пару ключей, зависит от вас.

Теперь в Packer вы можете использовать средство обеспечения оболочки и выполнить что-то вроде этого:

#!/usr/bin/env bash

ssh-keyscan github.com >> /home/ec2-user/.ssh/known_hosts
eval `ssh-agent`
ssh-agent bash -c \
'ssh-add /home/ec2-user/.ssh/[privateKey]; git clone [email protected]:[account]/project.git'

Преимущество этого подхода заключается в том, что вы можете легко клонировать несколько частных репозиториев.

Есть несколько способов загрузить пару ключей на блок EC2 либо с помощью файлового поставщика. , шеф-повар или марионетка.

person Community    schedule 25.11.2014

Я использовал это для Windows, но теоретически должно быть похоже на это

{
"type": "powershell",
"inline": [ 
 "Set-Location C:\\{{ user `LAB_ENVIRONMENT` }}; git clone https://{{ user `GITLAB_USERNAME` }}:{{ user `GITLAB_ACCESS_TOKEN` }}@gitlab.com/{{ user `REPOSITORY` }}"
]},

person jmeacham    schedule 24.02.2021