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>