Hello,
I am trying to achieve building windows servers with some packages [like installing webserver] using virtualbox and ansible.
I am able to build minimum OS without ansible. But when I added ansible post provisioner, its failing. The problem is its unable to reach the newly built VM in virtualbox.
Please share if you have successful in this kind of solution. I tried with removing inventory file section and allowed packer to create dynamically created host file. but still failed.
Below is the packer section:
"builders": [
{
"type": "virtualbox-iso",
"iso_url": "{{user `iso_url`}}",
"guest_additions_mode": "attach",
"iso_checksum_type": "{{user `iso_checksum_type`}}",
"iso_checksum": "{{user `iso_checksum`}}",
"headless": false,
"shutdown_timeout": "15m",
"post_shutdown_delay": "5m",
"boot_wait": "2m",
"winrm_username": "vagrant",
"winrm_password": "vagrant",
"winrm_timeout": "6h",
"communicator": "winrm",
"shutdown_command": "shutdown /s /t 180 /f /d p:4:1 /c \"Packer Shutdown\"",
"guest_os_type": "Windows2012_64",
"disk_size": 61440,
"floppy_files": [
"{{user `autounattend`}}",
"./scripts/microsoft-updates.bat",
"./scripts/Boot-Strap.ps1",
"./scripts/configansible.ps1",
"./scripts/createla.bat"
],
"vboxmanage": [
[
"modifyvm",
"{{.Name}}",
"--memory",
"2048"
],
[
"modifyvm",
"{{.Name}}",
"--cpus",
"2"
]
]
}
],
"provisioners": [
{
"type": "shell-local",
"command": "ansible-playbook webservers.yml -vvvv"
}
],
================================================================================
ansible.cfg:
[defaults]
log_path=/home/vagrant/packer/logfile
inventory=/home/vagrant/packer/hosts
==========================================
hosts:
[webservers]
127.0.0.1
[webservers:vars]
ansible_user=vagrant
ansible_password=vagrant
ansible_port=55985
ansible_connection=winrm
ansible_winrm_server_cert_validation=ignore
=========================================
group_vars:
---
ansible_ssh_user: vagrant
ansible_ssh_pass: vagrant
ansible_ssh_port: 55985
ansible_connection: winrm
ansible_winrm_server_cert_validation: ignore
=====================================
ansible playbook:
---
- hosts: webservers
roles:
- webservers
=====================================================
Error message in packer output:
==> virtualbox-iso: Executing local command: ansible-playbook webservers.yml -vvvv
virtualbox-iso: Using /home/vagrant/packer/ansible.cfg as config file
virtualbox-iso: statically included: /home/vagrant/packer/roles/webservers/tasks/install.yml
virtualbox-iso: Loading callback plugin default of type stdout, v2.0 from /usr/local/lib/python2.7/dist-packages/ansible/plugins/callback/__init__.pyc
virtualbox-iso:
virtualbox-iso: PLAYBOOK: webservers.yml *******************************************************
virtualbox-iso: 1 plays in webservers.yml
virtualbox-iso:
virtualbox-iso: PLAY [webservers] **************************************************************
virtualbox-iso:
virtualbox-iso: TASK [setup] *******************************************************************
virtualbox-iso: Using module file /usr/local/lib/python2.7/dist-packages/ansible/modules/core/windows/setup.ps1
virtualbox-iso: <127.0.0.1> ESTABLISH WINRM CONNECTION FOR USER: vagrant on PORT 55985 TO 127.0.0.1
virtualbox-iso: fatal: [127.0.0.1]: UNREACHABLE! => {
virtualbox-iso: "changed": false,
virtualbox-iso: "msg": "ssl: HTTPSConnectionPool(host='127.0.0.1', port=55985): Max retries exceeded with url: /wsman (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x7f67097e7a90>: Failed to establish a new connection: [Errno 111] Connection refused',))",
virtualbox-iso: "unreachable": true
virtualbox-iso: }
virtualbox-iso: to retry, use: --limit @/home/vagrant/packer/webservers.retry
virtualbox-iso:
virtualbox-iso: PLAY RECAP *********************************************************************
virtualbox-iso: 127.0.0.1 : ok=0 changed=0 unreachable=1 failed=0
virtualbox-iso:
===========================================================