Packer WinRM Ansible http response error: 401

41 views
Skip to first unread message

rafal smolinski

unread,
Jun 11, 2019, 3:45:35 AM6/11/19
to Packer
Hi, 

I'm trying to build windows 2016 ami and provision it with ansible.  Can you advice what I'm doing wrong or what else I should try. I've following error:

 ==> amazon-ebs: Provisioning with Powershell...
==> amazon-ebs: Provisioning with powershell script: /tmp/powershell-provisioner284254996
    amazon-ebs: TaskPath                                       TaskName                          State
    amazon-ebs: --------                                       --------                          -----
    amazon-ebs: \                                              Amazon Ec2 Launch - Instance I... Ready
==> amazon-ebs: Provisioning with Ansible...
==> amazon-ebs: Executing Ansible: ansible-playbook --extra-vars packer_build_name=amazon-ebs packer_builder_type=amazon-ebs -o IdentitiesOnly=yes -i /tmp/packer-provisioner-ansible975257195 /home/build-server_0_playbook.yml -e ansible_ssh_private_key_file=/tmp/ansible-key377479228 --connection packer -vvv --extra-vars ansible_shell_type=powershell ansible_shell_executable=None
    amazon-ebs: ansible-playbook 2.7.5
    amazon-ebs:   config file = /etc/ansible/ansible.cfg
    amazon-ebs:   configured module search path = ['/home/pr0t/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
    amazon-ebs:   ansible python module location = /home/repositories/infra-ami/venv/lib/python3.7/site-packages/ansible
    amazon-ebs:   executable location = /venv/bin/ansible-playbook
    amazon-ebs:   python version = 3.7.3 (default, Mar 26 2019, 21:43:19) [GCC 8.2.1 20181127]
    amazon-ebs: Using /etc/ansible/ansible.cfg as config file
    amazon-ebs: /tmp/packer-provisioner-ansible975257195 did not meet host_list requirements, check plugin documentation if this is unexpected
    amazon-ebs: /tmp/packer-provisioner-ansible975257195 did not meet script requirements, check plugin documentation if this is unexpected
    amazon-ebs: Parsed /tmp/packer-provisioner-ansible975257195 inventory source with ini plugin
    amazon-ebs:
    amazon-ebs: PLAYBOOK: build-server_0_playbook.yml **************************
    amazon-ebs: 1 plays in build-server_0_playbook.yml
    amazon-ebs:
    amazon-ebs: PLAY [build-server] ********************************************
    amazon-ebs:
    amazon-ebs: TASK [Gathering Facts] *********************************************************
    amazon-ebs: task path: build-server_0_playbook.yml:3
    amazon-ebs: <127.0.0.1> ESTABLISH SSH CONNECTION FOR USER: pr0t
    amazon-ebs: <127.0.0.1> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o Port=46089 -o 'IdentityFile="/tmp/ansible-key377479228"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=pr0t -o ConnectTimeout=10 -o ControlPath=/home/pr0t/.ansible/cp/4a94304e09 127.0.0.1 'PowerShell -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -EncodedCommand *redacted*'
==> amazon-ebs: http response error: 401 - invalid content type
 My setup: 

packer.json
"communicator": "winrm",
"user_data_file":"packer/win.cmd",
"winrm_username": "Administrator",
"winrm_timeout": "10m"
"provisioners": [
       {
           "type": "powershell",
           "inline": [
               "C:/ProgramData/Amazon/EC2-Windows/Launch/Scripts/InitializeInstance.ps1 -Schedule",
               "C:/ProgramData/Amazon/EC2-Windows/Launch/Scripts/SysprepInstance.ps1 -NoShutdown"
           ]
       },
       {
           "type":  "ansible",
           "playbook_file": "build-server_0_playbook.yml",
           "extra_arguments": [
               "--connection", "packer", 
               "--extra-vars", "ansible_shell_type=powershell ansible_shell_executable=None"
             ]
           }
       ],

win.cmd :
<powershell>
# turn off PowerShell execution policy restrictions
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope LocalMachine

# configure WinRM
winrm quickconfig -q
winrm set winrm/config/winrs '@{MaxMemoryPerShellMB="2048"}'
winrm set winrm/config/winrs '@{MaxConcurrentUsers="100"}'
winrm set winrm/config/winrs '@{MaxProcessesPerShell="0"}'
winrm set winrm/config/winrs '@{MaxShellsPerUser="0"}'
winrm set winrm/config '@{MaxTimeoutms="7200000"}'
winrm set winrm/config/service '@{AllowUnencrypted="true"}'
winrm set winrm/config/service/auth '@{Basic="true"}'
winrm set winrm/config/service/auth '@{CredSSP="true"}'
winrm set winrm/config/client '@{TrustedHosts="*"}'


# open port 5985 in the internal Windows firewall to allow WinRM communication
netsh advfirewall firewall add rule name="WinRM 5985" protocol=TCP dir=in localport=5985 action=allow

net stop winrm
sc config winrm start=auto
net start winrm  </powershell> 

Reply all
Reply to author
Forward
0 new messages