Hi, I dug through the posts here and the open issues on github, but can't find this specific problem. The only bug I found that might have to do with this is: https://github.com/mitchellh/vagrant/issues/5313 (saltstack bootstrap script is always downloaded and run on provision, regardless it is installed already or not).
So here goes: provider: VirtualBox Host: Linux (Ubuntu 14.04) Guest: Windows Server 2008 R2 Vagrantfile: (see end of this post) I created the box following this tutorial: https://dennypc.wordpress.com/2014/06/09/creating-a-windows-box-with-vagrant-1-6/ Now I am trying to add provisioning with salt and I get this error on running salt. ############### (hopefully) relevant part of debug log from first vagrant up #################### ==> default: Running provisioner: salt... INFO environment: Running hook: provisioner_run INFO runner: Preparing hooks for middleware sequence... INFO runner: 1 hooks defined. INFO runner: Running action: #<Method: Vagrant::Action::Builtin::Provision#run_provisioner> INFO warden: Calling IN action: #<Proc:0x007f8e40a1d800@/opt/vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/action/warden.rb:94 (lambda)> INFO interface: info: Copying salt minion config to vm. Copying salt minion config to vm. INFO winrm: Uploading: /home/obestwalter/work/prodenv/vagrant_winbox/salt/minion to C:\tmp/minion DEBUG filemanager: Upload: /home/obestwalter/work/prodenv/vagrant_winbox/salt/minion -> C:\tmp/minion DEBUG winrmshell: powershell executing: $dest_file_path = [System.IO.Path]::GetFullPath('C:\tmp/minion') if (Test-Path $dest_file_path) { $crypto_provider = new-object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider try { $file = [System.IO.File]::Open($dest_file_path, [System.IO.Filemode]::Open, [System.IO.FileAccess]::Read) $guest_md5 = ([System.BitConverter]::ToString($crypto_provider.ComputeHash($file))).Replace("-","").ToLower() } finally { $file.Dispose() } if ($guest_md5 -eq 'b3093528507e3684b1ed4623e449848c') { exit 0 } } Write-Host "should upload file $dest_file_path" exit 1 if ($?) { exit 0 } else { if($LASTEXITCODE) { exit $LASTEXITCODE } else { exit 1 } } DEBUG winrmshell: Output: {:data=>[{:stdout=>"should upload file C:\\tmp\\minion"}, {:stdout=>"\n"}], :exitcode=>1} DEBUG winrmshell: cmd executing: echo %TEMP% DEBUG winrmshell: Output: {:data=>[{:stdout=>"C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\r\n"}], :exitcode=>0} DEBUG filemanager: Uploading '/home/obestwalter/work/prodenv/vagrant_winbox/salt/minion' to temp file 'C:\Users\ADMINI~1\AppData\Local\Temp/winrm-upload-0.7808051803959843' DEBUG winrmshell: cmd executing: echo IyBXQVJOSU5HIFRISVMgQ09ORklHIElTIEpVU1QgRk9SIFZBR1JBTlQhCgpmaWxlX2NsaWVudDogbG9jYWwKbG9nX2xldmVsOiBpbmZvCnN0YXRlX291dHB1dDogbWl4ZWQKCg== >> "C:\Users\ADMINI~1\AppData\Local\Temp/winrm-upload-0.7808051803959843" DEBUG winrmshell: Output: {:data=>[], :exitcode=>0} DEBUG filemanager: Decoding temp file 'C:\Users\ADMINI~1\AppData\Local\Temp/winrm-upload-0.7808051803959843' to 'C:\tmp/minion' DEBUG winrmshell: powershell executing: $tmp_file_path = [System.IO.Path]::GetFullPath('C:\Users\ADMINI~1\AppData\Local\Temp/winrm-upload-0.7808051803959843') $dest_file_path = [System.IO.Path]::GetFullPath('C:\tmp/minion') if (Test-Path $dest_file_path) { rm $dest_file_path } else { $dest_dir = ([System.IO.Path]::GetDirectoryName($dest_file_path)) New-Item -ItemType directory -Force -Path $dest_dir } $base64_string = Get-Content $tmp_file_path $bytes = [System.Convert]::FromBase64String($base64_string) [System.IO.File]::WriteAllBytes($dest_file_path, $bytes) if ($?) { exit 0 } else { if($LASTEXITCODE) { exit $LASTEXITCODE } else { exit 1 } } DEBUG winrmshell: Output: {:data=>[{:stdout=>"\r\n"}, {:stdout=>"\r\n"}, {:stdout=>" Directory: C:\\"}, {:stdout=>"\r\n\r\n\r\n"}, {:stdout=>"Mode LastWriteTime Length Name \r\n"}, {:stdout=>"---- ------------- ------ ---- \r\nd---- 13.04.2015 14:34 tmp \r\n"}], :exitcode=>0} INFO interface: info: Checking if C:\salt\salt-minion.exe is installed Checking if C:\salt\salt-minion.exe is installed DEBUG winrmshell: powershell executing: $command = [Array](Get-Command C:\salt\salt-minion.exe -errorAction SilentlyContinue) if ($null -eq $command) { exit 1 } write-host $command[0].Definition exit 0 if ($?) { exit 0 } else { if($LASTEXITCODE) { exit $LASTEXITCODE } else { exit 1 } } DEBUG winrmshell: Output: {:data=>[], :exitcode=>1} INFO interface: info: C:\salt\salt-minion.exe was not found. C:\salt\salt-minion.exe was not found. INFO interface: info: Checking if C:\salt\salt-call.exe is installed Checking if C:\salt\salt-call.exe is installed DEBUG winrmshell: powershell executing: $command = [Array](Get-Command C:\salt\salt-call.exe -errorAction SilentlyContinue) if ($null -eq $command) { exit 1 } write-host $command[0].Definition exit 0 if ($?) { exit 0 } else { if($LASTEXITCODE) { exit $LASTEXITCODE } else { exit 1 } } DEBUG winrmshell: Output: {:data=>[], :exitcode=>1} INFO interface: info: C:\salt\salt-call.exe was not found. C:\salt\salt-call.exe was not found. INFO interface: info: Bootstrapping Salt... (this may take a while) Bootstrapping Salt... (this may take a while) DEBUG winrmshell: powershell executing: $p = "C:\tmp/bootstrap_salt.ps1" if ((Test-Path $p) -and (!(get-item $p).PSIsContainer)) { exit 0 } exit 1 if ($?) { exit 0 } else { if($LASTEXITCODE) { exit $LASTEXITCODE } else { exit 1 } } DEBUG winrmshell: Output: {:data=>[], :exitcode=>1} INFO winrm: Uploading: /opt/vagrant/embedded/gems/gems/vagrant-1.7.2/plugins/provisioners/salt/bootstrap-salt.ps1 to C:\tmp/bootstrap_salt.ps1 DEBUG filemanager: Upload: /opt/vagrant/embedded/gems/gems/vagrant-1.7.2/plugins/provisioners/salt/bootstrap-salt.ps1 -> C:\tmp/bootstrap_salt.ps1 DEBUG winrmshell: powershell executing: $dest_file_path = [System.IO.Path]::GetFullPath('C:\tmp/bootstrap_salt.ps1') if (Test-Path $dest_file_path) { $crypto_provider = new-object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider try { $file = [System.IO.File]::Open($dest_file_path, [System.IO.Filemode]::Open, [System.IO.FileAccess]::Read) $guest_md5 = ([System.BitConverter]::ToString($crypto_provider.ComputeHash($file))).Replace("-","").ToLower() } finally { $file.Dispose() } if ($guest_md5 -eq 'c7d8762ae87333a423f1d68b2e08f585') { exit 0 } } Write-Host "should upload file $dest_file_path" exit 1 if ($?) { exit 0 } else { if($LASTEXITCODE) { exit $LASTEXITCODE } else { exit 1 } } DEBUG winrmshell: Output: {:data=>[{:stdout=>"should upload file C:\\tmp\\bootstrap_salt.ps1"}, {:stdout=>"\n"}], :exitcode=>1} DEBUG winrmshell: cmd executing: echo %TEMP% DEBUG winrmshell: Output: {:data=>[{:stdout=>"C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\r\n"}], :exitcode=>0} DEBUG filemanager: Uploading '/opt/vagrant/embedded/gems/gems/vagrant-1.7.2/plugins/provisioners/salt/bootstrap-salt.ps1' to temp file 'C:\Users\ADMINI~1\AppData\Local\Temp/winrm-upload-0.29892565979715235' DEBUG winrmshell: cmd executing: echo IyBTYWx0IHZlcnNpb24gdG8gaW5zdGFsbAokdmVyc2lvbiA9ICcyMDE0LjEuMTAnCgojIENyZWF0ZSBDOlx0bXBcIC0gaWYgVmFncmFudCBkb2Vzbid0IHVwbG9hZCBrZXlzIGFuZC9vciBjb25maWcgaXQgbWlnaHQgbm90IGV4aXN0Ck5ldy1JdGVtIEM6XHRtcFwgLUl0ZW1UeXBlIGRpcmVjdG9yeSB8IG91dC1udWxsCgojIENvcHkgbWluaW9uIGtleXMgJiBjb25maWcgdG8gY29ycmVjdCBsb2NhdGlvbgpOZXctSXRlbSBDOlxzYWx0XGNvbmZccGtpXG1pbmlvblwgLUl0ZW1UeXBlIGRpcmVjdG9yeSB8IG91dC1udWxsCgojIENoZWNrIGlmIG1pbmlvbiBrZXlzIGhhdmUgYmVlbiB1cGxvYWRlZAppZiAoVGVzdC1QYXRoIEM6XHRtcFxtaW5pb24ucGVtKSB7CiAgY3AgQzpcdG1wXG1pbmlvbi5wZW0gQzpcc2FsdFxjb25mXHBraVxtaW5pb25cCiAgY3AgQzpcdG1wXG1pbmlvbi5wdWIgQzpcc2FsdFxjb25mXHBraVxtaW5pb25cCn0KCiMgQ2hlY2sgaWYgbWluaW9uIGNvbmZpZyBoYXMgYmVlbiB1cGxvYWRlZAppZiAoVGVzdC1QYXRoIEM6XHRtcFxtaW5pb24pIHsKICBjcCBDOlx0bXBcbWluaW9uIEM6XHNhbHRcY29uZlwKfQoKIyBEZXRlY3QgYXJjaGl0ZWN0dXJlCmlmIChbSW50UHRyXTo6U2l6ZSAtZXEgNCkgewogICRhcmNoID0gIndpbjMyIgp9IGVsc2UgewogICRhcmNoID0gIkFNRDY0Igp9CgojIERvd25sb2FkIG1pbmlvbiBzZXR1cCBmaWxlCldyaXRlLUhvc3QgIkRvd25sb2FkaW5nIFNhbHQgbWluaW9uIGluc3RhbGxlciAoJGFyY2gpLi4uIgokd2ViY2xpZW50ID0gTmV3LU9iamVjdCBTeXN0ZW0uTmV0LldlYkNsaWVudAokdXJsID0gImh0dHBzOi8vZG9jcy5zYWx0c3RhY2suY29tL2Rvd25sb2Fkcy9TYWx0LU1pbmlvbi0kdmVyc2lvbi0kYXJjaC1TZXR1cC5leGUiCiRmaWxlID0gIkM6XHRtcFxzYWx0LmV4ZSIKJHdlYmNsaWVudC5Eb3dubG9hZEZpbGUoJHVybCwgJGZpbGUpCgojIEluc3RhbGwgbWluaW9uIHNpbGVudGx5CldyaXRlLUhvc3QgIkluc3RhbGxpbmcgU2FsdCBtaW5pb24uLi4iCkM6XHRtcFxzYWx0LmV4ZSAvUwoKIyBXYWl0IGZvciBzYWx0LW1pbmlvbiBzZXJ2aWNlIHRvIGJlIHJlZ2lzdGVyZWQgYmVmb3JlIHRyeWluZyB0byBzdGFydCBpdAokc2VydmljZSA9IEdldC1TZXJ2aWNlIHNhbHQtbWluaW9uIC1FcnJvckFjdGlvbiBTaWxlbnRseUNvbnRpbnVlCldoaWxlICghJHNlcnZpY2UpIHsKICBTdGFydC1TbGVlcCAtcyAyCiAgJHNlcnZpY2UgPSBHZXQtU2VydmljZSBzYWx0LW1pbmlvbiAtRXJyb3JBY3Rpb24gU2lsZW50bHlDb250aW51ZQp9CgojIFN0YXJ0IHNlcnZpY2UKU3RhcnQtU2VydmljZSAtTmFtZSAic2FsdC1taW5pb24iIC1FcnJvckFjdGlvbiBTaWxlbnRseUNvbnRpbnVlCgojIENoZWNrIGlmIHNlcnZpY2UgaXMgc3RhcnRlZCwgb3RoZXJ3aXNlIHJldHJ5IHN0YXJ0aW5nIHRoZSAKIyBzZXJ2aWNlIDQgdGltZXMuCiR0cnkgPSAwCldoaWxlICgoJHNlcnZpY2UuU3RhdHVzIC1uZSAiUnVubmluZyIpIC1hbmQgKCR0cnkgLW5lIDQpKSB7CiAgU3RhcnQtU2VydmljZSAtTmFtZSAic2FsdC1taW5pb24iIC1FcnJvckFjdGlvbiBTaWxlbnRseUNvbnRpbnVlCiAgJHNlcnZpY2UgPSBHZXQtU2VydmljZSBzYWx0LW1pbmlvbiAtRXJyb3JBY3Rpb24gU2lsZW50bHlDb250aW51ZQogIFN0YXJ0LVNsZWVwIC1zIDIKICAkdHJ5ICs9IDEKfQoKIyBJZiB0aGUgc2FsdC1taW5pb24gc2VydmljZSBpcyBzdGlsbCBub3QgcnVubmluZywgc29tZXRoaW5nIHByb2JhYmx5CiMgd2VudCB3cm9uZyBhbmQgdXNlciBpbnRlcnZlbnRpb24gaXMgcmVxdWlyZWQgLSByZXBvcnQgZmFpbHVyZS4KaWYgKCRzZXJ2aWNlLlN0YXR1cyAtZXEgIlN0b3BwZWQiKSB7CiAgV3JpdGUtSG9zdCAiRmFpbGVkIHRvIHN0YXJ0IFNhbHQgbWluaW9uIgogIGV4aXQgMQp9CgpXcml0ZS1Ib3N0ICJTYWx0IG1pbmlvbiBzdWNjZXNzZnVsbHkgaW5zdGFsbGVkIgo= >> "C:\Users\ADMINI~1\AppData\Local\Temp/winrm-upload-0.29892565979715235" DEBUG winrmshell: Output: {:data=>[], :exitcode=>0} DEBUG filemanager: Decoding temp file 'C:\Users\ADMINI~1\AppData\Local\Temp/winrm-upload-0.29892565979715235' to 'C:\tmp/bootstrap_salt.ps1' DEBUG winrmshell: powershell executing: $tmp_file_path = [System.IO.Path]::GetFullPath('C:\Users\ADMINI~1\AppData\Local\Temp/winrm-upload-0.29892565979715235') $dest_file_path = [System.IO.Path]::GetFullPath('C:\tmp/bootstrap_salt.ps1') if (Test-Path $dest_file_path) { rm $dest_file_path } else { $dest_dir = ([System.IO.Path]::GetDirectoryName($dest_file_path)) New-Item -ItemType directory -Force -Path $dest_dir } $base64_string = Get-Content $tmp_file_path $bytes = [System.Convert]::FromBase64String($base64_string) [System.IO.File]::WriteAllBytes($dest_file_path, $bytes) if ($?) { exit 0 } else { if($LASTEXITCODE) { exit $LASTEXITCODE } else { exit 1 } } DEBUG winrmshell: Output: {:data=>[{:stdout=>"\r\n"}, {:stdout=>"\r\n"}, {:stdout=>" Directory: C:\\"}, {:stdout=>"\r\n\r\n\r\n"}, {:stdout=>"Mode LastWriteTime Length Name "}, {:stdout=>"\r\n---- ------------- ------ ---- \r\n"}, {:stdout=>"d---- 13.04.2015 14:34 tmp \r\n"}], :exitcode=>0} DEBUG winrmshell: powershell executing: powershell.exe -executionpolicy bypass -file C:\tmp/bootstrap_salt.ps1 if ($?) { exit 0 } else { if($LASTEXITCODE) { exit $LASTEXITCODE } else { exit 1 } } DEBUG winrmshell: Output: {:data=>[{:stderr=>"New-Item : Item with specified name C:\\tmp\\ already exists.\r\n"}, {:stderr=>"At C:\\tmp\\bootstrap_salt.ps1:5 char:9\r\n"}, {:stderr=>"+ New-Item <<<< C:\\tmp\\ -ItemType directory | out-null\r\n + CategoryInfo : ResourceExists: (C:\\tmp\\:String) [New-Item], IOE \r\n xception\r\n + FullyQualifiedErrorId : DirectoryExist,Microsoft.PowerShell.Commands.New \r\n ItemCommand\r\n \r\n"}, {:stdout=>"Downloading Salt minion installer (AMD64)..."}, {:stdout=>"\n"}, {:stdout=>"Installing Salt minion..."}, {:stdout=>"\n"}, {:stdout=>"Failed to start Salt minion"}, {:stdout=>"\n"}], :exitcode=>1} ERROR warden: Error occurred: The following WinRM command responded with a non-zero exit status. Vagrant assumes that this means the command failed! powershell.exe -executionpolicy bypass -file C:\tmp/bootstrap_salt.ps1 if ($?) { exit 0 } else { if($LASTEXITCODE) { exit $LASTEXITCODE } else { exit 1 } } Stdout from the command: Stderr from the command: New-Item : Item with specified name C:\tmp\ already exists. At C:\tmp\bootstrap_salt.ps1:5 char:9 + New-Item <<<< C:\tmp\ -ItemType directory | out-null + CategoryInfo : ResourceExists: (C:\tmp\:String) [New-Item], IOE xception + FullyQualifiedErrorId : DirectoryExist,Microsoft.PowerShell.Commands.New ItemCommand INFO warden: Beginning recovery process... INFO warden: Recovery complete. ERROR warden: Error occurred: The following WinRM command responded with a non-zero exit status. Vagrant assumes that this means the command failed! powershell.exe -executionpolicy bypass -file C:\tmp/bootstrap_salt.ps1 if ($?) { exit 0 } else { if($LASTEXITCODE) { exit $LASTEXITCODE } else { exit 1 } } Stdout from the command: Stderr from the command: New-Item : Item with specified name C:\tmp\ already exists. At C:\tmp\bootstrap_salt.ps1:5 char:9 + New-Item <<<< C:\tmp\ -ItemType directory | out-null + CategoryInfo : ResourceExists: (C:\tmp\:String) [New-Item], IOE xception + FullyQualifiedErrorId : DirectoryExist,Microsoft.PowerShell.Commands.New ItemCommand INFO warden: Beginning recovery process... INFO warden: Calling recover: #<Vagrant::Action::Builtin::HandleForwardedPortCollisions:0x00000001550a68> INFO warden: Recovery complete. INFO warden: Beginning recovery process... INFO warden: Recovery complete. INFO warden: Beginning recovery process... INFO warden: Recovery complete. INFO warden: Beginning recovery process... INFO warden: Recovery complete. INFO warden: Beginning recovery process... INFO warden: Recovery complete. [...] etc. (runs into this error several times, before giving up) ############################### Vagrantfile #################################### Vagrant.configure("2") do |config| config.vm.box = "w2k8_r2_base" config.vm.communicator = "winrm" config.winrm.username = "Administrator" config.winrm.password = "Vagrant123" config.vm.network "forwarded_port", guest: 3389, host: 33389, id: "rdp", auto_correct: true config.vm.provider :virtualbox do |v, override| v.customize ["modifyvm", :id, "--memory", 2048] v.customize ["modifyvm", :id, "--cpus", 2] end config.vm.synced_folder ".", "C:/salt/srv/salt/" config.vm.provision :salt do |salt| salt.minion_config = "salt/minion" salt.run_highstate = true end end ############################### Vagrantfile #################################### Cheers Oliver -- You received this message because you are subscribed to the Google Groups "Vagrant" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
