Skip to content

Commit 9628064

Browse files
committed
chore: update readme, add version warnings, examples
1 parent a776da3 commit 9628064

File tree

15 files changed

+146
-73
lines changed

15 files changed

+146
-73
lines changed

README.md

Lines changed: 16 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,35 @@
1-
# Coderd Terraform Provider
1+
# terraform-provider-coderd
22

3-
# ⚠️ WORK IN PROGRESS - DO NOT USE ⚠️
3+
`terraform-provider-coderd` enables managing a [Coder](https://github.com/coder/coder) deployment using [Terraform](https://github.com/hashicorp/terraform) IaC.
44

5-
_This template repository is built on the [Terraform Plugin Framework](https://github.com/hashicorp/terraform-plugin-framework). The template repository built on the [Terraform Plugin SDK](https://github.com/hashicorp/terraform-plugin-sdk) can be found at [terraform-provider-scaffolding](https://github.com/hashicorp/terraform-provider-scaffolding). See [Which SDK Should I Use?](https://developer.hashicorp.com/terraform/plugin/framework-benefits) in the Terraform documentation for additional information._
6-
7-
This repository is a *template* for a [Terraform](https://www.terraform.io) provider. It is intended as a starting point for creating Terraform providers, containing:
8-
9-
- A resource and a data source (`internal/provider/`),
10-
- Examples (`examples/`) and generated documentation (`docs/`),
11-
- Miscellaneous meta files.
12-
13-
These files contain boilerplate code that you will need to edit to create your own Terraform provider. Tutorials for creating Terraform providers can be found on the [HashiCorp Developer](https://developer.hashicorp.com/terraform/tutorials/providers-plugin-framework) platform. _Terraform Plugin Framework specific guides are titled accordingly._
14-
15-
Please see the [GitHub template repository documentation](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/creating-a-repository-from-a-template) for how to create a new repository from this template on GitHub.
16-
17-
Once you've written your provider, you'll want to [publish it on the Terraform Registry](https://developer.hashicorp.com/terraform/registry/providers/publishing) so that others can use it.
5+
The provider currently supports resources and data sources for:
6+
- Users
7+
- Templates + Template Versions
8+
- Groups
9+
- Workspace Proxies
10+
- Organizations (Data Source only)
1811

1912
## Requirements
2013

2114
- [Terraform](https://developer.hashicorp.com/terraform/downloads) >= 1.0
2215
- [Go](https://golang.org/doc/install) >= 1.21
16+
- [Coder](https://github.com/coder/coder) >= 2.10.1
2317

24-
## Building The Provider
25-
26-
1. Clone the repository
27-
1. Enter the repository directory
28-
1. Build the provider using the Go `install` command:
29-
30-
```shell
31-
go install
32-
```
33-
34-
## Adding Dependencies
35-
36-
This provider uses [Go modules](https://github.com/golang/go/wiki/Modules).
37-
Please see the Go documentation for the most up to date information about using Go modules.
38-
39-
To add a new dependency `github.com/author/dependency` to your Terraform provider:
40-
41-
```shell
42-
go get github.com/author/dependency
43-
go mod tidy
44-
```
45-
46-
Then commit the changes to `go.mod` and `go.sum`.
47-
48-
## Using the provider
18+
## Usage
4919

50-
Fill this in for each provider
20+
See the [`examples`](examples) and the [documentation](https://registry.terraform.io/providers/coder/coderd/latest/docs).
5121

5222
## Developing the Provider
5323

5424
If you wish to work on the provider, you'll first need [Go](http://www.golang.org) installed on your machine (see [Requirements](#requirements) above).
5525

5626
To compile the provider, run `go install`. This will build the provider and put the provider binary in the `$GOPATH/bin` directory.
5727

58-
To generate or update documentation, run `go generate`.
28+
To generate or update documentation, run `make gen`.
5929

60-
In order to run the full suite of Acceptance tests, run `make testacc`.
30+
### Terraform Acceptance Tests
6131

62-
*Note:* Acceptance tests create real resources, and often cost money to run.
32+
Acceptance tests are run against a live Coder deployment in a local Docker container. To run the full suite of Acceptance tests, run `make testacc`.
6333

64-
```shell
65-
make testacc
66-
```
34+
> [!NOTE]
35+
> Our [CI workflow](./github/workflows/test.yml) runs an acceptance test matrix against multiple Terraform versions.

docs/data-sources/group.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33
page_title: "coderd_group Data Source - terraform-provider-coderd"
44
subcategory: ""
55
description: |-
6-
An existing group on the coder deployment.
6+
An existing group on the Coder deployment.
77
---
88

99
# coderd_group (Data Source)
1010

11-
An existing group on the coder deployment.
11+
An existing group on the Coder deployment.
1212

1313

1414

docs/data-sources/organization.md

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,17 @@
33
page_title: "coderd_organization Data Source - terraform-provider-coderd"
44
subcategory: ""
55
description: |-
6-
An existing organization on the coder deployment.
6+
An existing organization on the Coder deployment.
7+
~> Warning
8+
This data source is only compatible with Coder version 2.13.0 https://github.com/coder/coder/releases/tag/v2.13.0 and later.
79
---
810

911
# coderd_organization (Data Source)
1012

11-
An existing organization on the coder deployment.
13+
An existing organization on the Coder deployment.
14+
15+
~> **Warning**
16+
This data source is only compatible with Coder version [2.13.0](https://github.com/coder/coder/releases/tag/v2.13.0) and later.
1217

1318

1419

docs/data-sources/user.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33
page_title: "coderd_user Data Source - terraform-provider-coderd"
44
subcategory: ""
55
description: |-
6-
An existing user on the coder deployment
6+
An existing user on the Coder deployment
77
---
88

99
# coderd_user (Data Source)
1010

11-
An existing user on the coder deployment
11+
An existing user on the Coder deployment
1212

1313

1414

docs/index.md

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,16 @@
33
page_title: "coderd Provider"
44
subcategory: ""
55
description: |-
6-
6+
~> Warning
7+
This provider is only compatible with Coder version 2.10.1 https://github.com/coder/coder/releases/tag/v2.13.0 and later.
78
---
89

910
# coderd Provider
1011

12+
~> **Warning**
13+
This provider is only compatible with Coder version [2.10.1](https://github.com/coder/coder/releases/tag/v2.13.0) and later.
1114

1215

13-
## Example Usage
14-
15-
```terraform
16-
provider "coderd" {
17-
# example configuration here
18-
}
19-
```
2016

2117
<!-- schema generated by tfplugindocs -->
2218
## Schema

examples/data-sources/coderd_example/data-source.tf

Lines changed: 0 additions & 3 deletions
This file was deleted.

examples/provider/provider.tf

Lines changed: 0 additions & 3 deletions
This file was deleted.

examples/resources/coderd_example/resource.tf

Lines changed: 0 additions & 3 deletions
This file was deleted.
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
terraform {
2+
required_providers {
3+
coderd = {
4+
source = "coder/coderd"
5+
}
6+
}
7+
}
8+
9+
// Provider populated from environment variables
10+
provider "coderd" {}
11+
12+
resource "coderd_user" "coder1" {
13+
username = "coder1"
14+
name = "Coder One"
15+
16+
}
17+
18+
resource "coderd_user" "coder2" {
19+
username = "coder2"
20+
name = "Coder One"
21+
22+
}
23+
24+
// Add two users to the group by their ID.
25+
resource "coderd_group" "group1" {
26+
name = "group1"
27+
members = [
28+
coderd_user.coder1.id,
29+
coderd_user.coder2.id
30+
]
31+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
terraform {
2+
required_providers {
3+
coderd = {
4+
source = "coder/coderd"
5+
}
6+
}
7+
}
8+
9+
// Provider populated from environment variables
10+
provider "coderd" {}
11+
12+
// Get the commit SHA of the configuration's git repository
13+
variable "TFC_CONFIGURATION_VERSION_GIT_COMMIT_SHA" {
14+
type = string
15+
}
16+
17+
resource "coderd_user" "coder1" {
18+
username = "coder1"
19+
name = "Coder One"
20+
21+
}
22+
23+
resource "coderd_template" "ubuntu-main" {
24+
name = "ubuntu-main"
25+
description = "The main template for developing on Ubuntu."
26+
versions = [
27+
{
28+
name = "stable-${var.TFC_CONFIGURATION_VERSION_GIT_COMMIT_SHA}"
29+
description = "The stable version of the template."
30+
directory = "./stable-template"
31+
},
32+
{
33+
name = "staging-${var.TFC_CONFIGURATION_VERSION_GIT_COMMIT_SHA}"
34+
description = "The staging version of the template."
35+
directory = "./staging-template"
36+
}
37+
]
38+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
terraform {
2+
required_providers {
3+
coderd = {
4+
source = "coder/coderd"
5+
}
6+
}
7+
}
8+
9+
// Provider populated from environemnt variables
10+
provider "coderd" {}
11+
12+
// Create a bot user for Jenkins
13+
resource "coderd_user" "jenkins" {
14+
username = "jenkins"
15+
name = "Jenkins CI/CD"
16+
17+
roles = ["template-admin"]
18+
login_type = "none"
19+
}
20+
21+
// Keep the password of a user account up to date from an external source
22+
resource "coderd_user" "audit" {
23+
username = "auditor"
24+
name = "Auditor"
25+
26+
roles = ["auditor"]
27+
login_type = "password"
28+
password = data.vault_password.auditor.value
29+
}
30+
31+
// Ensure the admin account is suspended
32+
resource "coderd_user" "admin" {
33+
username = "admin"
34+
suspended = true
35+
}

internal/provider/group_data_source.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ func (d *GroupDataSource) Metadata(ctx context.Context, req datasource.MetadataR
5656

5757
func (d *GroupDataSource) Schema(ctx context.Context, req datasource.SchemaRequest, resp *datasource.SchemaResponse) {
5858
resp.Schema = schema.Schema{
59-
MarkdownDescription: "An existing group on the coder deployment.",
59+
MarkdownDescription: "An existing group on the Coder deployment.",
6060

6161
Attributes: map[string]schema.Attribute{
6262
"id": schema.StringAttribute{

internal/provider/organization_data_source.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,11 @@ func (d *OrganizationDataSource) Metadata(ctx context.Context, req datasource.Me
4646

4747
func (d *OrganizationDataSource) Schema(ctx context.Context, req datasource.SchemaRequest, resp *datasource.SchemaResponse) {
4848
resp.Schema = schema.Schema{
49-
MarkdownDescription: "An existing organization on the coder deployment.",
49+
MarkdownDescription: `An existing organization on the Coder deployment.
50+
51+
~> **Warning**
52+
This data source is only compatible with Coder version [2.13.0](https://github.com/coder/coder/releases/tag/v2.13.0) and later.
53+
`,
5054

5155
Attributes: map[string]schema.Attribute{
5256
"id": schema.StringAttribute{

internal/provider/provider.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,10 @@ func (p *CoderdProvider) Metadata(ctx context.Context, req provider.MetadataRequ
5252

5353
func (p *CoderdProvider) Schema(ctx context.Context, req provider.SchemaRequest, resp *provider.SchemaResponse) {
5454
resp.Schema = schema.Schema{
55+
MarkdownDescription: `
56+
~> **Warning**
57+
This provider is only compatible with Coder version [2.10.1](https://github.com/coder/coder/releases/tag/v2.13.0) and later.
58+
`,
5559
Attributes: map[string]schema.Attribute{
5660
"url": schema.StringAttribute{
5761
MarkdownDescription: "URL to the Coder deployment. Defaults to $CODER_URL.",

internal/provider/user_data_source.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ func (d *UserDataSource) Metadata(ctx context.Context, req datasource.MetadataRe
5050

5151
func (d *UserDataSource) Schema(ctx context.Context, req datasource.SchemaRequest, resp *datasource.SchemaResponse) {
5252
resp.Schema = schema.Schema{
53-
MarkdownDescription: "An existing user on the coder deployment",
53+
MarkdownDescription: "An existing user on the Coder deployment",
5454

5555
// Validation handled by ConfigValidators
5656
Attributes: map[string]schema.Attribute{

0 commit comments

Comments
 (0)