Chef Recipe Запустить миграцию на одном сервере

У меня есть рецепт шеф-повара, который запускает миграцию в opsworks. Он запускает php artisan migrate —force на каждом сервере. Есть ли способ запустить миграцию только один раз на первом сервере, к которому он счастлив? У меня есть 3 онлайн в любое время.

2

Решение

Короткий ответ:
Добавьте тег или атрибут и используйте его в качестве защиты для выполнения.

Вы по-прежнему можете иметь состояние гонки и выполнения на нескольких серверах, так как индекс обновляется каждую минуту (приблизительно) на стороне chef-сервера.

Длинный ответ:
Вы должны использовать что-то, чтобы сохранить состояние, что угодно, от zookeeper до любого легко обновляемого источника правды, может заполнить этот пробел, без каких-либо подробностей в вашей среде любой ответ будет оценен тем, что лучше для ответчика. Голосование закрыто, так как прежде всего основано на мнении.

1

Другие решения

Вы всегда можете создать новый «служебный» слой (пользовательский тип слоя), который имеет только один рецепт, который вам нужен, и прикрепить к нему только один экземпляр.

Таким образом, у вас будет основной слой с 3 экземплярами и остальными рецептами, и один из экземпляров также будет принадлежать дополнительному слою.

Вы можете прикрепить экземпляр к слою, перейдя в «экземпляры», а затем «добавить новый экземпляр» и щелкнув вкладку «Существующие экземпляры». Единственная проблема заключается в том, что вы не можете прикрепить работающий экземпляр к слою, вместо этого вы должны остановить его, затем присоединить и перезапустить.

Примечание: если вам нужно выполнить эту команду после развертывания, убедитесь, что вы перечитали свои обычные рецепты развертывания на шаге «развернуть», иначе вы рискуете, что ваш рецепт будет не в правильном порядке в списке шеф-повара run_list.

1

По вопросам рекламы [email protected]