diff --git a/provisioner/ansible/provisioner.go b/provisioner/ansible/provisioner.go index e38e4bc08..d7a4be655 100644 --- a/provisioner/ansible/provisioner.go +++ b/provisioner/ansible/provisioner.go @@ -20,6 +20,7 @@ import ( "strconv" "strings" "sync" + "unicode" "golang.org/x/crypto/ssh" @@ -327,12 +328,21 @@ func (p *Provisioner) executeAnsible(ui packer.Ui, comm packer.Communicator, pri wg := sync.WaitGroup{} repeat := func(r io.ReadCloser) { - scanner := bufio.NewScanner(r) - for scanner.Scan() { - ui.Message(scanner.Text()) - } - if err := scanner.Err(); err != nil { - ui.Error(err.Error()) + reader := bufio.NewReader(r) + for { + line, err := reader.ReadString('\n') + if line != "" { + line = strings.TrimRightFunc(line, unicode.IsSpace) + ui.Message(line) + } + if err != nil { + if err == io.EOF { + break + } else { + ui.Error(err.Error()) + break + } + } } wg.Done() }