provisioners/shell: retry getting SSH info a few times [GH-3924]

This commit is contained in:
Mitchell Hashimoto 2014-10-23 22:48:48 -07:00
parent 7d6f9a60b2
commit a7d3458abc
2 changed files with 11 additions and 1 deletions

View File

@ -76,6 +76,7 @@ BUG FIXES:
- provisioners/docker: Get GPG key over SSL. [GH-4597]
- provisioners/docker: Search for docker binary in multiple places. [GH-4580]
- provisioners/salt: Highstate works properly with a master. [GH-4471]
- provisioners/shell: Retry getting SSH info a few times. [GH-3924]
- provisioners/shell: PowerShell scripts can have args. [GH-4548]
- synced\_folders/nfs: Don't modify NFS exports file if no exports. [GH-4619]

View File

@ -2,10 +2,13 @@ require "pathname"
require "tempfile"
require "vagrant/util/downloader"
require "vagrant/util/retryable"
module VagrantPlugins
module Shell
class Provisioner < Vagrant.plugin("2", :provisioner)
extend Vagrant::Util::Retryable
def provision
args = ""
if config.args.is_a?(String)
@ -50,7 +53,13 @@ module VagrantPlugins
# Upload the script to the machine
@machine.communicate.tap do |comm|
# Reset upload path permissions for the current ssh user
user = @machine.ssh_info[:username]
info = nil
retryable(on: Vagrant::Errors::SSHNotReady, tries: 3, sleep: 2) do
info = @machine.ssh_info
raise Vagrant::Errors::SSHNotReady if info.nil?
end
user = info[:username]
comm.sudo("chown -R #{user} #{config.upload_path}",
error_check: false)