В настоящее время я использую упаковщик для создания настраиваемых изображений из заданной конфигурации. Файл упаковщика .json
включает положения, описанные в этом руководстве по упаковщику. .
Вместо того, чтобы вводить там команды, я использовал опцию оболочки, в которой я могу написать кучу sudo apt-get install
команд для настройки изображений.
Проблема в том, что мне нужно скопировать файл с моего компьютера на изображения. Чтобы было ясно, компьютер, которым я владею, также является тем, на котором я запускаю команду packer build example.json
.
В сценарии оболочки, как я могу сделать безопасную копию, чтобы с точки зрения вновь созданных изображений изображение могло безопасно скопировать файл с моего компьютера на себя, без em> нужно вводить пароль? Это сценарий оболочки, поэтому я не мог бы ввести его, если бы захотел.
Я понимаю, что, чтобы не вводить пароль, мне нужна аутентификация с открытым/закрытым ключом. В сценарии оболочки у меня есть:
sudo ssh-keygen -t rsa -b 2048
sudo scp ~/.ssh/id_rsa.pub [email protected]:/home/user/.ssh/uploaded_key.pub
sudo ssh [email protected] "echo `cat ~/.ssh/uploaded_key.pub` >> ~/.ssh/authorized_keys"
(Взято из пример здесь и в других местах. , Я так понимаю, что сгенерированное изображение запускает эти команды.)
Проблема с этим и многими подходами, которые я вижу в StackOverflow, например, с этим связанный вопрос, является одним из двух.
- В первый раз, когда происходит общедоступная/частная аутентификация, кажется, что требуется пароль. Однако это делается полностью в сценарии оболочки, поэтому я не знаю, как этого избежать.
- Packer генерирует эти образы на лету, поэтому другие подходы, требующие ввода явных идентификаторов AMI для
ssh
илиscp
, похоже, не работают.
В тесно связанном вопросе используется "файл " тип предоставления, но я хотел бы сделать это с типом "оболочки", и я не уверен, как использовать как файл, так и параметры оболочки.
Как я могу это решить?