Вопрос:

Укажите расшифровку пути Vagrantfile, если не плагин

ruby plugins development-environment provisioning vagrant

12223 просмотра

5 ответа

217 Репутация автора

Есть ли способ, чтобы в explicity указать путь к Vagrantfile? Моя компания хочет сделать что-то вроде этого: для тестирования на машине слияния введите команду like vagrant spinup confluence, а затем укажите на Vagrantfile в другом каталоге, который содержит среду слияния, а затем вызовите все эти машины.

Тем не менее, не похоже, что есть какой-либо способ явно указать, какой Vagrantfile использовать, и я немного (очень) новичок в ruby, поэтому мне сложно написать свой собственный плагин для него. У кого-нибудь есть рекомендации, что делать? Или кто-нибудь сделал что-то похожее на это?

Автор: addicted2unix Источник Размещён: 25.06.2013 10:26

Ответы (5)


22 плюса

6172 Репутация автора

Решение

Нет необходимости иметь отдельный Vagrantfile, вы можете просто определить несколько виртуальных машин в одном файле. Смотрите документацию здесь: http://docs.vagrantup.com/v2/multi-machine/index.html

Если вы просто используете одну виртуальную машину в своей «нормальной» среде и одну виртуальную машину для своей среды слияния, то это просто случай определения каждой виртуальной машины и vagrant upуказания конкретной виртуальной машины.

Если у вас есть несколько компьютеров, которые составляют каждую из ваших сред, тогда у вас есть два варианта, вы можете использовать регулярные выражения и убедиться, что вы называете и вводите команды правильно, или вы можете добавить немного логики в свой Vagrantfile, чтобы упростить его для людей. ,

Например, немного взломав Vagrantfile, вы можете сделать следующее:

Vagrant.configure('2') do |config|

    if ARGV[1] == 'confluence'
        ARGV.delete_at(1)
        confluence = true
    else
        confluence = false
    end

    config.vm.provider :virtualbox do |virtualbox, override|

        #virtualbox.gui = true

        virtualbox.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
        virtualbox.customize ["modifyvm", :id, "--memory", 512]

        override.vm.box = 'Ubuntu 12.10 x64 Server'
        override.vm.box_url = 'http://goo.gl/wxdwM'

    end

    if confluence == false

        config.vm.define :normal1 do |normal1|

            normal1.vm.hostname = 'normal1'
            normal1.vm.network :private_network, ip: "192.168.1.1"

        end

        config.vm.define :normal2 do |normal2|

            normal2.vm.hostname = 'normal2'
            normal2.vm.network :private_network, ip: "192.168.1.2"

        end

    end

    if confluence == true

        config.vm.define :confluence1 do |confluence1|

            confluence1.vm.hostname = 'confluence1'
            confluence1.vm.network :private_network, ip: "192.168.1.3"

        end

        config.vm.define :confluence2 do |confluence2|

            confluence2.vm.hostname = 'confluence2'
            confluence2.vm.network :private_network, ip: "192.168.1.4"

        end

    end

end

Теперь vagrant upподнимает ваши нормальные виртуальные машины и vagrant up confluenceподнимает ваши слияния виртуальных машин!

Автор: Matt Cooper Размещён: 26.06.2013 05:49

2 плюса

89 Репутация автора

Вы можете иметь столько раз, Vagrantfileсколько хотите / нужно. Просто создайте новый каталог для вашего проекта (который может состоять из одной или нескольких виртуальных машин), затем cdв этот каталог и запустите, vagrant initчтобы Vagrant создал новый каталог, Vagrantfileкоторый затем можно настроить в соответствии с вашими потребностями. Чтобы запустить виртуальную машину, используя эту новую, Vagrantfileпросто запустите ее vagrant upиз каталога, в котором она находится.

Автор: avhilchen Размещён: 15.07.2013 12:33

19 плюса

1379 Репутация автора

В то время как другие ответчики правы, что в данном конкретном случае не нужны отдельные файлы Vagrantfile, я думаю, что есть законные способы указания пути Vagrantfile - например, чтение vagrant ssh-configинформации в скрипте.

К счастью, вы можете сделать это, установив VAGRANT_CWDпеременную окружения:

VAGRANT_CWD=~/some/path/ vagrant ssh-config

Это нигде не задокументировано, но вы можете увидеть это в источнике .

Автор: Erin Call Размещён: 11.03.2014 09:14

51 плюса

919 Репутация автора

В дополнение к ответу Эндрю Лоренте, вы также можете использовать VAGRANT_VAGRANTFILEпеременную окружения, чтобы указать имя файла Vagrantfile. Это имеет преимущество перед тем, как VAGRANT_CWDне изменять текущий рабочий каталог, что может быть полезно при использовании относительных путей.

Например, следующий будет работать vagrant upна Vagrantfile.other:

VAGRANT_VAGRANTFILE=Vagrantfile.other vagrant up

Заметки

Автор: Mark Hobson Размещён: 25.03.2015 12:39

1 плюс

51 Репутация автора

Помещение команд оболочки в круглые скобки создает под-оболочку, поэтому из Git для Windows (или bash в Linux / OS X) вы можете сделать:

(cd test/ruby; vagrant up)

Автор: danizen Размещён: 14.03.2017 08:52
Вопросы из категории :
32x32