Я хочу установить Бродячую конфигурацию, чтобы создать и запустить гостя Ubuntu VM, который запустит a supervisord
сервис в VM после Vagrant up
. Я хотел бы за это работать над Windows, Mac и хостами Linux.
У меня есть a supervisord.conf
файл, который я копирую в VM во время настройки (путем копирования в пространство пользователя сначала и затем копирования в /etc/supervisor/
как в этом ответе). Этот файл конфигурации включает эти строки для обслуживания графического интерфейса на порте 9001 (этот порт передается хосту):
[inet_http_server]
port=9001
Однако, если я даю команду в Бродяге, настраивающей сценарий как service supervisor start
затем эта конфигурация правильно не забрана. Я могу ssh в VM и проверять, что услуга супервизора работает, но GUI не доступен на порте 9001. Если я перезапускаю сервис с помощью ssh, то GUI становится доступным после перезапуска.
Тот перезапуск сервиса вызывает, он для взятия моей конфигурации заставляет меня думать, что конфигурация не была доступна так или иначе когда сервис, сначала запущенный.
Этот ответ, кажется, решает подобную проблему. Таким образом, я пытался также копировать файл в /etc/init/supervisor.conf
:
# start supervisord on vagrant mounted
start on vagrant-mounted
exec service supervisor restart
Это заставило бы выскочку перезапускать сервис, когда он получает vagrant-mounted
событие. Однако даже с этим на месте, супервизор, казалось, не запустился правильно.
Я протестировал этот новомодный сценарий путем издания sudo initctl emit vagrant-mounted
, и наблюдаемый сервисный перезапуск супервизора и GUI стали доступными на 9 001.
Это заставляет меня думать что vagrant-mounted
событие, вероятно, имело место, прежде чем скрипт настройки был запущен.
Кто-либо знает, существует ли какое-либо другое событие, я мог бы утвердить свои новомодные сценарии на? Что-то, что испускается, когда бродячая настройка завершается?
Кроме того, есть ли какой-либо лучше или канонический способ запустить сервис в бродячем VM? Это все чувствует, что я спустился по кроличьей норе и пропустил что-то действительно очевидное.
Хорошо, этот пост сообщил мне, что я могу выдать любое событие выскочки, которое захочу, в качестве последнего шага в моем Vagrantfile:
Vagrant.configure(2) do |config|
config.vm.provision :file do |file|
file.source = "./conf/vagrant-ready.conf"
file.destination = "vagrant-ready.conf"
end
config.vm.provision :shell, path: "provision.sh"
config.vm.provision :shell, :inline => "sudo initctl emit vagrant-ready"
end
И я мог инициировать перезапуск супервизора служба с событием vagrant-ready
:
# start supervisord on vagrant mounted
start on vagrant-ready
exec service supervisor restart
И мой сценарий подготовки:
#!/bin/bash
apt-get update
apt-get install -y supervisor
mv /home/vagrant/supervisord.conf /etc/supervisor/
mv /home/vagrant/vagrant-ready.conf /etc/init/
Эта настройка гарантирует, что служба supervisord перезапустится после того, как файл supervisord.conf
будет на месте. Таким образом, моя конфигурация загружается правильно.