@@ -39,11 +39,11 @@ import (
39
39
coreapi "k8s.io/api/core/v1"
40
40
)
41
41
42
- //go:embed vlab_butane .tmpl.yaml
42
+ //go:embed vlab_server_butane .tmpl.yaml
43
43
var serverButaneTmpl string
44
44
45
- //go:embed vlab_frr_butane .tmpl.yaml
46
- var frrButaneTmpl string
45
+ //go:embed vlab_external_butane .tmpl.yaml
46
+ var externalButaneTmpl string
47
47
48
48
//go:embed hhnet.sh
49
49
var hhnet []byte
@@ -68,6 +68,7 @@ const (
68
68
VLABCmdLess = "less"
69
69
VLABCmdExpect = "expect"
70
70
71
+ VLABButane = "butane.yaml"
71
72
VLABIgnition = "ignition.json"
72
73
73
74
VLABKubeConfig = "kubeconfig"
@@ -311,21 +312,30 @@ func (c *Config) VLABRun(ctx context.Context, vlab *VLAB, opts VLABRunOpts) erro
311
312
}
312
313
313
314
if vm .Type == VMTypeServer {
314
- ign , err := serverIgnition (c .Fab , vm )
315
+ but , ign , err := serverIgnition (c .Fab , vm )
315
316
if err != nil {
316
- return fmt .Errorf ("generating ignition: %w" , err )
317
+ return fmt .Errorf ("generating server ignition: %w" , err )
318
+ }
319
+
320
+ if but != "" {
321
+ if err := os .WriteFile (filepath .Join (vmDir , VLABButane ), ign , 0o600 ); err != nil {
322
+ return fmt .Errorf ("writing server butane: %w" , err )
323
+ }
317
324
}
318
325
319
326
if err := os .WriteFile (filepath .Join (vmDir , VLABIgnition ), ign , 0o600 ); err != nil {
320
- return fmt .Errorf ("writing ignition: %w" , err )
327
+ return fmt .Errorf ("writing server ignition: %w" , err )
321
328
}
322
329
} else if vm .Type == VMTypeExternal {
323
330
but , ign , err := externalIgnition (c .Fab , vm , vlab .Externals )
324
331
if err != nil {
325
332
return fmt .Errorf ("generating external ignition: %w" , err )
326
333
}
327
- if err := os .WriteFile (filepath .Join (vmDir , "butane.yaml" ), []byte (but ), 0o600 ); err != nil {
328
- return fmt .Errorf ("writing external butane: %w" , err )
334
+
335
+ if but != "" {
336
+ if err := os .WriteFile (filepath .Join (vmDir , VLABButane ), ign , 0o600 ); err != nil {
337
+ return fmt .Errorf ("writing external butane: %w" , err )
338
+ }
329
339
}
330
340
331
341
if err := os .WriteFile (filepath .Join (vmDir , VLABIgnition ), ign , 0o600 ); err != nil {
@@ -771,15 +781,15 @@ func execHelper(ctx context.Context, baseDir string, args []string) error {
771
781
}
772
782
773
783
func externalIgnition (fab fabapi.Fabricator , vm VM , ext ExternalsCfg ) (string , []byte , error ) {
774
- but , err := tmplutil .FromTemplate ("butane" , frrButaneTmpl , map [string ]any {
784
+ but , err := tmplutil .FromTemplate ("butane-external " , externalButaneTmpl , map [string ]any {
775
785
"Hostname" : vm .Name ,
776
786
"PasswordHash" : fab .Spec .Config .Control .DefaultUser .PasswordHash ,
777
787
"AuthorizedKeys" : fab .Spec .Config .Control .DefaultUser .AuthorizedKeys ,
778
788
"ExternalVRFs" : ext .VRFs ,
779
789
"ExternalNICs" : ext .NICs ,
780
790
})
781
791
if err != nil {
782
- return "" , nil , fmt .Errorf ("butane: %w" , err )
792
+ return but , nil , fmt .Errorf ("butane: %w" , err )
783
793
}
784
794
785
795
ign , err := butaneutil .Translate (but )
@@ -790,22 +800,22 @@ func externalIgnition(fab fabapi.Fabricator, vm VM, ext ExternalsCfg) (string, [
790
800
return but , ign , nil
791
801
}
792
802
793
- func serverIgnition (fab fabapi.Fabricator , vm VM ) ([]byte , error ) {
794
- but , err := tmplutil .FromTemplate ("butane" , serverButaneTmpl , map [string ]any {
803
+ func serverIgnition (fab fabapi.Fabricator , vm VM ) (string , []byte , error ) {
804
+ but , err := tmplutil .FromTemplate ("butane-server " , serverButaneTmpl , map [string ]any {
795
805
"Hostname" : vm .Name ,
796
806
"PasswordHash" : fab .Spec .Config .Control .DefaultUser .PasswordHash ,
797
807
"AuthorizedKeys" : fab .Spec .Config .Control .DefaultUser .AuthorizedKeys ,
798
808
})
799
809
if err != nil {
800
- return nil , fmt .Errorf ("butane: %w" , err )
810
+ return but , nil , fmt .Errorf ("butane: %w" , err )
801
811
}
802
812
803
813
ign , err := butaneutil .Translate (but )
804
814
if err != nil {
805
- return nil , fmt .Errorf ("translating butane: %w" , err )
815
+ return but , nil , fmt .Errorf ("translating butane: %w" , err )
806
816
}
807
817
808
- return ign , nil
818
+ return but , ign , nil
809
819
}
810
820
811
821
func (c * Config ) vmPostProcess (ctx context.Context , vlab * VLAB , d * artificer.Downloader , vm VM , opts VLABRunOpts ) error {
0 commit comments