1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package cloudinit
import "encoding/json"
const (
GuestAgentSecretsPath = GuestAgentConfigDir + "/secrets.json"
GuestAgentStateDir = "/run/socialweb-guest-agent"
GuestSecretsReadyPath = GuestAgentStateDir + "/secrets.ready"
GuestSecretsRequestPath = GuestAgentStateDir + "/secrets.request"
GuestSecretsUnit = "socialweb-guest-secrets.service"
SecretsFetchUnit = "setup-secrets.service"
SecretsDoneStamp = "/var/lib/setup-secrets.done"
GuestSecretsTag = "secrets"
GuestSecretsFallbackSealed = "sealed"
SecretsFetchFallbackDeadlineSec = 90
)
var SecretsReadyUnits = []string{SecretsFetchUnit, GuestSecretsUnit}
type GuestSecretsMarker struct {
Fallback string `json:"fallback"`
GetSecrets bool `json:"getSecrets"`
}
func GuestSecretsModule(getSecrets bool) UserDataModule {
return func(Context) (UserDataPatch, error) {
raw, err := json.Marshal(GuestSecretsMarker{Fallback: GuestSecretsFallbackSealed, GetSecrets: getSecrets})
if err != nil {
return UserDataPatch{}, err
}
return UserDataPatch{
WriteFiles: []WriteFileEntry{{
Path: GuestAgentSecretsPath,
Owner: "root:root",
Permissions: "0644",
Content: string(raw) + "\n",
}},
}, nil
}
}