2016-04-12 11 views
1

Ich habe chocolatey auf meinem Host-Rechner installiert ist (Windows) mit der Powershell-Bestimmung:Warum installiert Chocolatey nicht auf dieser Vagrant Box?

Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) 

Das ist alles in Ordnung und choco arbeitet auf der Host-Maschine, aber wenn ich versuche, es in der VM über vagrant ssh zu installieren Es funktioniert überhaupt nicht. Ich habe versucht, Skripte zu verwenden und sie in die Vagrantfile aber ohne Glück hinzuzufügen.

Wie kann ich schokoladig auf meinem Windows Vagrant VM bekommen?

Mein vagrantfile

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

# All Vagrant configuration is done below. The "2" in Vagrant.configure 
# configures the configuration version (we support older styles for 
# backwards compatibility). Please don't change it unless you know what 
# you're doing. 
Vagrant.configure(2) do |config| 
    # The most common configuration options are documented and commented below. 
    # For a complete reference, please see the online documentation at 
    # https://docs.vagrantup.com. 

    # Every Vagrant development environment requires a box. You can search for 
    # boxes at https://atlas.hashicorp.com/search. 
    config.vm.box = "kensykora/windows_2012_r2_standard" 

    # Disable automatic box update checking. If you disable this, then 
    # boxes will only be checked for updates when the user runs 
    # `vagrant box outdated`. This is not recommended. 
    # config.vm.box_check_update = false 

    # Create a forwarded port mapping which allows access to a specific port 
    # within the machine from a port on the host machine. In the example below, 
    # accessing "localhost:8080" will access port 80 on the guest machine. 
    config.vm.network "forwarded_port", guest: 22, host: 2200 

    # Create a private network, which allows host-only access to the machine 
    # using a specific IP. 
    config.vm.network "private_network", ip: "192.168.33.11" 

    # Create a public network, which generally matched to bridged network. 
    # Bridged networks make the machine appear as another physical device on 
    # your network. 
    # config.vm.network "public_network" 

    # Share an additional folder to the guest VM. The first argument is 
    # the path on the host to the actual folder. The second argument is 
    # the path on the guest to mount the folder. And the optional third 
    # argument is a set of non-required options. 
    # config.vm.synced_folder "../data", "/vagrant_data" 

    # Provider-specific configuration so you can fine-tune various 
    # backing providers for Vagrant. These expose provider-specific options. 
    # Example for VirtualBox: 
    # 
    # config.vm.provider "virtualbox" do |vb| 
    # # Display the VirtualBox GUI when booting the machine 
    # vb.gui = true 
    # 
    # # Customize the amount of memory on the VM: 
    # vb.memory = "1024" 
    # end 
    # 
    # View the documentation for the provider you are using for more 
    # information on available options. 

    # Define a Vagrant Push strategy for pushing to Atlas. Other push strategies 
    # such as FTP and Heroku are also available. See the documentation at 
    # https://docs.vagrantup.com/v2/push/atlas.html for more information. 
    # config.push.define "atlas" do |push| 
    # push.app = "YOUR_ATLAS_USERNAME/YOUR_APPLICATION_NAME" 
    # end 
    # chocolatey: 
    config.vm.provision :shell, path: "InstallChocolatey.ps1" 
    # Enable provisioning with a shell script. Additional provisioners such as 
    # Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the 
    # documentation for more information about their specific syntax and use. 
    # config.vm.provision "shell", inline: <<-SHELL 
    # sudo apt-get update 
    # sudo apt-get install -y apache2 
    # SHELL 
    Vagrant.configure("2") do |config| 
    config.vm.provision "shell", path: "C:\Users\WorkExperience\Desktop\Working on Vagrant\WindowsServer2012-vagrant\shell\main.cmd" 
    end 
end 

installchocolatey.ps1 Datei:

$ChocoInstallPath = "$env:SystemDrive\ProgramData\Chocolatey\bin" 

    if (!(Test-Path $ChocoInstallPath)) { 
     iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1')) 
    } 

Jede mögliche Hilfe würde geschätzt, prost werden.

+0

Versuchen Sie, mit der GUI zu booten (entweder setzen Sie das Flag in der 'Vagrantfile' oder durch Ihren Provider - zB VirtualBox) und installieren Sie es dort manuell - es kann Ihnen helfen, einen Fehler oder ein anderes Problem zu finden. –

Antwort

1

Haben Sie tatsächlich einen doppelten Konfigurationsblock innerhalb des Hauptkonfigurationsblocks, der die Bereitstellungsmethode umgibt? Wenn dem so ist, vermute ich, dass dies ein gültiger Ruby-Code ist, aber Vagrant ist effektiv nicht richtig konfiguriert.

Vagrant.configure("2") do |config| 
    config.vm.provision "shell", path: "C:\Users\WorkExperience\Desktop\Working on Vagrant\WindowsServer2012-vagrant\shell\main.cmd" 
end 

würde ich, dass zusätzliche Konfigurationsblock entfernen und nur diese

config.vm.provision "shell", path: "C:\Users\WorkExperience\Desktop\Working on Vagrant\WindowsServer2012-vagrant\shell\main.cmd" 

Haben Sie eine Debug/ausführliche Protokollausgabe von vagrant up haben lassen?

Auch Sie können es hilfreich finden in den Versionen 1.8.x + von Vagrant :powershell_elevated_interactive => true als eine der Optionen für config.vm.provision :shell zu setzen. Nicht sicher, ob dies einen Unterschied mit .cmd und .bat Dateien macht, aber für PowerShell stellt es sicher, dass es immer noch interaktiv mit dem Desktop ist, was einige Probleme behebt, die im Zusammenhang mit Installern auftreten können, die interaktiv ausgeführt werden müssen (selbst wenn sie unbeaufsichtigt/still sind)).

+0

Danke für die Antwort, ich habe es geschafft, indem ich das Skript hinzugefügt habe, um chocolatey direkt in die Jason zu installieren! Ich habe auch getan, was du gesagt hast, was mir sehr geholfen hat! Danke, Anthony – Joe