Skip to content

Commit 2254e0e

Browse files
committed
feat(provisionerd): pass owner git ssh key
1 parent 47f8f5d commit 2254e0e

File tree

6 files changed

+226
-136
lines changed

6 files changed

+226
-136
lines changed

coderd/provisionerdserver/provisionerdserver.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -467,6 +467,11 @@ func (s *server) acquireProtoJob(ctx context.Context, job database.ProvisionerJo
467467
if err != nil {
468468
return nil, failJob(fmt.Sprintf("get owner: %s", err))
469469
}
470+
var ownerSSHPublicKey, ownerSSHPrivateKey string
471+
if ownerSSHKey, err := s.Database.GetGitSSHKey(ctx, owner.ID); err == nil {
472+
ownerSSHPublicKey = ownerSSHKey.PublicKey
473+
ownerSSHPrivateKey = ownerSSHKey.PrivateKey
474+
}
470475
ownerGroups, err := s.Database.GetGroupsByOrganizationAndUserID(ctx, database.GetGroupsByOrganizationAndUserIDParams{
471476
UserID: owner.ID,
472477
OrganizationID: s.OrganizationID,
@@ -586,6 +591,8 @@ func (s *server) acquireProtoJob(ctx context.Context, job database.ProvisionerJo
586591
TemplateName: template.Name,
587592
TemplateVersion: templateVersion.Name,
588593
WorkspaceOwnerSessionToken: sessionToken,
594+
WorkspaceOwnerSshPublicKey: ownerSSHPublicKey,
595+
WorkspaceOwnerSshPrivateKey: ownerSSHPrivateKey,
589596
},
590597
LogLevel: input.LogLevel,
591598
},

provisioner/terraform/provision.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,8 @@ func provisionEnv(
202202
"CODER_WORKSPACE_OWNER_NAME="+metadata.GetWorkspaceOwnerName(),
203203
"CODER_WORKSPACE_OWNER_OIDC_ACCESS_TOKEN="+metadata.GetWorkspaceOwnerOidcAccessToken(),
204204
"CODER_WORKSPACE_OWNER_GROUPS="+string(ownerGroups),
205+
"CODER_WORKSPACE_OWNER_SSH_PUBLIC_KEY="+metadata.GetWorkspaceOwnerSshPublicKey(),
206+
"CODER_WORKSPACE_OWNER_SSH_PRIVATE_KEY="+metadata.GetWorkspaceOwnerSshPrivateKey(),
205207
"CODER_WORKSPACE_ID="+metadata.GetWorkspaceId(),
206208
"CODER_WORKSPACE_OWNER_ID="+metadata.GetWorkspaceOwnerId(),
207209
"CODER_WORKSPACE_OWNER_SESSION_TOKEN="+metadata.GetWorkspaceOwnerSessionToken(),

provisioner/terraform/provision_test.go

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -572,6 +572,52 @@ func TestProvision(t *testing.T) {
572572
}},
573573
},
574574
},
575+
{
576+
Name: "ssh-key",
577+
Files: map[string]string{
578+
"main.tf": `terraform {
579+
required_providers {
580+
coder = {
581+
source = "coder/coder"
582+
}
583+
}
584+
}
585+
586+
resource "null_resource" "example" {}
587+
data "coder_workspace_owner" "me" {}
588+
resource "coder_metadata" "example" {
589+
resource_id = null_resource.example.id
590+
item {
591+
key = "pubkey"
592+
value = data.coder_workspace_owner.me.ssh_public_key
593+
}
594+
item {
595+
key = "privkey"
596+
value = data.coder_workspace_owner.me.ssh_private_key
597+
}
598+
}
599+
`,
600+
},
601+
Request: &proto.PlanRequest{
602+
Metadata: &proto.Metadata{
603+
WorkspaceOwnerSshPublicKey: "fake public key",
604+
WorkspaceOwnerSshPrivateKey: "fake private key",
605+
},
606+
},
607+
Response: &proto.PlanComplete{
608+
Resources: []*proto.Resource{{
609+
Name: "example",
610+
Type: "null_resource",
611+
Metadata: []*proto.Resource_Metadata{{
612+
Key: "pubkey",
613+
Value: "fake public key",
614+
}, {
615+
Key: "privkey",
616+
Value: "fake private key",
617+
}},
618+
}},
619+
},
620+
},
575621
}
576622

577623
for _, testCase := range testCases {

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy