Skip to content

Instantly share code, notes, and snippets.

@borncamp
Created December 10, 2019 19:22
Show Gist options
  • Select an option

  • Save borncamp/c6ad56e31cf178fbdf0349e0c1a7dad2 to your computer and use it in GitHub Desktop.

Select an option

Save borncamp/c6ad56e31cf178fbdf0349e0c1a7dad2 to your computer and use it in GitHub Desktop.

Revisions

  1. borncamp created this gist Dec 10, 2019.
    66 changes: 66 additions & 0 deletions packer.json
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,66 @@
    {
    "variables": {
    "computename":"known-vm-name"
    },
    "builders": [{
    "type": "azure-arm",

    "subscription_id": "{{user `subscription_id`}}",
    "client_id": "{{user `client_id`}}",
    "client_secret": "{{user `client_secret`}}",
    "tenant_id": "{{user `tenant_id`}}",

    "managed_image_resource_group_name": "myrgrp",
    "managed_image_name": "thebox-packer-image",

    "os_type": "Windows",
    "image_publisher": "MicrosoftWindowsServer",
    "image_offer": "WindowsServer",
    "image_sku": "2016-Datacenter",
    "temp_compute_name":"{{user `computename`}}",

    "communicator": "winrm",
    "winrm_use_ssl": true,
    "winrm_insecure": true,
    "winrm_timeout": "15m",
    "winrm_username": "packer",

    "azure_tags": {
    "owner": "Brian Borncamp",
    "task": "Image deployment"
    },

    "vm_size": "Standard_DS2_v2",
    "build_resource_group_name": "myrg",
    "virtual_network_name": "mynetwork-VNET",
    "virtual_network_resource_group_name": "mynetwork-RGRP",
    "virtual_network_subnet_name": "mynetworkSUB"

    }],
    "provisioners": [{
    "type" : "powershell",
    "environment_vars": ["WINRMPASS={{.WinRMPassword}}","COMPUTE_NAME={{user `computename`}}"],
    "inline": [
    "winrm set winrm/config/service/auth '@{Basic=\"true\"}'"
    ]
    },
    {
    "type": "shell-local",
    "environment_vars": ["WINRMPASS={{.WinRMPassword}}","COMPUTE_NAME={{user `computename`}}"],
    "command": "echo \" - name != '$COMPUTE_NAME'\">>dynamic_azure_rm.yml"
    },
    {
    "type" : "shell-local",
    "environment_vars": ["WINRMPASS={{.WinRMPassword}}","COMPUTE_NAME={{user `computename`}}"],
    "command": " ansible-playbook -vvv -i \"dynamic_azure_rm.yml\" -u packer -e ansible_password=\"$WINRMPASS\" -e@../variables/vars.yml ../playbooks/provisionedbox.yml"
    },
    {
    "type" : "powershell",
    "environment_vars": ["WINRMPASS={{.WinRMPassword}}","COMPUTE_NAME={{user `computename`}}"],
    "inline": [
    "& $env:SystemRoot\\System32\\Sysprep\\Sysprep.exe /oobe /generalize /quiet /quit",
    "while($true) { $imageState = Get-ItemProperty HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Setup\\State | Select ImageState; if($imageState.ImageState -ne 'IMAGE_STATE_GENERALIZE_RESEAL_TO_OOBE') { Write-Output $imageState.ImageState; Start-Sleep -s 10 } else { break } }"
    ]
    }
    ]
    }