Fixes cloud init initialization

This commit is contained in:
markmental 2025-12-15 17:05:24 -05:00
commit a6fa0b22cf

36
main.go
View file

@ -191,21 +191,26 @@ users:
- name: %s - name: %s
sudo: ALL=(ALL) NOPASSWD:ALL sudo: ALL=(ALL) NOPASSWD:ALL
shell: /bin/sh shell: /bin/sh
lock_passwd: true
create_home: true
ssh_pwauth: false ssh_pwauth: false
disable_root: true disable_root: true
write_files:
- path: /home/%s/.ssh/authorized_keys
owner: %s:%s
permissions: '0600'
content: |
%s
runcmd: runcmd:
- mkdir -p /home/%s/.ssh
- echo '%s' > /home/%s/.ssh/authorized_keys
- chown -R %s:%s /home/%s/.ssh - chown -R %s:%s /home/%s/.ssh
`, img.User, img.User, img.User, img.User, sshKey, - chmod 700 /home/%s/.ssh
img.User, img.User, img.User) - chmod 600 /home/%s/.ssh/authorized_keys
`, img.User,
img.User,
sshKey,
img.User,
img.User, img.User,
img.User,
img.User,
img.User)
metaData := fmt.Sprintf( metaData := fmt.Sprintf(
"instance-id: %s\nlocal-hostname: %s\n", "instance-id: %s\nlocal-hostname: %s\n",
@ -219,13 +224,10 @@ runcmd:
} }
defer os.RemoveAll(tmpDir) defer os.RemoveAll(tmpDir)
userDataPath := filepath.Join(tmpDir, "user-data") if err := os.WriteFile(filepath.Join(tmpDir, "user-data"), []byte(userData), 0644); err != nil {
metaDataPath := filepath.Join(tmpDir, "meta-data")
if err := os.WriteFile(userDataPath, []byte(userData), 0644); err != nil {
panic(err) panic(err)
} }
if err := os.WriteFile(metaDataPath, []byte(metaData), 0644); err != nil { if err := os.WriteFile(filepath.Join(tmpDir, "meta-data"), []byte(metaData), 0644); err != nil {
panic(err) panic(err)
} }
@ -235,8 +237,8 @@ runcmd:
"-volid", "cidata", "-volid", "cidata",
"-joliet", "-joliet",
"-rock", "-rock",
userDataPath, filepath.Join(tmpDir, "user-data"),
metaDataPath, filepath.Join(tmpDir, "meta-data"),
) )
if out, err := cmd.CombinedOutput(); err != nil { if out, err := cmd.CombinedOutput(); err != nil {
@ -245,6 +247,7 @@ runcmd:
} }
func renderBoxTable(headers []string, rows [][]string) { func renderBoxTable(headers []string, rows [][]string) {
colWidths := make([]int, len(headers)) colWidths := make([]int, len(headers))
@ -490,6 +493,7 @@ func main() {
switch os.Args[1] { switch os.Args[1] {
case "create": case "create":
createVM(os.Args[2], parseArg(os.Args, "--os"), parseArg(os.Args, "--pubkey-path")) createVM(os.Args[2], parseArg(os.Args, "--os"), parseArg(os.Args, "--pubkey-path"))
updateCloudVM(os.Args[2], parseArg(os.Args, "--pubkey-path"))
case "start": case "start":
startVM(os.Args[2]) startVM(os.Args[2])
case "stop": case "stop":