Я пытаюсь создать несколько хостов, которые имеют несколько сетей вместе с термином определить. Я не знаю Ruby и не уверен, что не так с этим синтаксисом.
Может кто-нибудь дать совет по поводу ошибки?
Кстати, есть ли лучшая практика использования синтаксиса определения в Ruby?
ПРИМЕЧАНИЕ: public_network ниже - это локальная сеть LAN (назначение статических IP-адресов).
Vagrant.configure("2") do |config|
# Ansible controller
config.vm.define "cent7ansiblecontroller" do |cent7ansiblecontroller|
cent7ansiblecontroller.vm.box = "geerlingguy/centos7"
# https://app.vagrantup.com/geerlingguy/boxes/centos7
cent7ansiblecontroller.vm.hostname = "cent7ansiblecontroller"
cent7ansiblecontroller.vm.network "hostonly", ip: "172.28.128.170"
cent7ansiblecontroller.vm.network "public_network", ip: "10.10.10.170"
end
end
Спасибо!
Обновить:
Переключение с hostonly на private_network, похоже, проверяется в Vagrant и позволяет машинам подойти.
Не уверен, что hostonly - допустимый вариант.
Нашел это: https://www.vagrantup.com/docs/virtualbox/networking.html «По умолчанию частные сети - это сети только для хостов ...» И https://www.virtualbox.org/manual/ch06.html#network_internal
hostonly
не действует Vagrant. Вам просто нужно четко понимать, как далеко должны дойти ваши соединения и как это связано с настройками Vagrant (и VirtualBox).
Если вы хотите, чтобы гости общались с внешним миром, используйте директиву Vagrant public_network
<Object>.vm.network "public_network", ip: "<IP>"
Если вы хотите, чтобы гости общались друг с другом и с хостом, вам нужна «сеть только для хоста» VirtualBox, которую вы получаете с помощью Vagrant. private_network
<Object>.vm.network "private_network", ip: "<IP>"
Если вы хотите, чтобы гости общались только друг с другом, вам нужна «внутренняя сеть» VirtualBox, которую вы получаете с помощью Vagrant. private_network
директива с virtualbox__intnet: true
атрибут
<Object>.vm.network "private_network", ip: "<IP>", virtualbox__intnet: true
При этом учитывается, что вам нужны фиксированные IP-адреса. Если вы используете DHCP или около того, это изменится. Перейти к официальные документы для подробностей.
Ваш синтаксис в порядке - do..end
работает просто так. Есть только проблема стиля: у вас есть внутренний блок без отступа.
Vagrant.configure("2") do |config|
# Ansible controller
config.vm.define # This should be indented
Вместо этого сделайте:
Vagrant.configure("2") do |config|
config.vm.define "<Machine name>" do |<Object>|
<Object>.vm.box ...
...
end
end