@@ -2,7 +2,7 @@ terraform {
2
2
required_providers {
3
3
coder = {
4
4
source = " coder/coder"
5
- version = " ~> 0.6.14 "
5
+ version = " ~> 0.6.17 "
6
6
}
7
7
digitalocean = {
8
8
source = " digitalocean/digitalocean"
@@ -11,41 +11,44 @@ terraform {
11
11
}
12
12
}
13
13
14
+ provider "coder" {
15
+ feature_use_managed_variables = true
16
+ }
14
17
15
-
16
- data "coder_parameter" "step1_do_project_id" {
17
- name = " Enter project ID"
18
+ variable "step1_do_project_id" {
19
+ type = string
18
20
description = <<- EOF
19
21
Enter project ID
20
22
21
23
$ doctl projects list
22
24
EOF
23
- type = " string"
24
25
default = " 0"
25
- mutable = false
26
26
validation {
27
27
# make sure length of alphanumeric string is 36
28
- regex = " ^[a-zA-Z0-9]{36}$ "
29
- error = " Invalid Digital Ocean Project ID."
28
+ condition = length (var . step1_do_project_id ) == 36
29
+ error_message = " Invalid Digital Ocean Project ID."
30
30
}
31
+
31
32
}
32
33
33
- data "coder_parameter" "step2_do_admin_ssh_key" {
34
- name = " Enter admin SSH key ID (some Droplet images require an SSH key to be set): "
34
+ variable "step2_do_admin_ssh_key" {
35
+ type = string
35
36
description = <<- EOF
37
+ Enter admin SSH key ID (some Droplet images require an SSH key to be set):
38
+
36
39
Can be set to "0" for no key.
37
40
38
41
Note: Setting this to zero will break Fedora images and notify root passwords via email.
39
42
40
43
$ doctl compute ssh-key list
41
44
EOF
42
- type = " number"
43
45
default = " 0"
44
- mutable = false
45
46
validation {
46
- min = 0
47
- max = 999999
47
+ # make sure value is a number
48
+ condition = can (regex (" ^[0-9]+$" , var. step2_do_admin_ssh_key ))
49
+ error_message = " Invalid Digital Ocean SSH Key ID."
48
50
}
51
+
49
52
}
50
53
51
54
data "coder_parameter" "droplet_image" {
@@ -266,11 +269,11 @@ resource "digitalocean_droplet" "workspace" {
266
269
coder_agent_token = coder_agent.main.token
267
270
})
268
271
# Required to provision Fedora.
269
- ssh_keys = data . coder_parameter . step1_do_project_id . value > 0 ? [data . coder_parameter . step2_do_admin_ssh_key . value ] : []
272
+ ssh_keys = var . step1_do_project_id > 0 ? [var . step2_do_admin_ssh_key ] : []
270
273
}
271
274
272
275
resource "digitalocean_project_resources" "project" {
273
- project = data . coder_parameter . step1_do_project_id . value
276
+ project = var . step1_do_project_id
274
277
# Workaround for terraform plan when using count.
275
278
resources = length (digitalocean_droplet. workspace ) > 0 ? [
276
279
digitalocean_volume . home_volume . urn ,
0 commit comments