mirror of
https://github.com/linka-cloud/d2vm.git
synced 2026-01-24 02:25:04 +00:00
feat: add --add-host flag to customize host-to-IP mapping in /etc/hosts
Signed-off-by: Adphi <philippe.adrien.nousse@gmail.com>
This commit is contained in:
@@ -113,6 +113,7 @@ var (
|
||||
d2vm.WithHostname(hostname),
|
||||
d2vm.WithDNS(dns),
|
||||
d2vm.WithDNSSearch(dnsSearch),
|
||||
d2vm.WithExtraHosts(extraHosts),
|
||||
); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -94,6 +94,7 @@ var (
|
||||
d2vm.WithHostname(hostname),
|
||||
d2vm.WithDNS(dns),
|
||||
d2vm.WithDNSSearch(dnsSearch),
|
||||
d2vm.WithExtraHosts(extraHosts),
|
||||
); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -48,9 +48,12 @@ var (
|
||||
hostname string
|
||||
dns []string
|
||||
dnsSearch []string
|
||||
hosts []string
|
||||
|
||||
extraHosts map[string]string
|
||||
)
|
||||
|
||||
func validateFlags() error {
|
||||
func validateFlags() (err error) {
|
||||
switch platform {
|
||||
case "linux/amd64":
|
||||
if bootloader == "" {
|
||||
@@ -98,6 +101,10 @@ func validateFlags() error {
|
||||
return fmt.Errorf("%s already exists", output)
|
||||
}
|
||||
}
|
||||
extraHosts, err = validateHosts(hosts...)
|
||||
if err != nil {
|
||||
return fmt.Errorf("invalid --add-host value: %w", err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -123,5 +130,19 @@ func buildFlags() *pflag.FlagSet {
|
||||
flags.StringVar(&hostname, "hostname", "localhost", "Hostname to set in the generated image")
|
||||
flags.StringSliceVar(&dns, "dns", []string{}, "DNS servers to set in the generated image")
|
||||
flags.StringSliceVar(&dnsSearch, "dns-search", []string{}, "DNS search domains to set in the generated image")
|
||||
flags.StringSliceVar(&hosts, "add-host", []string{}, "Add a custom host-to-IP mapping (host:ip) to the /etc/hosts file in the generated image")
|
||||
return flags
|
||||
}
|
||||
|
||||
func validateHosts(vals ...string) (map[string]string, error) {
|
||||
out := make(map[string]string)
|
||||
for _, val := range vals {
|
||||
// allow for IPv6 addresses in extra hosts by only splitting on first ":"
|
||||
k, v, ok := strings.Cut(val, ":")
|
||||
if !ok || k == "" {
|
||||
return nil, fmt.Errorf("bad format for add-host: %q", val)
|
||||
}
|
||||
out[k] = v
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user