сервис в бродячем VM, не забирающем конфигурацию

Я хочу установить Бродячую конфигурацию, чтобы создать и запустить гостя 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? Это все чувствует, что я спустился по кроличьей норе и пропустил что-то действительно очевидное.

1
задан 23 May 2017 в 15:41
1 ответ

Хорошо, этот пост сообщил мне, что я могу выдать любое событие выскочки, которое захочу, в качестве последнего шага в моем 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 будет на месте. Таким образом, моя конфигурация загружается правильно.

2
ответ дан 3 December 2019 в 20:55

Теги

Похожие вопросы