joefitzgerald / packer-windows

Windows Packer Templates
MIT License
1.63k stars 1.12k forks source link

Windows 2008r2 with Windows Updates fails to run provisioners scripts #142

Closed olivier427 closed 8 years ago

olivier427 commented 9 years ago

Windows 2008r2 build fails soon after windows updates finish and SSH starts accepting connections. If I disable Windows Updates from Autounattend.xml, it works fine.

It seems that the provisioner script C:/Windows/Temp/script.bat does not exist despite packer correctly uploading it to /tmp/script.bat

Has anyone had a similar issue and managed to fix it somehow ?

==> windows-2008.r2-fusion: Connected to SSH!
2015/03/03 10:49:37 ui: ==> windows-2008.r2-fusion: Connected to SSH!
==> windows-2008.r2-fusion: Uploading the 'windows' VMware Tools
2015/03/03 10:49:37 ui: ==> windows-2008.r2-fusion: Uploading the 'windows' VMware Tools
2015/03/03 10:49:37 packer-builder-vmware-iso: 2015/03/03 10:49:37 opening new ssh session
2015/03/03 10:49:37 packer-builder-vmware-iso: 2015/03/03 10:49:37 Starting remote scp process:  scp -vt .
2015/03/03 10:49:37 packer-builder-vmware-iso: 2015/03/03 10:49:37 Started SCP session, beginning transfers...
2015/03/03 10:49:37 packer-builder-vmware-iso: 2015/03/03 10:49:37 Copying input data into temporary file so we can read the length
2015/03/03 10:49:37 packer-builder-vmware-iso: 2015/03/03 10:49:37 [DEBUG] Uploading windows.iso: perms=C0644 size=85426176
2015/03/03 10:49:40 packer-builder-vmware-iso: 2015/03/03 10:49:40 SCP session complete, closing stdin pipe.
2015/03/03 10:49:40 packer-builder-vmware-iso: 2015/03/03 10:49:40 Waiting for SSH session to complete.
2015/03/03 10:49:40 packer-builder-vmware-iso: 2015/03/03 10:49:40 scp stderr (length 33): Sink: C0644 85426176 windows.iso
2015/03/03 10:49:40 packer-builder-vmware-iso: 2015/03/03 10:49:40 Running the provision hook
==> windows-2008.r2-fusion: Provisioning with shell script: ./scripts/windows/vm-guest-tools.bat
2015/03/03 10:49:40 ui: ==> windows-2008.r2-fusion: Provisioning with shell script: ./scripts/windows/vm-guest-tools.bat
2015/03/03 10:49:40 packer-provisioner-shell: 2015/03/03 10:49:40 Opening ./scripts/windows/vm-guest-tools.bat for reading
2015/03/03 10:49:40 packer-provisioner-shell: 2015/03/03 10:49:40 [INFO] 1880 bytes written for 'uploadData'
2015/03/03 10:49:40 [INFO] 1880 bytes written for 'uploadData'
2015/03/03 10:49:40 packer-command-build: 2015/03/03 10:49:40 [INFO] 1880 bytes written for 'uploadData'
2015/03/03 10:49:40 [INFO] 1880 bytes written for 'uploadData'
2015/03/03 10:49:40 packer-builder-vmware-iso: 2015/03/03 10:49:40 opening new ssh session
2015/03/03 10:49:40 packer-builder-vmware-iso: 2015/03/03 10:49:40 Starting remote scp process:  scp -vt /tmp
2015/03/03 10:49:40 packer-builder-vmware-iso: 2015/03/03 10:49:40 Started SCP session, beginning transfers...
2015/03/03 10:49:40 packer-builder-vmware-iso: 2015/03/03 10:49:40 Copying input data into temporary file so we can read the length
2015/03/03 10:49:40 packer-builder-vmware-iso: 2015/03/03 10:49:40 [DEBUG] Uploading script.bat: perms=C0644 size=1880
2015/03/03 10:49:40 packer-builder-vmware-iso: 2015/03/03 10:49:40 SCP session complete, closing stdin pipe.
2015/03/03 10:49:40 packer-builder-vmware-iso: 2015/03/03 10:49:40 Waiting for SSH session to complete.
2015/03/03 10:49:40 packer-builder-vmware-iso: 2015/03/03 10:49:40 scp stderr (length 28): Sink: C0644 1880 script.bat
2015/03/03 10:49:40 packer-builder-vmware-iso: 2015/03/03 10:49:40 opening new ssh session
2015/03/03 10:49:40 packer-builder-vmware-iso: 2015/03/03 10:49:40 starting remote command: chmod 0777 /tmp/script.bat
2015/03/03 10:49:40 packer-builder-vmware-iso: 2015/03/03 10:49:40 remote command exited with '0': chmod 0777 /tmp/script.bat
2015/03/03 10:49:40 packer-builder-vmware-iso: 2015/03/03 10:49:40 [INFO] RPC endpoint: Communicator ended with: 0
2015/03/03 10:49:40 [INFO] RPC client: Communicator ended with: 0
2015/03/03 10:49:40 [INFO] RPC endpoint: Communicator ended with: 0
2015/03/03 10:49:40 packer-command-build: 2015/03/03 10:49:40 [INFO] RPC client: Communicator ended with: 0
2015/03/03 10:49:40 packer-command-build: 2015/03/03 10:49:40 [INFO] RPC endpoint: Communicator ended with: 0
2015/03/03 10:49:40 [INFO] RPC client: Communicator ended with: 0
2015/03/03 10:49:40 [INFO] RPC endpoint: Communicator ended with: 0
2015/03/03 10:49:40 packer-provisioner-shell: 2015/03/03 10:49:40 [INFO] RPC client: Communicator ended with: 0
2015/03/03 10:49:40 packer-builder-vmware-iso: 2015/03/03 10:49:40 opening new ssh session
2015/03/03 10:49:40 packer-builder-vmware-iso: 2015/03/03 10:49:40 starting remote command: PACKER_BUILD_NAME=windows-2008.r2-fusion PACKER_BUILDER_TYPE=vmware-iso cmd /c C:/Windows/Temp/script.bat
2015/03/03 10:49:40 packer-builder-vmware-iso: 2015/03/03 10:49:40 remote command exited with '1': PACKER_BUILD_NAME=windows-2008.r2-fusion PACKER_BUILDER_TYPE=vmware-iso cmd /c C:/Windows/Temp/script.bat
2015/03/03 10:49:40 packer-builder-vmware-iso: 2015/03/03 10:49:40 [INFO] RPC endpoint: Communicator ended with: 1
2015/03/03 10:49:40 [INFO] 0 bytes written for 'stderr'
2015/03/03 10:49:40 [INFO] 119 bytes written for 'stdout'
2015/03/03 10:49:40 [INFO] RPC client: Communicator ended with: 1
2015/03/03 10:49:40 [INFO] RPC endpoint: Communicator ended with: 1
2015/03/03 10:49:40 packer-command-build: 2015/03/03 10:49:40 [INFO] 0 bytes written for 'stderr'
2015/03/03 10:49:40 packer-command-build: 2015/03/03 10:49:40 [INFO] 119 bytes written for 'stdout'
2015/03/03 10:49:40 packer-command-build: 2015/03/03 10:49:40 [INFO] RPC client: Communicator ended with: 1
2015/03/03 10:49:40 packer-command-build: 2015/03/03 10:49:40 [INFO] RPC endpoint: Communicator ended with: 1
2015/03/03 10:49:40 [INFO] 119 bytes written for 'stdout'
2015/03/03 10:49:40 [INFO] 0 bytes written for 'stderr'
2015/03/03 10:49:40 [INFO] RPC client: Communicator ended with: 1
2015/03/03 10:49:40 [INFO] RPC endpoint: Communicator ended with: 1
2015/03/03 10:49:40 packer-provisioner-shell: 2015/03/03 10:49:40 [INFO] RPC client: Communicator ended with: 1
2015/03/03 10:49:40 packer-provisioner-shell: 2015/03/03 10:49:40 [INFO] 0 bytes written for 'stderr'
2015/03/03 10:49:40 packer-provisioner-shell: 2015/03/03 10:49:40 [INFO] 119 bytes written for 'stdout'
    windows-2008.r2-fusion: 'C:/Windows/Temp/script.bat' is not recognized as an internal or external command,
2015/03/03 10:49:40 ui:     windows-2008.r2-fusion: 'C:/Windows/Temp/script.bat' is not recognized as an internal or external command,
    windows-2008.r2-fusion:
2015/03/03 10:49:40 ui:     windows-2008.r2-fusion:
    windows-2008.r2-fusion: operable program or batch file.
2015/03/03 10:49:40 ui:     windows-2008.r2-fusion: operable program or batch file.
2015/03/03 10:49:40 packer-builder-vmware-iso: 2015/03/03 10:49:40 Executing: /usr/bin/vmrun [-T player list]
2015/03/03 10:49:41 packer-builder-vmware-iso: 2015/03/03 10:49:41 stdout: Total running VMs: 1
2015/03/03 10:49:41 packer-builder-vmware-iso: /var/lib/jenkins/jobs/packer-build-windows2008r2/workspace/packer/output-windows-2008.r2-fusion/packer-windows-2008.r2-fusion.vmx
2015/03/03 10:49:41 packer-builder-vmware-iso: 2015/03/03 10:49:41 stderr:
==> windows-2008.r2-fusion: Stopping virtual machine...
2015/03/03 10:49:41 ui: ==> windows-2008.r2-fusion: Stopping virtual machine...
2015/03/03 10:49:41 packer-builder-vmware-iso: 2015/03/03 10:49:41 Executing: /usr/bin/vmrun [-T player stop output-windows-2008.r2-fusion/packer-windows-2008.r2-fusion.vmx hard]
2015/03/03 10:49:42 packer-builder-vmware-iso: 2015/03/03 10:49:42 stdout:
2015/03/03 10:49:42 packer-builder-vmware-iso: 2015/03/03 10:49:42 stderr:
2015/03/03 10:49:42 packer-builder-vmware-iso: 2015/03/03 10:49:42 Deleting floppy disk: /tmp/packer711592422
==> windows-2008.r2-fusion: Deleting output directory...
2015/03/03 10:49:42 ui: ==> windows-2008.r2-fusion: Deleting output directory...
Build 'windows-2008.r2-fusion' errored: Script exited with non-zero exit status: 1
2015/03/03 10:49:43 ui error: Build 'windows-2008.r2-fusion' errored: Script exited with non-zero exit status: 1
2015/03/03 10:49:43 packer-command-build: 2015/03/03 10:49:43 Builds completed. Waiting on interrupt barrier...
2015/03/03 10:49:43 machine readable: error-count []string{"1"}

==> Some builds didn't complete successfully and had errors:
2015/03/03 10:49:43 ui error: 
==> Some builds didn't complete successfully and had errors:
2015/03/03 10:49:43 machine readable: windows-2008.r2-fusion,error []string{"Script exited with non-zero exit status: 1"}
--> windows-2008.r2-fusion: Script exited with non-zero exit status: 1
2015/03/03 10:49:43 ui error: --> windows-2008.r2-fusion: Script exited with non-zero exit status: 1

==> Builds finished but no artifacts were created.
2015/03/03 10:49:43 ui: 
==> Builds finished but no artifacts were created.
2015/03/03 10:49:43 waiting for all plugin processes to complete...
2015/03/03 10:49:43 /usr/local/packer/0.7.1/packer-provisioner-shell: plugin process exited
2015/03/03 10:49:43 /usr/local/packer/0.7.1/packer-post-processor-vagrant: plugin process exited
2015/03/03 10:49:43 /usr/local/packer/0.7.1/packer-command-build: plugin process exited
2015/03/03 10:49:43 /usr/local/packer/0.7.1/packer-builder-vmware-iso: plugin process exited
Build step 'Execute shell' marked build as failure
Finished: FAILURE
{
  "builders": [
    {
      "type": "vmware-iso",
      "name": "windows-2008r2-fusion",
      "iso_url": "http://download.microsoft.com/download/7/5/E/75EC4E54-5B02-42D6-8879-D8D3A25FBEF7/7601.17514.101119-1850_x64fre_server_eval_en-us-GRMSXEVAL_EN_DVD.iso",
      "iso_checksum_type": "md5",
      "iso_checksum": "4263be2cf3c59177c45085c0a7bc6ca5",
      "headless": true,
      "ssh_username": "vagrant",
      "ssh_password": "vagrant",
      "ssh_wait_timeout": "4h",
      "name": "windows-2008.r2-fusion",
      "shutdown_command": "shutdown /s /t 10 /f /d p:4:1 /c \"Packer Shutdown\"",
      "guest_os_type": "windows7srv-64",
      "tools_upload_flavor": "windows",
      "disk_size": 61440,
      "vnc_port_min": 5900,
      "vnc_port_max": 5980,
      "floppy_files": [
        "./files/answer_files/2008_r2/Autounattend.xml",
        "./scripts/windows/microsoft-updates.bat",
        "./scripts/windows/win-updates.ps1",
        "./scripts/windows/openssh.ps1"
      ],
      "vmx_data": {
        "RemoteDisplay.vnc.enabled": "false",
        "RemoteDisplay.vnc.port": "5900",
        "memsize": "2048",
        "numvcpus": "1",
        "scsi0.virtualDev": "lsisas1068"
      }
    }
    ],
    "post-processors": [
       {
         "output": "build/{{.Provider}}/windows_2008_r2_{{.Provider}}.box",
         "type": "vagrant",
         "vagrantfile_template": "files/vagrantfile-windows_2008_r2.template",
         "keep_input_artifact": true
       }
    ],
    "provisioners": [
       {
         "type": "shell",
         "remote_path": "/tmp/script.bat",
         "execute_command": "{{.Vars}} cmd /c C:/Windows/Temp/script.bat",
         "scripts": [
            "./scripts/windows/vm-guest-tools.bat",
            "./scripts/windows/chef.bat",
            "./scripts/windows/vagrant-ssh.bat",
            "./scripts/windows/enable-rdp.bat",
            "./scripts/windows/disable-auto-logon.bat",
            "./scripts/windows/compact.bat",
            "./scripts/windows/disable_domain_fw.bat"
         ]
       }
}
olivier427 commented 9 years ago

I fixed it by changing remote_path variable in the shell provisioner as follow :

    "provisioners": [
       {
         "type": "shell",
         "remote_path": "/cygdrive/c/Windows/Temp/script.bat",
         "execute_command": "{{.Vars}} cmd /c C:/Windows/Temp/script.bat",
sneal commented 8 years ago

I haven't seen this, but at least we have a documented workaround in case this comes up again.

101v commented 7 years ago

I faced this issue with windows 2012 r2. Changed provisioner as follow and it worked: "provisioners": [ { "type": "windows-shell", "scripts": [ "./scripts/vm-guest-tools.bat",