f-11: code: move start and stop metadata #11

Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
This commit is contained in:
GnomeZworc 2026-01-07 23:16:58 +01:00
commit a8ffeebb72
Signed by: nicolas.boufideline
GPG key ID: 4406BBBF8845D632
9 changed files with 46 additions and 30 deletions

View file

@ -0,0 +1,26 @@
package metadata
import (
"git.g3e.fr/syonad/two/pkg/systemd"
"github.com/dgraph-io/badger/v4"
)
func StartMetadata(config NoCloudConfig, db *badger.DB, dryrun bool) {
service, _ := systemd.New()
defer service.Close()
LoadNcCloudInDB(config, db)
if !dryrun {
service.Start("metadata@" + config.Name)
}
}
func StopMetadata(vm_name string, db *badger.DB, dryrun bool) {
service, _ := systemd.New()
defer service.Close()
UnLoadNoCloudInDB(vm_name, db)
if !dryrun {
service.Stop("metadata@" + vm_name)
}
}

View file

@ -0,0 +1,46 @@
package metadata
import (
"bytes"
"embed"
"text/template"
"git.g3e.fr/syonad/two/pkg/db/kv"
"github.com/dgraph-io/badger/v4"
)
//go:embed templates/*.tmpl
var templateFS embed.FS
func RenderConfig(path string, cfg NoCloudConfig) (string, error) {
tpl, err := template.ParseFS(templateFS, path)
if err != nil {
return "", err
}
var buf bytes.Buffer
if err := tpl.Execute(&buf, cfg); err != nil {
return "", err
}
return buf.String(), nil
}
func LoadNcCloudInDB(config NoCloudConfig, db *badger.DB) {
meta_data, _ := RenderConfig("templates/meta-data.tmpl", config)
user_data, _ := RenderConfig("templates/user-data.tmpl", config)
network_config, _ := RenderConfig("templates/network-config.tmpl", config)
vendor_data, _ := RenderConfig("templates/vendor-data.tmpl", config)
kv.AddInDB(db, "metadata/"+config.Name+"/meta-data", meta_data)
kv.AddInDB(db, "metadata/"+config.Name+"/user-data", user_data)
kv.AddInDB(db, "metadata/"+config.Name+"/network-config", network_config)
kv.AddInDB(db, "metadata/"+config.Name+"/vendor-data", vendor_data)
kv.AddInDB(db, "metadata/"+config.Name+"/vpc", config.VpcName)
kv.AddInDB(db, "metadata/"+config.Name+"/bind_ip", config.BindIP)
kv.AddInDB(db, "metadata/"+config.Name+"/bind_port", config.BindPort)
}
func UnLoadNoCloudInDB(vm_name string, db *badger.DB) {
kv.DeleteInDB(db, "metadata/"+vm_name)
}

View file

@ -18,3 +18,12 @@ type ServerConfig struct {
ConfFile string
VmName string
}
type NoCloudConfig struct {
VpcName string
BindIP string
BindPort string
Name string
Password string
SSHKEY string
}

View file

@ -0,0 +1,2 @@
instance-id: {{ .Name }}
local-hostname: {{ .Name }}

View file

@ -0,0 +1,4 @@
version: 2
ethernets:
eth0:
dhcp4: true

View file

@ -0,0 +1,3 @@
#!/bin/sh
passwd -d root

View file

@ -0,0 +1,13 @@
#cloud-config
users:
- name: syonad
lock_passwd: false
gecos: alpine Cloud User
groups: [adm, wheel]
doas:
- permit nopass syonad
sudo: ["ALL=(ALL) NOPASSWD:ALL"]
shell: /bin/ash
passwd: "{{ .Password }}"
ssh_authorized_keys:
- "{{ .SSHKEY }}"