{"id":44540428,"url":"https://github.com/d-strobel/terraform-provider-windows","last_synced_at":"2026-02-13T18:58:12.260Z","repository":{"id":214462600,"uuid":"700336246","full_name":"d-strobel/terraform-provider-windows","owner":"d-strobel","description":"Terraform provider to manage Windows based resources.","archived":false,"fork":false,"pushed_at":"2024-12-09T14:44:56.000Z","size":360,"stargazers_count":5,"open_issues_count":4,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-12-09T15:36:37.562Z","etag":null,"topics":["opentofu","ssh","terraform","windows","winrm"],"latest_commit_sha":null,"homepage":"https://registry.terraform.io/providers/d-strobel/windows/latest","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/d-strobel.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-10-04T12:05:04.000Z","updated_at":"2024-12-02T20:59:23.000Z","dependencies_parsed_at":"2024-11-08T13:21:10.684Z","dependency_job_id":"86b68743-ae2f-470d-8fef-d2be1e6d3a87","html_url":"https://github.com/d-strobel/terraform-provider-windows","commit_stats":null,"previous_names":["d-strobel/terraform-provider-windows"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/d-strobel/terraform-provider-windows","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d-strobel%2Fterraform-provider-windows","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d-strobel%2Fterraform-provider-windows/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d-strobel%2Fterraform-provider-windows/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d-strobel%2Fterraform-provider-windows/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/d-strobel","download_url":"https://codeload.github.com/d-strobel/terraform-provider-windows/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d-strobel%2Fterraform-provider-windows/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29414301,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-13T06:24:03.484Z","status":"ssl_error","status_checked_at":"2026-02-13T06:23:12.830Z","response_time":78,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["opentofu","ssh","terraform","windows","winrm"],"created_at":"2026-02-13T18:58:11.695Z","updated_at":"2026-02-13T18:58:12.235Z","avatar_url":"https://github.com/d-strobel.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Terraform Provider Windows\n\n\u003c!-- Badges --\u003e\n[![Build][build badge]][build page]\n[![GoReport][goreport badge]][goreport page]\n[![Conventional Commits][convention badge]][convention page]\n\nThis Terraform provider enables the management of Windows-based resources within your infrastructure. \n\nIt is built on top of the [gowindows](https://github.com/d-strobel/gowindows) SDK, \nwhich acts as the underlying interface for interacting with Windows environments.\n\nTo introduce new features or enhancements to this provider, the corresponding functionality must first be implemented in the gowindows library. \nContributions or feature requests should therefore begin with updates to the GoWindows SDK before being integrated into the provider.\n\n## Using the provider\n\n```terraform\nterraform {\n  required_providers {\n    windows = {\n      source = \"d-strobel/windows\"\n    }\n  }\n}\n\nprovider \"windows\" {\n  endpoint = \"127.0.0.1\"\n\n  ssh = {\n    username = \"vagrant\"\n    password = \"vagrant\"\n    port     = 1222\n  }\n}\n\n// Create a new local security group.\nresource \"windows_local_group\" \"this\" {\n    name = \"MyNewGroup\"\n}\n\n// Create a new local user.\nresource \"windows_local_user\" \"this\" {\n    name = \"MyNewUser\"\n}\n```\n\n## Developing the Provider\n\n### Pre-commit\n\nTo ensure smooth execution in the pipeline and eliminate potential linting errors,\nit's highly advisable to integrate pre-commit hooks. These hooks can be effortlessly\ninstalled to streamline the process and maintain code quality standards.\n\nYou can find more details about pre-commit hooks on their official website: [pre-commit](https://pre-commit.com/).\n\n### Conventional Commits\n\nThis Terraform provider follows the conventional commit guidelines. For more information, see [conventionalcommits.org](https://www.conventionalcommits.org/).\n\n### Code Generation\n\nSome parts of this provider are automatically generated using the [terraform-plugin-codegen-framework](https://github.com/hashicorp/terraform-plugin-codegen-framework).\n\n#### Schema\n\nThe schemas for providers, resources, and data sources are defined as JSON files located in the [internal/schema](./internal/schema) directory.\n\nTo generate the corresponding code, simply run `go generate`.\u003cbr\u003e \nThis will execute all commands in the [main.go](./main.go) file that are prefixed with the following syntax: `//go:generate \u003cCMD\u003e`.\n\nIf you are adding a new resource within an existing subpackage, update the JSON schema in the respective subpackage file.\n\nFor a new subpackage, you’ll need to create a new file for the resources and data sources.\u003cbr\u003e\nAdditionally, you'll also need to add the appropriate code generation commands in the [main.go](./main.go) file.\n\n#### Scaffolding\n\nOnce the schema code is generated, you may want to create the data source or resource files that utilize the generated code.\n\nTo help with this, you can use the scaffold command from the terraform-plugin-codegen-framework to initially generate these files.\u003cbr\u003e\nSince the scaffolded files require manual modification, you only need to generate them once.\n\n* Create a Resource\n\n```shell\ntfplugingen-framework scaffold resource --name subpackage_resource_name --output-dir internal/provider/subpackage --package subpackage\n```\n\n* Create a Datasources\n\n```shell\ntfplugingen-framework scaffold data-source --name subpackage_datasource_name --output-dir internal/provider/subpackage --package subpackage\n```\n\nAfter generating the files, update them as needed.\nReview the existing resources and data sources for guidance on what changes to make initially.\n\nOnce the CRUD operation logic is implemented in the corresponding functions, \nensure that the `New...Resource` or `New...DataSource` function is called in the [provider.go](./internal/provider/provider.go)\nfile under the appropriate `Resources` or `DataSources` function.\n\nFinally, don’t forget to add acceptance tests to validate the functionality (see section [Acceptance Test](#acceptance-test)).\n\n### Acceptance test\n\n\u003e The acceptance tests are currently not available via Github action.\n\n#### Prerequisites\n\n* [Terraform](https://developer.hashicorp.com/terraform/downloads)\n* [OpenTofu](https://opentofu.org/docs/intro/install)\n* [Go](https://golang.org/doc/install)\n* [Hashicorp Vagrant](https://www.vagrantup.com/)\n* [Oracle VirtualBox](https://www.virtualbox.org/)\n\n#### Run tests\n\nBoot the Vagrant machines:\n\n```shell\nmake vagrant-up\n```\n\nRun acceptance tests for terraform and opentofu:\n\n```shell\nmake testacc\n```\n\nDestroy the Vagrant machines:\n\n```shell\nmake vagrant-down\n```\n\n## Inspirations\n\n* [hashicorp - terraform-provider-ad](https://github.com/hashicorp/terraform-provider-ad):\u003cbr\u003e\n\nHashicorp made a great start with the terraform-provider-ad. Currently, it seems that the provider is not actively maintained.\u003cbr\u003e\nBeyond that, my goal is to split the terraform-provider into a library and a provider and extend its functionality with non Active-Directory systems.\n\n## License\nThis project is licensed under the [Mozilla Public License Version 2.0](LICENSE).\n\n\u003c!-- Badges --\u003e\n[goreport badge]: https://goreportcard.com/badge/github.com/d-strobel/terraform-provider-windows\n[goreport page]: https://goreportcard.com/report/github.com/d-strobel/terraform-provider-windows\n\n[build badge]: https://github.com/d-strobel/terraform-provider-windows/actions/workflows/build.yml/badge.svg\n[build page]: https://github.com/d-strobel/terraform-provider-windows/actions/workflows/build.yml\n\n[convention badge]: https://img.shields.io/badge/Conventional%20Commits-1.0.0-%23FE5196?logo=conventionalcommits\u0026logoColor=white\n[convention page]: https://conventionalcommits.org\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fd-strobel%2Fterraform-provider-windows","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fd-strobel%2Fterraform-provider-windows","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fd-strobel%2Fterraform-provider-windows/lists"}