[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-hashicorp-windows-builder":3,"mdc-wecstn-key":37,"related-repo-hashicorp-windows-builder":1253,"related-org-hashicorp-windows-builder":1347},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":25,"repoUrl":26,"updatedAt":27,"license":28,"forks":29,"topics":30,"repo":32,"sourceUrl":35,"mdContent":36},"windows-builder","build Windows machine images with Packer","Build Windows images with Packer using WinRM communicator and PowerShell provisioners. Use when creating Windows AMIs, Azure images, or VMware templates.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"hashicorp","HashiCorp","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fhashicorp.png",[12,16,19,22],{"name":13,"slug":14,"type":15},"Windows","windows","tag",{"name":17,"slug":18,"type":15},"PowerShell","powershell",{"name":20,"slug":21,"type":15},"Deployment","deployment",{"name":23,"slug":24,"type":15},"Packer","packer",728,"https:\u002F\u002Fgithub.com\u002Fhashicorp\u002Fagent-skills","2026-04-06T18:25:05.296821",null,104,[31],"doormat-managed",{"repoUrl":26,"stars":25,"forks":29,"topics":33,"description":34},[31],"A collection of Agent skills and Claude Code plugins for HashiCorp products.","https:\u002F\u002Fgithub.com\u002Fhashicorp\u002Fagent-skills\u002Ftree\u002FHEAD\u002Fpacker\u002Fbuilders\u002Fskills\u002Fwindows-builder","---\nname: windows-builder\ndescription: Build Windows images with Packer using WinRM communicator and PowerShell provisioners. Use when creating Windows AMIs, Azure images, or VMware templates.\n---\n\n# Windows Builder\n\nPlatform-agnostic patterns for building Windows images with Packer.\n\n**Reference:** [Windows Builders](https:\u002F\u002Fdeveloper.hashicorp.com\u002Fpacker\u002Fguides\u002Fwindows)\n\n> **Note:** Windows builds incur significant costs and time. Expect 45-120 minutes per build due to Windows Updates. Failed builds may leave resources running - always verify cleanup.\n\n## WinRM Communicator Setup\n\nWindows requires WinRM for Packer communication.\n\n### AWS Example\n\n```hcl\nsource \"amazon-ebs\" \"windows\" {\n  region        = \"us-west-2\"\n  instance_type = \"t3.medium\"\n\n  source_ami_filter {\n    filters = {\n      name = \"Windows_Server-2022-English-Full-Base-*\"\n    }\n    most_recent = true\n    owners      = [\"amazon\"]\n  }\n\n  ami_name = \"windows-server-2022-${local.timestamp}\"\n\n  communicator   = \"winrm\"\n  winrm_username = \"Administrator\"\n  winrm_use_ssl  = true\n  winrm_insecure = true\n  winrm_timeout  = \"15m\"\n\n  user_data_file = \"scripts\u002Fsetup-winrm.ps1\"\n}\n```\n\n### WinRM Setup Script (scripts\u002Fsetup-winrm.ps1)\n\n```powershell\n\u003Cpowershell>\n# Configure WinRM\nwinrm quickconfig -q\nwinrm set winrm\u002Fconfig '@{MaxTimeoutms=\"1800000\"}'\nwinrm set winrm\u002Fconfig\u002Fservice '@{AllowUnencrypted=\"true\"}'\nwinrm set winrm\u002Fconfig\u002Fservice\u002Fauth '@{Basic=\"true\"}'\n\n# Configure firewall\nnetsh advfirewall firewall add rule name=\"WinRM 5985\" protocol=TCP dir=in localport=5985 action=allow\nnetsh advfirewall firewall add rule name=\"WinRM 5986\" protocol=TCP dir=in localport=5986 action=allow\n\n# Restart WinRM\nnet stop winrm\nnet start winrm\n\u003C\u002Fpowershell>\n```\n\n### Azure Example\n\n```hcl\nsource \"azure-arm\" \"windows\" {\n  client_id       = var.client_id\n  client_secret   = var.client_secret\n  subscription_id = var.subscription_id\n  tenant_id       = var.tenant_id\n\n  managed_image_resource_group_name = \"images-rg\"\n  managed_image_name                = \"windows-${local.timestamp}\"\n\n  os_type         = \"Windows\"\n  image_publisher = \"MicrosoftWindowsServer\"\n  image_offer     = \"WindowsServer\"\n  image_sku       = \"2022-datacenter-g2\"\n\n  location = \"East US\"\n  vm_size  = \"Standard_D2s_v3\"\n\n  # Azure auto-configures WinRM\n  communicator   = \"winrm\"\n  winrm_use_ssl  = true\n  winrm_insecure = true\n  winrm_timeout  = \"15m\"\n  winrm_username = \"packer\"\n}\n```\n\n## PowerShell Provisioners\n\n### Install Software\n\n```hcl\nbuild {\n  sources = [\"source.amazon-ebs.windows\"]\n\n  # Install Chocolatey\n  provisioner \"powershell\" {\n    inline = [\n      \"Set-ExecutionPolicy Bypass -Scope Process -Force\",\n      \"iex ((New-Object System.Net.WebClient).DownloadString('https:\u002F\u002Fcommunity.chocolatey.org\u002Finstall.ps1'))\"\n    ]\n  }\n\n  # Install applications\n  provisioner \"powershell\" {\n    inline = [\n      \"choco install -y googlechrome\",\n      \"choco install -y 7zip\",\n    ]\n  }\n\n  # Install IIS\n  provisioner \"powershell\" {\n    inline = [\n      \"Install-WindowsFeature -Name Web-Server -IncludeManagementTools\"\n    ]\n  }\n}\n```\n\n### Windows Updates\n\n```hcl\nprovisioner \"powershell\" {\n  inline = [\n    \"Install-PackageProvider -Name NuGet -Force\",\n    \"Install-Module -Name PSWindowsUpdate -Force\",\n    \"Import-Module PSWindowsUpdate\",\n    \"Get-WindowsUpdate -Install -AcceptAll -AutoReboot\",\n  ]\n  timeout = \"2h\"\n}\n\n# Wait for reboots\nprovisioner \"windows-restart\" {\n  restart_timeout = \"30m\"\n}\n```\n\n## Cleanup\n\n```hcl\nprovisioner \"powershell\" {\n  inline = [\n    \"# Clear temp files\",\n    \"Remove-Item -Path 'C:\\\\Windows\\\\Temp\\\\*' -Recurse -Force -ErrorAction SilentlyContinue\",\n    \"# Clear Windows Update cache\",\n    \"Stop-Service -Name wuauserv -Force\",\n    \"Remove-Item -Path 'C:\\\\Windows\\\\SoftwareDistribution\\\\*' -Recurse -Force -ErrorAction SilentlyContinue\",\n    \"Start-Service -Name wuauserv\",\n  ]\n}\n```\n\n## Common Issues\n\n**WinRM Timeout**\n- Increase `winrm_timeout` to 15m or more\n- Verify security group allows ports 5985\u002F5986\n- Check user data script completed successfully\n\n**PowerShell Execution Policy**\n```hcl\nprovisioner \"powershell\" {\n  inline = [\n    \"Set-ExecutionPolicy Bypass -Scope Process -Force\",\n    \"# Your commands here\",\n  ]\n}\n```\n\n**Long Build Times**\n- Windows Updates can take 1-2 hours\n- Use pre-patched base images when available\n- Set provisioner `timeout = \"2h\"`\n\n## References\n\n- [Packer Windows Builders](https:\u002F\u002Fdeveloper.hashicorp.com\u002Fpacker\u002Fguides\u002Fwindows)\n- [WinRM Communicator](https:\u002F\u002Fdeveloper.hashicorp.com\u002Fpacker\u002Fdocs\u002Fcommunicators\u002Fwinrm)\n- [PowerShell Provisioner](https:\u002F\u002Fdeveloper.hashicorp.com\u002Fpacker\u002Fdocs\u002Fprovisioners\u002Fpowershell)\n",{"data":38,"body":39},{"name":4,"description":6},{"type":40,"children":41},"root",[42,50,56,76,90,97,102,109,319,325,451,457,649,655,661,865,871,987,993,1076,1082,1090,1118,1126,1177,1185,1209,1215,1247],{"type":43,"tag":44,"props":45,"children":46},"element","h1",{"id":4},[47],{"type":48,"value":49},"text","Windows Builder",{"type":43,"tag":51,"props":52,"children":53},"p",{},[54],{"type":48,"value":55},"Platform-agnostic patterns for building Windows images with Packer.",{"type":43,"tag":51,"props":57,"children":58},{},[59,65,67],{"type":43,"tag":60,"props":61,"children":62},"strong",{},[63],{"type":48,"value":64},"Reference:",{"type":48,"value":66}," ",{"type":43,"tag":68,"props":69,"children":73},"a",{"href":70,"rel":71},"https:\u002F\u002Fdeveloper.hashicorp.com\u002Fpacker\u002Fguides\u002Fwindows",[72],"nofollow",[74],{"type":48,"value":75},"Windows Builders",{"type":43,"tag":77,"props":78,"children":79},"blockquote",{},[80],{"type":43,"tag":51,"props":81,"children":82},{},[83,88],{"type":43,"tag":60,"props":84,"children":85},{},[86],{"type":48,"value":87},"Note:",{"type":48,"value":89}," Windows builds incur significant costs and time. Expect 45-120 minutes per build due to Windows Updates. Failed builds may leave resources running - always verify cleanup.",{"type":43,"tag":91,"props":92,"children":94},"h2",{"id":93},"winrm-communicator-setup",[95],{"type":48,"value":96},"WinRM Communicator Setup",{"type":43,"tag":51,"props":98,"children":99},{},[100],{"type":48,"value":101},"Windows requires WinRM for Packer communication.",{"type":43,"tag":103,"props":104,"children":106},"h3",{"id":105},"aws-example",[107],{"type":48,"value":108},"AWS Example",{"type":43,"tag":110,"props":111,"children":116},"pre",{"className":112,"code":113,"language":114,"meta":115,"style":115},"language-hcl shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","source \"amazon-ebs\" \"windows\" {\n  region        = \"us-west-2\"\n  instance_type = \"t3.medium\"\n\n  source_ami_filter {\n    filters = {\n      name = \"Windows_Server-2022-English-Full-Base-*\"\n    }\n    most_recent = true\n    owners      = [\"amazon\"]\n  }\n\n  ami_name = \"windows-server-2022-${local.timestamp}\"\n\n  communicator   = \"winrm\"\n  winrm_username = \"Administrator\"\n  winrm_use_ssl  = true\n  winrm_insecure = true\n  winrm_timeout  = \"15m\"\n\n  user_data_file = \"scripts\u002Fsetup-winrm.ps1\"\n}\n","hcl","",[117],{"type":43,"tag":118,"props":119,"children":120},"code",{"__ignoreMap":115},[121,132,141,150,160,169,178,187,196,205,214,223,231,240,248,257,266,275,284,293,301,310],{"type":43,"tag":122,"props":123,"children":126},"span",{"class":124,"line":125},"line",1,[127],{"type":43,"tag":122,"props":128,"children":129},{},[130],{"type":48,"value":131},"source \"amazon-ebs\" \"windows\" {\n",{"type":43,"tag":122,"props":133,"children":135},{"class":124,"line":134},2,[136],{"type":43,"tag":122,"props":137,"children":138},{},[139],{"type":48,"value":140},"  region        = \"us-west-2\"\n",{"type":43,"tag":122,"props":142,"children":144},{"class":124,"line":143},3,[145],{"type":43,"tag":122,"props":146,"children":147},{},[148],{"type":48,"value":149},"  instance_type = \"t3.medium\"\n",{"type":43,"tag":122,"props":151,"children":153},{"class":124,"line":152},4,[154],{"type":43,"tag":122,"props":155,"children":157},{"emptyLinePlaceholder":156},true,[158],{"type":48,"value":159},"\n",{"type":43,"tag":122,"props":161,"children":163},{"class":124,"line":162},5,[164],{"type":43,"tag":122,"props":165,"children":166},{},[167],{"type":48,"value":168},"  source_ami_filter {\n",{"type":43,"tag":122,"props":170,"children":172},{"class":124,"line":171},6,[173],{"type":43,"tag":122,"props":174,"children":175},{},[176],{"type":48,"value":177},"    filters = {\n",{"type":43,"tag":122,"props":179,"children":181},{"class":124,"line":180},7,[182],{"type":43,"tag":122,"props":183,"children":184},{},[185],{"type":48,"value":186},"      name = \"Windows_Server-2022-English-Full-Base-*\"\n",{"type":43,"tag":122,"props":188,"children":190},{"class":124,"line":189},8,[191],{"type":43,"tag":122,"props":192,"children":193},{},[194],{"type":48,"value":195},"    }\n",{"type":43,"tag":122,"props":197,"children":199},{"class":124,"line":198},9,[200],{"type":43,"tag":122,"props":201,"children":202},{},[203],{"type":48,"value":204},"    most_recent = true\n",{"type":43,"tag":122,"props":206,"children":208},{"class":124,"line":207},10,[209],{"type":43,"tag":122,"props":210,"children":211},{},[212],{"type":48,"value":213},"    owners      = [\"amazon\"]\n",{"type":43,"tag":122,"props":215,"children":217},{"class":124,"line":216},11,[218],{"type":43,"tag":122,"props":219,"children":220},{},[221],{"type":48,"value":222},"  }\n",{"type":43,"tag":122,"props":224,"children":226},{"class":124,"line":225},12,[227],{"type":43,"tag":122,"props":228,"children":229},{"emptyLinePlaceholder":156},[230],{"type":48,"value":159},{"type":43,"tag":122,"props":232,"children":234},{"class":124,"line":233},13,[235],{"type":43,"tag":122,"props":236,"children":237},{},[238],{"type":48,"value":239},"  ami_name = \"windows-server-2022-${local.timestamp}\"\n",{"type":43,"tag":122,"props":241,"children":243},{"class":124,"line":242},14,[244],{"type":43,"tag":122,"props":245,"children":246},{"emptyLinePlaceholder":156},[247],{"type":48,"value":159},{"type":43,"tag":122,"props":249,"children":251},{"class":124,"line":250},15,[252],{"type":43,"tag":122,"props":253,"children":254},{},[255],{"type":48,"value":256},"  communicator   = \"winrm\"\n",{"type":43,"tag":122,"props":258,"children":260},{"class":124,"line":259},16,[261],{"type":43,"tag":122,"props":262,"children":263},{},[264],{"type":48,"value":265},"  winrm_username = \"Administrator\"\n",{"type":43,"tag":122,"props":267,"children":269},{"class":124,"line":268},17,[270],{"type":43,"tag":122,"props":271,"children":272},{},[273],{"type":48,"value":274},"  winrm_use_ssl  = true\n",{"type":43,"tag":122,"props":276,"children":278},{"class":124,"line":277},18,[279],{"type":43,"tag":122,"props":280,"children":281},{},[282],{"type":48,"value":283},"  winrm_insecure = true\n",{"type":43,"tag":122,"props":285,"children":287},{"class":124,"line":286},19,[288],{"type":43,"tag":122,"props":289,"children":290},{},[291],{"type":48,"value":292},"  winrm_timeout  = \"15m\"\n",{"type":43,"tag":122,"props":294,"children":296},{"class":124,"line":295},20,[297],{"type":43,"tag":122,"props":298,"children":299},{"emptyLinePlaceholder":156},[300],{"type":48,"value":159},{"type":43,"tag":122,"props":302,"children":304},{"class":124,"line":303},21,[305],{"type":43,"tag":122,"props":306,"children":307},{},[308],{"type":48,"value":309},"  user_data_file = \"scripts\u002Fsetup-winrm.ps1\"\n",{"type":43,"tag":122,"props":311,"children":313},{"class":124,"line":312},22,[314],{"type":43,"tag":122,"props":315,"children":316},{},[317],{"type":48,"value":318},"}\n",{"type":43,"tag":103,"props":320,"children":322},{"id":321},"winrm-setup-script-scriptssetup-winrmps1",[323],{"type":48,"value":324},"WinRM Setup Script (scripts\u002Fsetup-winrm.ps1)",{"type":43,"tag":110,"props":326,"children":329},{"className":327,"code":328,"language":18,"meta":115,"style":115},"language-powershell shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cpowershell>\n# Configure WinRM\nwinrm quickconfig -q\nwinrm set winrm\u002Fconfig '@{MaxTimeoutms=\"1800000\"}'\nwinrm set winrm\u002Fconfig\u002Fservice '@{AllowUnencrypted=\"true\"}'\nwinrm set winrm\u002Fconfig\u002Fservice\u002Fauth '@{Basic=\"true\"}'\n\n# Configure firewall\nnetsh advfirewall firewall add rule name=\"WinRM 5985\" protocol=TCP dir=in localport=5985 action=allow\nnetsh advfirewall firewall add rule name=\"WinRM 5986\" protocol=TCP dir=in localport=5986 action=allow\n\n# Restart WinRM\nnet stop winrm\nnet start winrm\n\u003C\u002Fpowershell>\n",[330],{"type":43,"tag":118,"props":331,"children":332},{"__ignoreMap":115},[333,341,349,357,365,373,381,388,396,404,412,419,427,435,443],{"type":43,"tag":122,"props":334,"children":335},{"class":124,"line":125},[336],{"type":43,"tag":122,"props":337,"children":338},{},[339],{"type":48,"value":340},"\u003Cpowershell>\n",{"type":43,"tag":122,"props":342,"children":343},{"class":124,"line":134},[344],{"type":43,"tag":122,"props":345,"children":346},{},[347],{"type":48,"value":348},"# Configure WinRM\n",{"type":43,"tag":122,"props":350,"children":351},{"class":124,"line":143},[352],{"type":43,"tag":122,"props":353,"children":354},{},[355],{"type":48,"value":356},"winrm quickconfig -q\n",{"type":43,"tag":122,"props":358,"children":359},{"class":124,"line":152},[360],{"type":43,"tag":122,"props":361,"children":362},{},[363],{"type":48,"value":364},"winrm set winrm\u002Fconfig '@{MaxTimeoutms=\"1800000\"}'\n",{"type":43,"tag":122,"props":366,"children":367},{"class":124,"line":162},[368],{"type":43,"tag":122,"props":369,"children":370},{},[371],{"type":48,"value":372},"winrm set winrm\u002Fconfig\u002Fservice '@{AllowUnencrypted=\"true\"}'\n",{"type":43,"tag":122,"props":374,"children":375},{"class":124,"line":171},[376],{"type":43,"tag":122,"props":377,"children":378},{},[379],{"type":48,"value":380},"winrm set winrm\u002Fconfig\u002Fservice\u002Fauth '@{Basic=\"true\"}'\n",{"type":43,"tag":122,"props":382,"children":383},{"class":124,"line":180},[384],{"type":43,"tag":122,"props":385,"children":386},{"emptyLinePlaceholder":156},[387],{"type":48,"value":159},{"type":43,"tag":122,"props":389,"children":390},{"class":124,"line":189},[391],{"type":43,"tag":122,"props":392,"children":393},{},[394],{"type":48,"value":395},"# Configure firewall\n",{"type":43,"tag":122,"props":397,"children":398},{"class":124,"line":198},[399],{"type":43,"tag":122,"props":400,"children":401},{},[402],{"type":48,"value":403},"netsh advfirewall firewall add rule name=\"WinRM 5985\" protocol=TCP dir=in localport=5985 action=allow\n",{"type":43,"tag":122,"props":405,"children":406},{"class":124,"line":207},[407],{"type":43,"tag":122,"props":408,"children":409},{},[410],{"type":48,"value":411},"netsh advfirewall firewall add rule name=\"WinRM 5986\" protocol=TCP dir=in localport=5986 action=allow\n",{"type":43,"tag":122,"props":413,"children":414},{"class":124,"line":216},[415],{"type":43,"tag":122,"props":416,"children":417},{"emptyLinePlaceholder":156},[418],{"type":48,"value":159},{"type":43,"tag":122,"props":420,"children":421},{"class":124,"line":225},[422],{"type":43,"tag":122,"props":423,"children":424},{},[425],{"type":48,"value":426},"# Restart WinRM\n",{"type":43,"tag":122,"props":428,"children":429},{"class":124,"line":233},[430],{"type":43,"tag":122,"props":431,"children":432},{},[433],{"type":48,"value":434},"net stop winrm\n",{"type":43,"tag":122,"props":436,"children":437},{"class":124,"line":242},[438],{"type":43,"tag":122,"props":439,"children":440},{},[441],{"type":48,"value":442},"net start winrm\n",{"type":43,"tag":122,"props":444,"children":445},{"class":124,"line":250},[446],{"type":43,"tag":122,"props":447,"children":448},{},[449],{"type":48,"value":450},"\u003C\u002Fpowershell>\n",{"type":43,"tag":103,"props":452,"children":454},{"id":453},"azure-example",[455],{"type":48,"value":456},"Azure Example",{"type":43,"tag":110,"props":458,"children":460},{"className":112,"code":459,"language":114,"meta":115,"style":115},"source \"azure-arm\" \"windows\" {\n  client_id       = var.client_id\n  client_secret   = var.client_secret\n  subscription_id = var.subscription_id\n  tenant_id       = var.tenant_id\n\n  managed_image_resource_group_name = \"images-rg\"\n  managed_image_name                = \"windows-${local.timestamp}\"\n\n  os_type         = \"Windows\"\n  image_publisher = \"MicrosoftWindowsServer\"\n  image_offer     = \"WindowsServer\"\n  image_sku       = \"2022-datacenter-g2\"\n\n  location = \"East US\"\n  vm_size  = \"Standard_D2s_v3\"\n\n  # Azure auto-configures WinRM\n  communicator   = \"winrm\"\n  winrm_use_ssl  = true\n  winrm_insecure = true\n  winrm_timeout  = \"15m\"\n  winrm_username = \"packer\"\n}\n",[461],{"type":43,"tag":118,"props":462,"children":463},{"__ignoreMap":115},[464,472,480,488,496,504,511,519,527,534,542,550,558,566,573,581,589,596,604,611,618,625,632,641],{"type":43,"tag":122,"props":465,"children":466},{"class":124,"line":125},[467],{"type":43,"tag":122,"props":468,"children":469},{},[470],{"type":48,"value":471},"source \"azure-arm\" \"windows\" {\n",{"type":43,"tag":122,"props":473,"children":474},{"class":124,"line":134},[475],{"type":43,"tag":122,"props":476,"children":477},{},[478],{"type":48,"value":479},"  client_id       = var.client_id\n",{"type":43,"tag":122,"props":481,"children":482},{"class":124,"line":143},[483],{"type":43,"tag":122,"props":484,"children":485},{},[486],{"type":48,"value":487},"  client_secret   = var.client_secret\n",{"type":43,"tag":122,"props":489,"children":490},{"class":124,"line":152},[491],{"type":43,"tag":122,"props":492,"children":493},{},[494],{"type":48,"value":495},"  subscription_id = var.subscription_id\n",{"type":43,"tag":122,"props":497,"children":498},{"class":124,"line":162},[499],{"type":43,"tag":122,"props":500,"children":501},{},[502],{"type":48,"value":503},"  tenant_id       = var.tenant_id\n",{"type":43,"tag":122,"props":505,"children":506},{"class":124,"line":171},[507],{"type":43,"tag":122,"props":508,"children":509},{"emptyLinePlaceholder":156},[510],{"type":48,"value":159},{"type":43,"tag":122,"props":512,"children":513},{"class":124,"line":180},[514],{"type":43,"tag":122,"props":515,"children":516},{},[517],{"type":48,"value":518},"  managed_image_resource_group_name = \"images-rg\"\n",{"type":43,"tag":122,"props":520,"children":521},{"class":124,"line":189},[522],{"type":43,"tag":122,"props":523,"children":524},{},[525],{"type":48,"value":526},"  managed_image_name                = \"windows-${local.timestamp}\"\n",{"type":43,"tag":122,"props":528,"children":529},{"class":124,"line":198},[530],{"type":43,"tag":122,"props":531,"children":532},{"emptyLinePlaceholder":156},[533],{"type":48,"value":159},{"type":43,"tag":122,"props":535,"children":536},{"class":124,"line":207},[537],{"type":43,"tag":122,"props":538,"children":539},{},[540],{"type":48,"value":541},"  os_type         = \"Windows\"\n",{"type":43,"tag":122,"props":543,"children":544},{"class":124,"line":216},[545],{"type":43,"tag":122,"props":546,"children":547},{},[548],{"type":48,"value":549},"  image_publisher = \"MicrosoftWindowsServer\"\n",{"type":43,"tag":122,"props":551,"children":552},{"class":124,"line":225},[553],{"type":43,"tag":122,"props":554,"children":555},{},[556],{"type":48,"value":557},"  image_offer     = \"WindowsServer\"\n",{"type":43,"tag":122,"props":559,"children":560},{"class":124,"line":233},[561],{"type":43,"tag":122,"props":562,"children":563},{},[564],{"type":48,"value":565},"  image_sku       = \"2022-datacenter-g2\"\n",{"type":43,"tag":122,"props":567,"children":568},{"class":124,"line":242},[569],{"type":43,"tag":122,"props":570,"children":571},{"emptyLinePlaceholder":156},[572],{"type":48,"value":159},{"type":43,"tag":122,"props":574,"children":575},{"class":124,"line":250},[576],{"type":43,"tag":122,"props":577,"children":578},{},[579],{"type":48,"value":580},"  location = \"East US\"\n",{"type":43,"tag":122,"props":582,"children":583},{"class":124,"line":259},[584],{"type":43,"tag":122,"props":585,"children":586},{},[587],{"type":48,"value":588},"  vm_size  = \"Standard_D2s_v3\"\n",{"type":43,"tag":122,"props":590,"children":591},{"class":124,"line":268},[592],{"type":43,"tag":122,"props":593,"children":594},{"emptyLinePlaceholder":156},[595],{"type":48,"value":159},{"type":43,"tag":122,"props":597,"children":598},{"class":124,"line":277},[599],{"type":43,"tag":122,"props":600,"children":601},{},[602],{"type":48,"value":603},"  # Azure auto-configures WinRM\n",{"type":43,"tag":122,"props":605,"children":606},{"class":124,"line":286},[607],{"type":43,"tag":122,"props":608,"children":609},{},[610],{"type":48,"value":256},{"type":43,"tag":122,"props":612,"children":613},{"class":124,"line":295},[614],{"type":43,"tag":122,"props":615,"children":616},{},[617],{"type":48,"value":274},{"type":43,"tag":122,"props":619,"children":620},{"class":124,"line":303},[621],{"type":43,"tag":122,"props":622,"children":623},{},[624],{"type":48,"value":283},{"type":43,"tag":122,"props":626,"children":627},{"class":124,"line":312},[628],{"type":43,"tag":122,"props":629,"children":630},{},[631],{"type":48,"value":292},{"type":43,"tag":122,"props":633,"children":635},{"class":124,"line":634},23,[636],{"type":43,"tag":122,"props":637,"children":638},{},[639],{"type":48,"value":640},"  winrm_username = \"packer\"\n",{"type":43,"tag":122,"props":642,"children":644},{"class":124,"line":643},24,[645],{"type":43,"tag":122,"props":646,"children":647},{},[648],{"type":48,"value":318},{"type":43,"tag":91,"props":650,"children":652},{"id":651},"powershell-provisioners",[653],{"type":48,"value":654},"PowerShell Provisioners",{"type":43,"tag":103,"props":656,"children":658},{"id":657},"install-software",[659],{"type":48,"value":660},"Install Software",{"type":43,"tag":110,"props":662,"children":664},{"className":112,"code":663,"language":114,"meta":115,"style":115},"build {\n  sources = [\"source.amazon-ebs.windows\"]\n\n  # Install Chocolatey\n  provisioner \"powershell\" {\n    inline = [\n      \"Set-ExecutionPolicy Bypass -Scope Process -Force\",\n      \"iex ((New-Object System.Net.WebClient).DownloadString('https:\u002F\u002Fcommunity.chocolatey.org\u002Finstall.ps1'))\"\n    ]\n  }\n\n  # Install applications\n  provisioner \"powershell\" {\n    inline = [\n      \"choco install -y googlechrome\",\n      \"choco install -y 7zip\",\n    ]\n  }\n\n  # Install IIS\n  provisioner \"powershell\" {\n    inline = [\n      \"Install-WindowsFeature -Name Web-Server -IncludeManagementTools\"\n    ]\n  }\n}\n",[665],{"type":43,"tag":118,"props":666,"children":667},{"__ignoreMap":115},[668,676,684,691,699,707,715,723,731,739,746,753,761,768,775,783,791,798,805,812,820,827,834,842,849,857],{"type":43,"tag":122,"props":669,"children":670},{"class":124,"line":125},[671],{"type":43,"tag":122,"props":672,"children":673},{},[674],{"type":48,"value":675},"build {\n",{"type":43,"tag":122,"props":677,"children":678},{"class":124,"line":134},[679],{"type":43,"tag":122,"props":680,"children":681},{},[682],{"type":48,"value":683},"  sources = [\"source.amazon-ebs.windows\"]\n",{"type":43,"tag":122,"props":685,"children":686},{"class":124,"line":143},[687],{"type":43,"tag":122,"props":688,"children":689},{"emptyLinePlaceholder":156},[690],{"type":48,"value":159},{"type":43,"tag":122,"props":692,"children":693},{"class":124,"line":152},[694],{"type":43,"tag":122,"props":695,"children":696},{},[697],{"type":48,"value":698},"  # Install Chocolatey\n",{"type":43,"tag":122,"props":700,"children":701},{"class":124,"line":162},[702],{"type":43,"tag":122,"props":703,"children":704},{},[705],{"type":48,"value":706},"  provisioner \"powershell\" {\n",{"type":43,"tag":122,"props":708,"children":709},{"class":124,"line":171},[710],{"type":43,"tag":122,"props":711,"children":712},{},[713],{"type":48,"value":714},"    inline = [\n",{"type":43,"tag":122,"props":716,"children":717},{"class":124,"line":180},[718],{"type":43,"tag":122,"props":719,"children":720},{},[721],{"type":48,"value":722},"      \"Set-ExecutionPolicy Bypass -Scope Process -Force\",\n",{"type":43,"tag":122,"props":724,"children":725},{"class":124,"line":189},[726],{"type":43,"tag":122,"props":727,"children":728},{},[729],{"type":48,"value":730},"      \"iex ((New-Object System.Net.WebClient).DownloadString('https:\u002F\u002Fcommunity.chocolatey.org\u002Finstall.ps1'))\"\n",{"type":43,"tag":122,"props":732,"children":733},{"class":124,"line":198},[734],{"type":43,"tag":122,"props":735,"children":736},{},[737],{"type":48,"value":738},"    ]\n",{"type":43,"tag":122,"props":740,"children":741},{"class":124,"line":207},[742],{"type":43,"tag":122,"props":743,"children":744},{},[745],{"type":48,"value":222},{"type":43,"tag":122,"props":747,"children":748},{"class":124,"line":216},[749],{"type":43,"tag":122,"props":750,"children":751},{"emptyLinePlaceholder":156},[752],{"type":48,"value":159},{"type":43,"tag":122,"props":754,"children":755},{"class":124,"line":225},[756],{"type":43,"tag":122,"props":757,"children":758},{},[759],{"type":48,"value":760},"  # Install applications\n",{"type":43,"tag":122,"props":762,"children":763},{"class":124,"line":233},[764],{"type":43,"tag":122,"props":765,"children":766},{},[767],{"type":48,"value":706},{"type":43,"tag":122,"props":769,"children":770},{"class":124,"line":242},[771],{"type":43,"tag":122,"props":772,"children":773},{},[774],{"type":48,"value":714},{"type":43,"tag":122,"props":776,"children":777},{"class":124,"line":250},[778],{"type":43,"tag":122,"props":779,"children":780},{},[781],{"type":48,"value":782},"      \"choco install -y googlechrome\",\n",{"type":43,"tag":122,"props":784,"children":785},{"class":124,"line":259},[786],{"type":43,"tag":122,"props":787,"children":788},{},[789],{"type":48,"value":790},"      \"choco install -y 7zip\",\n",{"type":43,"tag":122,"props":792,"children":793},{"class":124,"line":268},[794],{"type":43,"tag":122,"props":795,"children":796},{},[797],{"type":48,"value":738},{"type":43,"tag":122,"props":799,"children":800},{"class":124,"line":277},[801],{"type":43,"tag":122,"props":802,"children":803},{},[804],{"type":48,"value":222},{"type":43,"tag":122,"props":806,"children":807},{"class":124,"line":286},[808],{"type":43,"tag":122,"props":809,"children":810},{"emptyLinePlaceholder":156},[811],{"type":48,"value":159},{"type":43,"tag":122,"props":813,"children":814},{"class":124,"line":295},[815],{"type":43,"tag":122,"props":816,"children":817},{},[818],{"type":48,"value":819},"  # Install IIS\n",{"type":43,"tag":122,"props":821,"children":822},{"class":124,"line":303},[823],{"type":43,"tag":122,"props":824,"children":825},{},[826],{"type":48,"value":706},{"type":43,"tag":122,"props":828,"children":829},{"class":124,"line":312},[830],{"type":43,"tag":122,"props":831,"children":832},{},[833],{"type":48,"value":714},{"type":43,"tag":122,"props":835,"children":836},{"class":124,"line":634},[837],{"type":43,"tag":122,"props":838,"children":839},{},[840],{"type":48,"value":841},"      \"Install-WindowsFeature -Name Web-Server -IncludeManagementTools\"\n",{"type":43,"tag":122,"props":843,"children":844},{"class":124,"line":643},[845],{"type":43,"tag":122,"props":846,"children":847},{},[848],{"type":48,"value":738},{"type":43,"tag":122,"props":850,"children":852},{"class":124,"line":851},25,[853],{"type":43,"tag":122,"props":854,"children":855},{},[856],{"type":48,"value":222},{"type":43,"tag":122,"props":858,"children":860},{"class":124,"line":859},26,[861],{"type":43,"tag":122,"props":862,"children":863},{},[864],{"type":48,"value":318},{"type":43,"tag":103,"props":866,"children":868},{"id":867},"windows-updates",[869],{"type":48,"value":870},"Windows Updates",{"type":43,"tag":110,"props":872,"children":874},{"className":112,"code":873,"language":114,"meta":115,"style":115},"provisioner \"powershell\" {\n  inline = [\n    \"Install-PackageProvider -Name NuGet -Force\",\n    \"Install-Module -Name PSWindowsUpdate -Force\",\n    \"Import-Module PSWindowsUpdate\",\n    \"Get-WindowsUpdate -Install -AcceptAll -AutoReboot\",\n  ]\n  timeout = \"2h\"\n}\n\n# Wait for reboots\nprovisioner \"windows-restart\" {\n  restart_timeout = \"30m\"\n}\n",[875],{"type":43,"tag":118,"props":876,"children":877},{"__ignoreMap":115},[878,886,894,902,910,918,926,934,942,949,956,964,972,980],{"type":43,"tag":122,"props":879,"children":880},{"class":124,"line":125},[881],{"type":43,"tag":122,"props":882,"children":883},{},[884],{"type":48,"value":885},"provisioner \"powershell\" {\n",{"type":43,"tag":122,"props":887,"children":888},{"class":124,"line":134},[889],{"type":43,"tag":122,"props":890,"children":891},{},[892],{"type":48,"value":893},"  inline = [\n",{"type":43,"tag":122,"props":895,"children":896},{"class":124,"line":143},[897],{"type":43,"tag":122,"props":898,"children":899},{},[900],{"type":48,"value":901},"    \"Install-PackageProvider -Name NuGet -Force\",\n",{"type":43,"tag":122,"props":903,"children":904},{"class":124,"line":152},[905],{"type":43,"tag":122,"props":906,"children":907},{},[908],{"type":48,"value":909},"    \"Install-Module -Name PSWindowsUpdate -Force\",\n",{"type":43,"tag":122,"props":911,"children":912},{"class":124,"line":162},[913],{"type":43,"tag":122,"props":914,"children":915},{},[916],{"type":48,"value":917},"    \"Import-Module PSWindowsUpdate\",\n",{"type":43,"tag":122,"props":919,"children":920},{"class":124,"line":171},[921],{"type":43,"tag":122,"props":922,"children":923},{},[924],{"type":48,"value":925},"    \"Get-WindowsUpdate -Install -AcceptAll -AutoReboot\",\n",{"type":43,"tag":122,"props":927,"children":928},{"class":124,"line":180},[929],{"type":43,"tag":122,"props":930,"children":931},{},[932],{"type":48,"value":933},"  ]\n",{"type":43,"tag":122,"props":935,"children":936},{"class":124,"line":189},[937],{"type":43,"tag":122,"props":938,"children":939},{},[940],{"type":48,"value":941},"  timeout = \"2h\"\n",{"type":43,"tag":122,"props":943,"children":944},{"class":124,"line":198},[945],{"type":43,"tag":122,"props":946,"children":947},{},[948],{"type":48,"value":318},{"type":43,"tag":122,"props":950,"children":951},{"class":124,"line":207},[952],{"type":43,"tag":122,"props":953,"children":954},{"emptyLinePlaceholder":156},[955],{"type":48,"value":159},{"type":43,"tag":122,"props":957,"children":958},{"class":124,"line":216},[959],{"type":43,"tag":122,"props":960,"children":961},{},[962],{"type":48,"value":963},"# Wait for reboots\n",{"type":43,"tag":122,"props":965,"children":966},{"class":124,"line":225},[967],{"type":43,"tag":122,"props":968,"children":969},{},[970],{"type":48,"value":971},"provisioner \"windows-restart\" {\n",{"type":43,"tag":122,"props":973,"children":974},{"class":124,"line":233},[975],{"type":43,"tag":122,"props":976,"children":977},{},[978],{"type":48,"value":979},"  restart_timeout = \"30m\"\n",{"type":43,"tag":122,"props":981,"children":982},{"class":124,"line":242},[983],{"type":43,"tag":122,"props":984,"children":985},{},[986],{"type":48,"value":318},{"type":43,"tag":91,"props":988,"children":990},{"id":989},"cleanup",[991],{"type":48,"value":992},"Cleanup",{"type":43,"tag":110,"props":994,"children":996},{"className":112,"code":995,"language":114,"meta":115,"style":115},"provisioner \"powershell\" {\n  inline = [\n    \"# Clear temp files\",\n    \"Remove-Item -Path 'C:\\\\Windows\\\\Temp\\\\*' -Recurse -Force -ErrorAction SilentlyContinue\",\n    \"# Clear Windows Update cache\",\n    \"Stop-Service -Name wuauserv -Force\",\n    \"Remove-Item -Path 'C:\\\\Windows\\\\SoftwareDistribution\\\\*' -Recurse -Force -ErrorAction SilentlyContinue\",\n    \"Start-Service -Name wuauserv\",\n  ]\n}\n",[997],{"type":43,"tag":118,"props":998,"children":999},{"__ignoreMap":115},[1000,1007,1014,1022,1030,1038,1046,1054,1062,1069],{"type":43,"tag":122,"props":1001,"children":1002},{"class":124,"line":125},[1003],{"type":43,"tag":122,"props":1004,"children":1005},{},[1006],{"type":48,"value":885},{"type":43,"tag":122,"props":1008,"children":1009},{"class":124,"line":134},[1010],{"type":43,"tag":122,"props":1011,"children":1012},{},[1013],{"type":48,"value":893},{"type":43,"tag":122,"props":1015,"children":1016},{"class":124,"line":143},[1017],{"type":43,"tag":122,"props":1018,"children":1019},{},[1020],{"type":48,"value":1021},"    \"# Clear temp files\",\n",{"type":43,"tag":122,"props":1023,"children":1024},{"class":124,"line":152},[1025],{"type":43,"tag":122,"props":1026,"children":1027},{},[1028],{"type":48,"value":1029},"    \"Remove-Item -Path 'C:\\\\Windows\\\\Temp\\\\*' -Recurse -Force -ErrorAction SilentlyContinue\",\n",{"type":43,"tag":122,"props":1031,"children":1032},{"class":124,"line":162},[1033],{"type":43,"tag":122,"props":1034,"children":1035},{},[1036],{"type":48,"value":1037},"    \"# Clear Windows Update cache\",\n",{"type":43,"tag":122,"props":1039,"children":1040},{"class":124,"line":171},[1041],{"type":43,"tag":122,"props":1042,"children":1043},{},[1044],{"type":48,"value":1045},"    \"Stop-Service -Name wuauserv -Force\",\n",{"type":43,"tag":122,"props":1047,"children":1048},{"class":124,"line":180},[1049],{"type":43,"tag":122,"props":1050,"children":1051},{},[1052],{"type":48,"value":1053},"    \"Remove-Item -Path 'C:\\\\Windows\\\\SoftwareDistribution\\\\*' -Recurse -Force -ErrorAction SilentlyContinue\",\n",{"type":43,"tag":122,"props":1055,"children":1056},{"class":124,"line":189},[1057],{"type":43,"tag":122,"props":1058,"children":1059},{},[1060],{"type":48,"value":1061},"    \"Start-Service -Name wuauserv\",\n",{"type":43,"tag":122,"props":1063,"children":1064},{"class":124,"line":198},[1065],{"type":43,"tag":122,"props":1066,"children":1067},{},[1068],{"type":48,"value":933},{"type":43,"tag":122,"props":1070,"children":1071},{"class":124,"line":207},[1072],{"type":43,"tag":122,"props":1073,"children":1074},{},[1075],{"type":48,"value":318},{"type":43,"tag":91,"props":1077,"children":1079},{"id":1078},"common-issues",[1080],{"type":48,"value":1081},"Common Issues",{"type":43,"tag":51,"props":1083,"children":1084},{},[1085],{"type":43,"tag":60,"props":1086,"children":1087},{},[1088],{"type":48,"value":1089},"WinRM Timeout",{"type":43,"tag":1091,"props":1092,"children":1093},"ul",{},[1094,1108,1113],{"type":43,"tag":1095,"props":1096,"children":1097},"li",{},[1098,1100,1106],{"type":48,"value":1099},"Increase ",{"type":43,"tag":118,"props":1101,"children":1103},{"className":1102},[],[1104],{"type":48,"value":1105},"winrm_timeout",{"type":48,"value":1107}," to 15m or more",{"type":43,"tag":1095,"props":1109,"children":1110},{},[1111],{"type":48,"value":1112},"Verify security group allows ports 5985\u002F5986",{"type":43,"tag":1095,"props":1114,"children":1115},{},[1116],{"type":48,"value":1117},"Check user data script completed successfully",{"type":43,"tag":51,"props":1119,"children":1120},{},[1121],{"type":43,"tag":60,"props":1122,"children":1123},{},[1124],{"type":48,"value":1125},"PowerShell Execution Policy",{"type":43,"tag":110,"props":1127,"children":1129},{"className":112,"code":1128,"language":114,"meta":115,"style":115},"provisioner \"powershell\" {\n  inline = [\n    \"Set-ExecutionPolicy Bypass -Scope Process -Force\",\n    \"# Your commands here\",\n  ]\n}\n",[1130],{"type":43,"tag":118,"props":1131,"children":1132},{"__ignoreMap":115},[1133,1140,1147,1155,1163,1170],{"type":43,"tag":122,"props":1134,"children":1135},{"class":124,"line":125},[1136],{"type":43,"tag":122,"props":1137,"children":1138},{},[1139],{"type":48,"value":885},{"type":43,"tag":122,"props":1141,"children":1142},{"class":124,"line":134},[1143],{"type":43,"tag":122,"props":1144,"children":1145},{},[1146],{"type":48,"value":893},{"type":43,"tag":122,"props":1148,"children":1149},{"class":124,"line":143},[1150],{"type":43,"tag":122,"props":1151,"children":1152},{},[1153],{"type":48,"value":1154},"    \"Set-ExecutionPolicy Bypass -Scope Process -Force\",\n",{"type":43,"tag":122,"props":1156,"children":1157},{"class":124,"line":152},[1158],{"type":43,"tag":122,"props":1159,"children":1160},{},[1161],{"type":48,"value":1162},"    \"# Your commands here\",\n",{"type":43,"tag":122,"props":1164,"children":1165},{"class":124,"line":162},[1166],{"type":43,"tag":122,"props":1167,"children":1168},{},[1169],{"type":48,"value":933},{"type":43,"tag":122,"props":1171,"children":1172},{"class":124,"line":171},[1173],{"type":43,"tag":122,"props":1174,"children":1175},{},[1176],{"type":48,"value":318},{"type":43,"tag":51,"props":1178,"children":1179},{},[1180],{"type":43,"tag":60,"props":1181,"children":1182},{},[1183],{"type":48,"value":1184},"Long Build Times",{"type":43,"tag":1091,"props":1186,"children":1187},{},[1188,1193,1198],{"type":43,"tag":1095,"props":1189,"children":1190},{},[1191],{"type":48,"value":1192},"Windows Updates can take 1-2 hours",{"type":43,"tag":1095,"props":1194,"children":1195},{},[1196],{"type":48,"value":1197},"Use pre-patched base images when available",{"type":43,"tag":1095,"props":1199,"children":1200},{},[1201,1203],{"type":48,"value":1202},"Set provisioner ",{"type":43,"tag":118,"props":1204,"children":1206},{"className":1205},[],[1207],{"type":48,"value":1208},"timeout = \"2h\"",{"type":43,"tag":91,"props":1210,"children":1212},{"id":1211},"references",[1213],{"type":48,"value":1214},"References",{"type":43,"tag":1091,"props":1216,"children":1217},{},[1218,1227,1237],{"type":43,"tag":1095,"props":1219,"children":1220},{},[1221],{"type":43,"tag":68,"props":1222,"children":1224},{"href":70,"rel":1223},[72],[1225],{"type":48,"value":1226},"Packer Windows Builders",{"type":43,"tag":1095,"props":1228,"children":1229},{},[1230],{"type":43,"tag":68,"props":1231,"children":1234},{"href":1232,"rel":1233},"https:\u002F\u002Fdeveloper.hashicorp.com\u002Fpacker\u002Fdocs\u002Fcommunicators\u002Fwinrm",[72],[1235],{"type":48,"value":1236},"WinRM Communicator",{"type":43,"tag":1095,"props":1238,"children":1239},{},[1240],{"type":43,"tag":68,"props":1241,"children":1244},{"href":1242,"rel":1243},"https:\u002F\u002Fdeveloper.hashicorp.com\u002Fpacker\u002Fdocs\u002Fprovisioners\u002Fpowershell",[72],[1245],{"type":48,"value":1246},"PowerShell Provisioner",{"type":43,"tag":1248,"props":1249,"children":1250},"style",{},[1251],{"type":48,"value":1252},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1254,"total":268},[1255,1270,1282,1297,1311,1323,1337],{"slug":1256,"name":1256,"fn":1257,"description":1258,"org":1259,"tags":1260,"stars":25,"repoUrl":26,"updatedAt":1269},"aws-ami-builder","build Amazon Machine Images with Packer","Build Amazon Machine Images (AMIs) with Packer using the amazon-ebs builder. Use when creating custom AMIs for EC2 instances.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1261,1264,1265,1268],{"name":1262,"slug":1263,"type":15},"AWS","aws",{"name":20,"slug":21,"type":15},{"name":1266,"slug":1267,"type":15},"Infrastructure as Code","infrastructure-as-code",{"name":23,"slug":24,"type":15},"2026-04-06T18:25:04.01571",{"slug":1271,"name":1271,"fn":1272,"description":1273,"org":1274,"tags":1275,"stars":25,"repoUrl":26,"updatedAt":1281},"azure-image-builder","build Azure managed images with Packer","Build Azure managed images and Azure Compute Gallery images with Packer. Use when creating custom images for Azure VMs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1276,1279,1280],{"name":1277,"slug":1278,"type":15},"Azure","azure",{"name":20,"slug":21,"type":15},{"name":23,"slug":24,"type":15},"2026-04-06T18:25:06.590174",{"slug":1283,"name":1283,"fn":1284,"description":1285,"org":1286,"tags":1287,"stars":25,"repoUrl":26,"updatedAt":1296},"azure-verified-modules","develop certified Azure Verified Modules","Azure Verified Modules (AVM) requirements and best practices for developing certified Azure Terraform modules. Use when creating or reviewing Azure modules that need AVM certification.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1288,1289,1292,1293],{"name":1277,"slug":1278,"type":15},{"name":1290,"slug":1291,"type":15},"Compliance","compliance",{"name":1266,"slug":1267,"type":15},{"name":1294,"slug":1295,"type":15},"Terraform","terraform","2026-04-06T18:25:16.88768",{"slug":1298,"name":1298,"fn":1299,"description":1300,"org":1301,"tags":1302,"stars":25,"repoUrl":26,"updatedAt":1310},"new-terraform-provider","scaffold new Terraform providers","Use this when scaffolding a new Terraform provider.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1303,1306,1309],{"name":1304,"slug":1305,"type":15},"Plugin Development","plugin-development",{"name":1307,"slug":1308,"type":15},"Templates","templates",{"name":1294,"slug":1295,"type":15},"2026-04-06T18:25:11.814973",{"slug":1312,"name":1312,"fn":1313,"description":1314,"org":1315,"tags":1316,"stars":25,"repoUrl":26,"updatedAt":1322},"provider-actions","implement Terraform Provider lifecycle actions","Implement Terraform Provider actions using the Plugin Framework. Use when developing imperative operations that execute at lifecycle events (before\u002Fafter create, update, destroy).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1317,1320,1321],{"name":1318,"slug":1319,"type":15},"API Development","api-development",{"name":1304,"slug":1305,"type":15},{"name":1294,"slug":1295,"type":15},"2026-04-06T18:25:07.880533",{"slug":1324,"name":1324,"fn":1325,"description":1326,"org":1327,"tags":1328,"stars":25,"repoUrl":26,"updatedAt":1336},"provider-docs","generate and review Terraform provider documentation","Create, update, and review Terraform provider documentation for Terraform Registry using HashiCorp-recommended patterns, tfplugindocs templates, and schema descriptions. Use when adding or changing provider configuration, resources, data sources, ephemeral resources, list resources, functions, or guides; when validating generated docs; and when troubleshooting missing or incorrect Registry documentation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1329,1332,1335],{"name":1330,"slug":1331,"type":15},"Documentation","documentation",{"name":1333,"slug":1334,"type":15},"Technical Writing","technical-writing",{"name":1294,"slug":1295,"type":15},"2026-04-06T18:25:09.261559",{"slug":1338,"name":1338,"fn":1339,"description":1340,"org":1341,"tags":1342,"stars":25,"repoUrl":26,"updatedAt":1346},"provider-resources","implement Terraform Provider resources and data sources","Implement Terraform Provider resources and data sources using the Plugin Framework. Use when developing CRUD operations, schema design, state management, and acceptance testing for provider resources.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1343,1344,1345],{"name":1318,"slug":1319,"type":15},{"name":1304,"slug":1305,"type":15},{"name":1294,"slug":1295,"type":15},"2026-04-06T18:25:10.56237",{"items":1348,"total":277},[1349,1356,1362,1369,1375,1381,1387,1393,1408,1423,1435,1446],{"slug":1256,"name":1256,"fn":1257,"description":1258,"org":1350,"tags":1351,"stars":25,"repoUrl":26,"updatedAt":1269},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1352,1353,1354,1355],{"name":1262,"slug":1263,"type":15},{"name":20,"slug":21,"type":15},{"name":1266,"slug":1267,"type":15},{"name":23,"slug":24,"type":15},{"slug":1271,"name":1271,"fn":1272,"description":1273,"org":1357,"tags":1358,"stars":25,"repoUrl":26,"updatedAt":1281},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1359,1360,1361],{"name":1277,"slug":1278,"type":15},{"name":20,"slug":21,"type":15},{"name":23,"slug":24,"type":15},{"slug":1283,"name":1283,"fn":1284,"description":1285,"org":1363,"tags":1364,"stars":25,"repoUrl":26,"updatedAt":1296},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1365,1366,1367,1368],{"name":1277,"slug":1278,"type":15},{"name":1290,"slug":1291,"type":15},{"name":1266,"slug":1267,"type":15},{"name":1294,"slug":1295,"type":15},{"slug":1298,"name":1298,"fn":1299,"description":1300,"org":1370,"tags":1371,"stars":25,"repoUrl":26,"updatedAt":1310},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1372,1373,1374],{"name":1304,"slug":1305,"type":15},{"name":1307,"slug":1308,"type":15},{"name":1294,"slug":1295,"type":15},{"slug":1312,"name":1312,"fn":1313,"description":1314,"org":1376,"tags":1377,"stars":25,"repoUrl":26,"updatedAt":1322},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1378,1379,1380],{"name":1318,"slug":1319,"type":15},{"name":1304,"slug":1305,"type":15},{"name":1294,"slug":1295,"type":15},{"slug":1324,"name":1324,"fn":1325,"description":1326,"org":1382,"tags":1383,"stars":25,"repoUrl":26,"updatedAt":1336},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1384,1385,1386],{"name":1330,"slug":1331,"type":15},{"name":1333,"slug":1334,"type":15},{"name":1294,"slug":1295,"type":15},{"slug":1338,"name":1338,"fn":1339,"description":1340,"org":1388,"tags":1389,"stars":25,"repoUrl":26,"updatedAt":1346},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1390,1391,1392],{"name":1318,"slug":1319,"type":15},{"name":1304,"slug":1305,"type":15},{"name":1294,"slug":1295,"type":15},{"slug":1394,"name":1394,"fn":1395,"description":1396,"org":1397,"tags":1398,"stars":25,"repoUrl":26,"updatedAt":1407},"provider-test-patterns","implement Terraform provider acceptance test patterns","Terraform provider acceptance test patterns using terraform-plugin-testing with the Plugin Framework. Covers test structure, TestCase\u002FTestStep fields, ConfigStateChecks with custom statecheck.StateCheck implementations, plan checks, CompareValue for cross-step assertions, config helpers, import testing with ImportStateKind, sweepers, and scenario patterns (basic, update, disappears, validation, regression), and ephemeral resource testing with the echoprovider package. Use when writing, reviewing, or debugging provider acceptance tests, including questions about statecheck, plancheck, TestCheckFunc, CheckDestroy, ExpectError, import state verification, ephemeral resources, or how to structure test files.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1399,1400,1403,1404],{"name":1304,"slug":1305,"type":15},{"name":1401,"slug":1402,"type":15},"QA","qa",{"name":1294,"slug":1295,"type":15},{"name":1405,"slug":1406,"type":15},"Testing","testing","2026-04-06T18:25:14.352781",{"slug":1409,"name":1409,"fn":1410,"description":1411,"org":1412,"tags":1413,"stars":25,"repoUrl":26,"updatedAt":1422},"push-to-registry","push Packer build metadata to HCP registry","Push Packer build metadata to HCP Packer registry for tracking and managing image lifecycle. Use when integrating Packer builds with HCP Packer for version control and governance.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1414,1415,1418,1421],{"name":20,"slug":21,"type":15},{"name":1416,"slug":1417,"type":15},"Governance","governance",{"name":1419,"slug":1420,"type":15},"HCP","hcp",{"name":23,"slug":24,"type":15},"2026-04-06T18:25:02.749563",{"slug":1424,"name":1424,"fn":1425,"description":1426,"org":1427,"tags":1428,"stars":25,"repoUrl":26,"updatedAt":1434},"refactor-module","refactor Terraform configurations into reusable modules","Transform monolithic Terraform configurations into reusable, maintainable modules following HashiCorp's module design principles and community best practices.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1429,1432,1433],{"name":1430,"slug":1431,"type":15},"Architecture","architecture",{"name":1266,"slug":1267,"type":15},{"name":1294,"slug":1295,"type":15},"2026-04-06T18:25:20.953737",{"slug":1436,"name":1436,"fn":1437,"description":1438,"org":1439,"tags":1440,"stars":25,"repoUrl":26,"updatedAt":1445},"run-acceptance-tests","run acceptance tests for Terraform providers","Guide for running acceptance tests for a Terraform provider. Use this when asked to run an acceptance test or to run a test with the prefix `TestAcc`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1441,1442,1443,1444],{"name":1304,"slug":1305,"type":15},{"name":1401,"slug":1402,"type":15},{"name":1294,"slug":1295,"type":15},{"name":1405,"slug":1406,"type":15},"2026-04-06T18:25:13.098191",{"slug":1447,"name":1447,"fn":1448,"description":1449,"org":1450,"tags":1451,"stars":25,"repoUrl":26,"updatedAt":1458},"terraform-policy","write and test Terraform policy files","Write, test, or convert Terraform Policy files (.policy.hcl, .policytest.hcl, Sentinel→tfpolicy). Triggers: policy.hcl, policytest, convert sentinel, tfpolicy, write a policy.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1452,1453,1454,1457],{"name":1290,"slug":1291,"type":15},{"name":1266,"slug":1267,"type":15},{"name":1455,"slug":1456,"type":15},"Security","security",{"name":1294,"slug":1295,"type":15},"2026-07-18T05:48:20.299442"]