diff --git a/internal/app/wwctl/build/runtime-overlay/runtime-overlay.go b/internal/app/wwctl/build/runtime-overlay/runtime-overlay.go index 6e553eee..49be8543 100644 --- a/internal/app/wwctl/build/runtime-overlay/runtime-overlay.go +++ b/internal/app/wwctl/build/runtime-overlay/runtime-overlay.go @@ -16,6 +16,15 @@ import ( "text/template" ) +func fileInclude(path string) string { + wwlog.Printf(wwlog.DEBUG, "Including file into template: %s\n", path) + content, err := ioutil.ReadFile(path) + if err != nil { + wwlog.Printf(wwlog.ERROR, "Template include: %s\n", err) + } + return strings.TrimSuffix(string(content), "\n") +} + func Build(nodeList []assets.NodeInfo, force bool) error { wwlog.Printf(wwlog.INFO, "Building Runtime Overlays:\n") wwlog.SetIndent(4) @@ -78,7 +87,7 @@ func Build(nodeList []assets.NodeInfo, force bool) error { destFile := strings.TrimSuffix(location, ".ww") - tmpl, err := template.ParseGlob(path.Join(OverlayDir, destFile) + ".ww*") + tmpl, err := template.New(path.Base(location)).Funcs(template.FuncMap{"Include": fileInclude}).ParseGlob(path.Join(OverlayDir, destFile + ".ww*")) if err != nil { wwlog.Printf(wwlog.ERROR, "%s\n", err) return err diff --git a/internal/app/wwctl/build/system-overlay/system-overlay.go b/internal/app/wwctl/build/system-overlay/system-overlay.go index e20d1e1c..f4291747 100644 --- a/internal/app/wwctl/build/system-overlay/system-overlay.go +++ b/internal/app/wwctl/build/system-overlay/system-overlay.go @@ -16,6 +16,15 @@ import ( "text/template" ) +func fileInclude(path string) string { + wwlog.Printf(wwlog.DEBUG, "Including file into template: %s\n", path) + content, err := ioutil.ReadFile(path) + if err != nil { + wwlog.Printf(wwlog.ERROR, "Template include: %s\n", err) + } + return strings.TrimSuffix(string(content), "\n") +} + func Build(nodeList []assets.NodeInfo, force bool) error { wwlog.Printf(wwlog.INFO, "Building System Overlays:\n") wwlog.SetIndent(4) @@ -78,7 +87,7 @@ func Build(nodeList []assets.NodeInfo, force bool) error { destFile := strings.TrimSuffix(location, ".ww") - tmpl, err := template.ParseGlob(path.Join(OverlayDir, destFile) + ".ww*") + tmpl, err := template.New(path.Base(location)).Funcs(template.FuncMap{"include": fileInclude}).ParseGlob(path.Join(OverlayDir, destFile + ".ww*")) if err != nil { wwlog.Printf(wwlog.ERROR, "%s\n", err) return err diff --git a/internal/app/wwctl/build/vnfs/vnfs.go b/internal/app/wwctl/build/vnfs/vnfs.go index aa044208..1fa9add1 100644 --- a/internal/app/wwctl/build/vnfs/vnfs.go +++ b/internal/app/wwctl/build/vnfs/vnfs.go @@ -12,7 +12,7 @@ var buildForce bool func Build(nodeList []assets.NodeInfo, force bool) (error) { set := make(map[string]int) - wwlog.Printf(wwlog.INFO, "Importing VNFS Images:\n") + wwlog.Printf(wwlog.INFO, "Building and Importing VNFS Images:\n") wwlog.SetIndent(4) buildForce = force diff --git a/internal/pkg/assets/assets.go b/internal/pkg/assets/assets.go index 6c19acdf..8415232d 100644 --- a/internal/pkg/assets/assets.go +++ b/internal/pkg/assets/assets.go @@ -2,9 +2,9 @@ package assets import ( "fmt" + "github.com/hpcng/warewulf/internal/pkg/vnfs" "gopkg.in/yaml.v2" "io/ioutil" - "path" "strings" // "os" @@ -140,7 +140,8 @@ func FindAllNodes() ([]NodeInfo, error) { if strings.HasPrefix(n.Vnfs, "docker://") { //TODO: This is a kludge and shouldn't be done here. We need to go back // and do this from a "vnfs" interface or package - n.VnfsDir = LocalStateDir + "/oci/vnfs/name/" + path.Base(n.Vnfs) + v := vnfs.New(n.Vnfs) + n.VnfsDir = v.Root() } else { n.VnfsDir = n.Vnfs } diff --git a/internal/pkg/assets/template.go b/internal/pkg/assets/template.go new file mode 100644 index 00000000..24f43134 --- /dev/null +++ b/internal/pkg/assets/template.go @@ -0,0 +1,21 @@ +package assets + + + +type WWTemplate struct { + GroupName string + HostName string + DomainName string + Fqdn string + Vnfs string + VnfsDir string + Ipxe string + SystemOverlay string + RuntimeOverlay string + KernelVersion string + NetDevs map[string]netDevs +} + +func (t WWTemplate) Import(file string) { + +} \ No newline at end of file diff --git a/internal/pkg/vnfs/vnfs.go b/internal/pkg/vnfs/vnfs.go index 2868280e..433afcdf 100644 --- a/internal/pkg/vnfs/vnfs.go +++ b/internal/pkg/vnfs/vnfs.go @@ -41,7 +41,6 @@ func (self *VnfsObject) NameClean() string { if strings.HasPrefix(self.SourcePath, "/") { return path.Base(self.SourcePath) } - uri := strings.Split(self.SourcePath, "://") return strings.ReplaceAll(uri[1], "/", "_") diff --git a/overlays/runtime/default/etc/group.in b/overlays/runtime/default/etc/group.in deleted file mode 100644 index e1ba0627..00000000 --- a/overlays/runtime/default/etc/group.in +++ /dev/null @@ -1,2 +0,0 @@ -#WWINCLUDE @VNFSDIR@/etc/group -#WWINCLUDE /etc/group diff --git a/overlays/runtime/default/etc/group.ww b/overlays/runtime/default/etc/group.ww new file mode 100644 index 00000000..a0ea3854 --- /dev/null +++ b/overlays/runtime/default/etc/group.ww @@ -0,0 +1,2 @@ +{{Include (printf "%s%s" .VnfsDir "/etc/group")}} +{{Include "/etc/passwd"}} diff --git a/overlays/runtime/default/etc/passwd.in b/overlays/runtime/default/etc/passwd.in deleted file mode 100644 index 22100da3..00000000 --- a/overlays/runtime/default/etc/passwd.in +++ /dev/null @@ -1,3 +0,0 @@ -root::0:0:root:/root:/bin/bash -#WWINCLUDE @VNFSDIR@/etc/passwd -#WWINCLUDE /etc/passwd diff --git a/overlays/runtime/default/etc/passwd.ww b/overlays/runtime/default/etc/passwd.ww new file mode 100644 index 00000000..63234ce6 --- /dev/null +++ b/overlays/runtime/default/etc/passwd.ww @@ -0,0 +1,3 @@ +root::0:0:root:/root:/bin/bash +{{Include (printf "%s%s" .VnfsDir "/etc/passwd")}} +{{Include "/etc/passwd"}} diff --git a/overlays/runtime/default/etc/ww_hello b/overlays/runtime/default/etc/ww_hello deleted file mode 100644 index 6e4a6b48..00000000 --- a/overlays/runtime/default/etc/ww_hello +++ /dev/null @@ -1 +0,0 @@ -Hello from Warewulf diff --git a/overlays/runtime/default/root/.ssh/authorized_keys.in b/overlays/runtime/default/root/.ssh/authorized_keys.in deleted file mode 100644 index f0248c5e..00000000 --- a/overlays/runtime/default/root/.ssh/authorized_keys.in +++ /dev/null @@ -1 +0,0 @@ -#WWINCLUDE /root/.ssh/authorized_keys diff --git a/overlays/runtime/default/root/.ssh/authorized_keys.ww b/overlays/runtime/default/root/.ssh/authorized_keys.ww new file mode 100644 index 00000000..01b8c625 --- /dev/null +++ b/overlays/runtime/default/root/.ssh/authorized_keys.ww @@ -0,0 +1 @@ +{{Include "/root/.ssh/authorized_keys")}} diff --git a/overlays/system/default/etc/hostname.in b/overlays/system/default/etc/hostname.in deleted file mode 100644 index 77515887..00000000 --- a/overlays/system/default/etc/hostname.in +++ /dev/null @@ -1 +0,0 @@ -@HOSTNAME@ diff --git a/overlays/system/default/etc/hostname.ww b/overlays/system/default/etc/hostname.ww new file mode 100644 index 00000000..783b7f08 --- /dev/null +++ b/overlays/system/default/etc/hostname.ww @@ -0,0 +1 @@ +{{.Fqdn}} diff --git a/overlays/system/default/etc/sysconfig/network-scripts/ifcfg-eth0.in b/overlays/system/default/etc/sysconfig/network-scripts/ifcfg-eth0.in index f0c09f54..9b27c5af 100644 --- a/overlays/system/default/etc/sysconfig/network-scripts/ifcfg-eth0.in +++ b/overlays/system/default/etc/sysconfig/network-scripts/ifcfg-eth0.in @@ -1,8 +1,8 @@ -DEVICE=@ETH0:NAME@ -NAME=@ETH0:NAME@ -IPADDR=@ETH0:IPADDR@ -NETMASK=@ETH0:NETMASK@ -GATEWAY=@ETH0:GATEWAY@ -HWADDR=@ETH0:HWADDR@ +DEVICE=eth0 +NAME=eth0 +IPADDR={{.NetDevs.eth0.Ipaddr}} +NETMASK={{.NetDevs.eth0.Netmask}} +GATEWAY={{.NetDevs.eth0.Gateway}} +HWADDR={{.NetDevs.eth0.Hwaddr}} BOOTPROTO=static ONBOOT=yes diff --git a/overlays/system/default/etc/sysconfig/network.in b/overlays/system/default/etc/sysconfig/network.in deleted file mode 100644 index 4e0b31ac..00000000 --- a/overlays/system/default/etc/sysconfig/network.in +++ /dev/null @@ -1,2 +0,0 @@ -NETWORKING=yes -HOSTNAME=@FQDN@ diff --git a/overlays/system/default/etc/sysconfig/network.ww b/overlays/system/default/etc/sysconfig/network.ww new file mode 100644 index 00000000..e26cc305 --- /dev/null +++ b/overlays/system/default/etc/sysconfig/network.ww @@ -0,0 +1,2 @@ +NETWORKING=yes +HOSTNAME={{.Fqdn}} diff --git a/overlays/system/default/etc/warewulf/warewulf.conf.in b/overlays/system/default/etc/warewulf/warewulf.conf.in deleted file mode 100644 index f13f49de..00000000 --- a/overlays/system/default/etc/warewulf/warewulf.conf.in +++ /dev/null @@ -1 +0,0 @@ -#WWINCLUDE /etc/warewulf/warewulf.conf diff --git a/overlays/system/default/etc/warewulf/warewulf.conf.ww b/overlays/system/default/etc/warewulf/warewulf.conf.ww new file mode 100644 index 00000000..df0e916e --- /dev/null +++ b/overlays/system/default/etc/warewulf/warewulf.conf.ww @@ -0,0 +1 @@ +{{Include "/etc/warewulf/warewulf.conf"}} diff --git a/overlays/system/default/root/.ssh/authorized_keys b/overlays/system/default/root/.ssh/authorized_keys deleted file mode 100644 index e69de29b..00000000