Skip to content

Instantly share code, notes, and snippets.

@pmanno
Created July 20, 2020 21:45
Show Gist options
  • Save pmanno/37529faf0bd3006a7c8c285bdc76c1d7 to your computer and use it in GitHub Desktop.
Save pmanno/37529faf0bd3006a7c8c285bdc76c1d7 to your computer and use it in GitHub Desktop.
packer build file
{
"variables": {
"PACKER_ENVIRONMENT_TARGET": "{{ env `PACKER_ENVIRONMENT_TARGET` }}",
"PACKER_ESX_USERNAME": "{{ env `PACKER_ESX_USERNAME` }}",
"PACKER_ESX_PASSWORD": "{{ env `PACKER_ESX_PASSWORD` }}",
"PACKER_ESX_HOST": "{{ env `PACKER_ESX_HOST` }}",
"PACKER_ESX_DATASTORE": "{{ env `PACKER_ESX_DATASTORE` }}",
"PACKER_VM_CPU": "{{ env `PACKER_VM_CPU` }}",
"PACKER_VM_RAM": "{{ env `PACKER_VM_RAM` }}",
"PACKER_VM_DISK": "{{ env `PACKER_VM_DISK` }}",
"PACKER_ISO_URL": "{{ env `PACKER_ISO_URL` }}",
"PACKER_ISO_CHECKSUM": "{{ env `PACKER_ISO_CHECKSUM` }}",
"PACKER_ISO_CHECKSUM_TYPE": "{{ env `PACKER_ISO_CHECKSUM_TYPE` }}",
"PACKER_VM_FQDN": "{{ env `PACKER_VM_FQDN` }}",
"PACKER_SSH_USERNAME": "{{ env `PACKER_SSH_USERNAME` }}",
"PACKER_DNS_ADMIN_USERNAME": "{{ env `PACKER_DNS_ADMIN_USERNAME` }}",
"PACKER_DNS_ADMIN_PASSWORD": "{{ env `PACKER_DNS_ADMIN_PASSWORD` }}"
},
"builders": [
{
"boot_command": [
"<enter><f6><esc>",
"<bs><bs><bs><bs><bs>",
"<bs><bs><bs><bs><bs>",
"<bs><bs><bs><bs><bs>",
"<bs><bs><bs><bs><bs>",
"<bs><bs><bs><bs><bs>",
"<bs><bs><bs><bs><bs>",
"<bs><bs><bs><bs><bs>",
"<bs><bs><bs><bs><bs>",
"<bs><bs><bs><bs><bs>",
"<bs><bs><bs><bs><bs>",
"<bs><bs><bs><bs><bs>",
"<bs><bs><bs><bs><bs>",
"<bs><bs><bs><bs><bs>",
"<bs><bs><bs><bs><bs>",
"<bs><bs><bs><bs><bs>",
"<bs><bs><bs><bs><bs>",
"<bs><bs><bs>",
"auto preseed/file=/floppy/preseed.cfg ",
"locale=en_US keyboard-configuration/modelcode=SKIP ",
"initrd=/install/initrd.gz quiet --- ",
"<enter>"
],
"type": "vmware-iso",
"vm_name": "{{ user `PACKER_VM_FQDN`}}",
"communicator": "ssh",
"ssh_pty": "true",
"disk_size": "{{ user `PACKER_VM_DISK` }}",
"disk_type_id": "thin",
"skip_compaction": "true",
"iso_url": "{{ user `PACKER_ISO_URL` }}",
"iso_checksum": "sha256:{{ user `PACKER_ISO_CHECKSUM` }}",
"shutdown_command": "sudo shutdown -h now",
"ssh_username": "packer",
"ssh_agent_auth": true,
"ssh_timeout": "3600s",
"guest_os_type": "Ubuntu-64",
"remote_type": "esx5",
"remote_host": "{{ user `PACKER_ESX_HOST` }}",
"remote_username": "{{ user `PACKER_ESX_USERNAME` }}",
"remote_password": "{{ user `PACKER_ESX_PASSWORD` }}",
"remote_datastore": "{{ user `PACKER_ESX_DATASTORE` }}",
"remote_cache_datastore": "{{ user `PACKER_ESX_DATASTORE` }}",
"remote_cache_directory": "packer_cache",
"vmx_data": {
"mem.hotadd": "TRUE",
"scsi0.virtualdev": "pvscsi",
"numvcpus": "{{ user `PACKER_VM_CPU` }}",
"memsize": "{{ user `PACKER_VM_RAM` }}",
"ethernet0.networkName": "VM Network",
"ethernet0.present": "TRUE",
"ethernet0.startConnected": "TRUE",
"ethernet0.virtualDev": "vmxnet3",
"ethernet0.addressType": "generated",
"ethernet0.generatedAddressOffset": "0",
"ethernet0.wakeOnPcktRcv": "FALSE"
},
"vmx_data_post": {
"uuid.bios": "{{ uuid }}",
"vc.uuid": "{{ uuid }}",
"uuid.action": "create"
},
"floppy_files": "../GLOBAL/Linux/Ubuntu/preseed.cfg",
"skip_export": "true",
"keep_registered": "true"
}
],
"provisioners": [
{
"type": "shell",
"inline": [
"sudo apt -y install open-vm-tools",
"sudo systemctl enable open-vm-tools",
"sudo systemctl start open-vm-tools",
"sudo echo -e '[all]\n'`hostname -I` > /tmp/hosts"
]
},
{
"type": "file",
"direction": "download",
"source": "/tmp/hosts",
"destination": "./hosts_{{ user `PACKER_VM_FQDN` }}"
},
{
"type": "shell-local",
"command": "rm -rf galaxy;ansible-galaxy install -p galaxy -r requirements_{{ user `PACKER_VM_FQDN` }}.yml"
},
{
"type": "shell-local",
"command": "ansible-playbook -i hosts_{{ user `PACKER_VM_FQDN` }} -e\"ansible_become=True ansible_user={{ user `PACKER_SSH_USERNAME` }} environment_target={{ user `PACKER_ENVIRONMENT_TARGET` }} vm_fqdn={{ user `PACKER_VM_FQDN` }}\" playbook_{{ user `PACKER_VM_FQDN` }}.yml"
},
{
"type": "shell-local",
"inline": ["P=$(cat hosts_{{ user `PACKER_VM_FQDN` }} | tail -1); cd ../GLOBAL/Ansible; ansible-playbook -i hosts -e\"ansible_user={{ user `PACKER_DNS_ADMIN_USERNAME` }} ansible_password={{ user `PACKER_DNS_ADMIN_PASSWORD` }} vm_fqdn={{ user `PACKER_VM_FQDN` }} vm_ip=$P\" setDns.yml"]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment