J'essaie actuellement de modifier notre image existante Vagrant / VirtualBox afin que les utilisateurs qui ne font pas partie de notre réseau d'entreprise se connectent via leur connexion OpenVPN sur l'ordinateur hôte.

Après avoir examiné plusieurs articles, j'ai désactivé l'option réseau public et activé la recherche DNS de l'hôte, mais chaque fois que je démarre la machine virtuelle, un message d'erreur "réseau inaccessible" s'affiche.

# -*- mode: ruby -*-
# vi: set ft=ruby :

# Developer specific settings
developer = ENV['VAGRANT_DEV']
example_path = ENV['VAGRANT_REPO']


# Perform a quick sanity check, to ensure everything actually is set up.
if developer.empty? or example_path.empty? then
    puts "Developer or example path not set"
    exit
end


# Vagrant settings
Vagrant.configure("2") do |config|

    {
        # Define which VMs to run
        'dev' => {
            :roles => ["devbox"]
        },
        # 'web' => {
        #   :roles => ["webworker", "queue", "cron"],
        #   :use_remote_git => true
        # }
    }.each do |name, cfg|

        # Enable the hostmanager plugin (Only works with VirtualBox on OS X/Linux)
        if Vagrant.has_plugin?("vagrant-hostmanager") then
            config.vm.provision :hostmanager do
                config.hostmanager.enabled = false
                config.hostmanager.manage_host = true
                config.hostmanager.include_offline = false
            end
        end

        config.vm.define name do |vm_config|

            # Give the box enough memory, more CPUs, etc.
            vm_config.vm.provider "virtualbox" do |vb|
                vb.customize ["modifyvm", :id, "--memory", "2048"]
                vb.customize ["modifyvm", :id, "--cpus", "2"]  
                vb.customize ["modifyvm", :id, "--ioapic", "on"]
                vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]

                # Set up the host computer's hosts file
                if Vagrant.has_plugin?("vagrant-hostmanager") then
                    config.vm.provision :hostmanager do 
                        if cfg.has_key?(:roles) and cfg[:roles].include?("devbox") then
                            vm_config.hostmanager.ip_resolver = proc do |vm, resolving_vm|
                                if vm.id
                                    `VBoxManage guestproperty get #{vm.id} "/VirtualBox/GuestInfo/Net/1/V4/IP"`.split()[1]
                                end
                            end
                            vm_config.hostmanager.aliases = Dir.glob(example_path + '/www/clients/*/sites/*').each { |d| d.replace(d.gsub(/.*\/sites\//,"") + "." + developer + ".bc") }
                        end
                    end
                end
            end

            # General VM setup
            #vm_config.vm.network :public_network
            vm_config.vm.network :private_network, ip: "172.21.1.180"
            vm_config.vm.box = name
            vm_config.vm.hostname = "#{name}-#{developer}"
            vm_config.vm.box_url = "http://vagrant.office.example.com/package.box"

            # Share the host machine's example folder with the VM
            vm_config.vm.synced_folder example_path, "/example",
                :mount_options => ["dmode=777","fmode=666"]

            # Tell the OS to use eth1 as the default route, which results in Chef getting the correct IP.
            config.vm.provision :shell, run: "always", inline: <<-SCRIPT
            sudo route del default || true                  # Make sure we delete the current default route.
            sudo route add default gw 172.20.0.1 || true
            if [[ ! -d "/etc/chef" ]] ; then sudo mkdir /etc/chef; fi
            if [[ ! -f "/etc/chef/webworker.key" ]] ; then sudo wget -O/etc/chef/webworker.key http://vagrant.office.example.com/webworker.key 2>/dev/null; fi
            SCRIPT


            # Provision with Chef
            vm_config.vm.provision :chef_client do |chef|

                # Set up chef config
                chef.chef_server_url = "https://chef.internal.office.example.com/"
                chef.validation_key_path = "validation.pem"
                chef.environment = "internal"
                chef.node_name = "#{name}-#{developer}"

                # Chef attributes
                chef.json = {
                    "example" => {
                        "example_deployed_path" => "/example/",
                        "devbox" => {
                            "developer" => developer
                        }
                    },
                    "chef_client" =>{
                        "config" => {
                            "node_name" => "#{name}-#{developer}"
                        }
                    }
                }

                if cfg.has_key?(:use_remote_git) and cfg[:use_remote_git] then
                    chef.json['example'].delete('example_deployed_path')
                end

                # Add roles
                chef.add_role "example-base"
                if cfg.has_key?(:roles) then
                    cfg[:roles].each do |role|
                        chef.add_role role
                    end
                end
            end
        end
    end
end
Xopa
la source