Упаковка базовой коробки с пользовательским Vagrantfile - программирование
Подтвердить что ты не робот

Упаковка базовой коробки с пользовательским Vagrantfile

У меня есть специальный Vagrantfile для ящика lucid32, который устанавливает некоторые довольно стандартные пакеты (PHP/MySQL/Apache), выполняет некоторую определенную переадресацию портов и т.д., я настроил его, вытащил проект из git и изменил некоторые серверных конфигураций, я хочу, чтобы пакет это окно для других разработчиков в команде, чтобы использовать, поэтому я использую команду:

vagrant package boxname --output test.box --vagrantfile Vagrantfile

Я получаю файл test.box, он отмечает в упаковке, что он добавляет мой конкретный Vagrantfile, затем я запускаю:

vagrant box add boxname test.box

Он отображается в vagrant box list просто отлично, теперь, когда я создаю несколько тестовых каталогов и выполняю vagrant init boxname, за которым следует vagrant up и затем он устанавливает, что ящик с файлами из выписки и всего, но не настраивает правильную переадресацию портов, и на самом деле не использует мой Vagrantfile, я упаковал его вообще, но сгенерировал новый по умолчанию в этом каталоге.

Я заметил, что в ~/.vagrant.d/boxes/boxname у него есть файл Vagrant по умолчанию, а также тот, который я упаковал в include/_Vagrantfile

Есть ли какой-либо способ, которым я могу получить конкретный Vagrantfile как тот, который был создан, когда я делаю vagrant init boxname?

4b9b3361

Ответ 1

На самом деле все работает по назначению. Vagrant загружает несколько Vagrantfiles (а не только один из vagrant init) при загрузке, а Vagrantfile, упакованный в коробку, является одним из них. Для получения дополнительной информации прочтите "Порядок загрузки Vagrantfile" здесь: https://www.vagrantup.com/docs/vagrantfile/#load-order-and-merging

Вкратце: Vagrant загружает несколько Vagrantfiles в определенном порядке и объединяет их конфигурации. Ящик Vagrantfile загружается как часть этого процесса до корневого Vagrantfile (один из vagrant init).

В настоящее время невозможно создать скелет Vagrantfile, сгенерированный с помощью vagrant init.

Конфигурация, которую вы помещаете в упакованный Vagrantfile, такой как порт вперед, должна быть загружена должным образом, поскольку при объединении конфигураций он должен просто добавлять все порты вперед.

Если этого не происходит, вы должны сообщить об ошибке! Но ради SO-ответа, это то, как должны вести себя вещи.

Ответ 2

Этот код работал у меня

vagrant package --output vagrant_example.box