diff --git a/cmd/network/network.go b/cmd/network/network.go index d7f9b50c..ca4514bf 100644 --- a/cmd/network/network.go +++ b/cmd/network/network.go @@ -46,7 +46,15 @@ func Main() { log.Fatal(err) } - if _, err := resolvconf.Build("/etc/resolv.conf", cfg.Rancher.Network.Dns.Nameservers, cfg.Rancher.Network.Dns.Search, nil); err != nil { + nameservers := cfg.Rancher.Network.Dns.Nameservers + search := cfg.Rancher.Network.Dns.Search + userSetDns := len(nameservers) > 0 || len(search) > 0 + if !userSetDns { + nameservers = cfg.Rancher.DefaultNetwork.Dns.Nameservers + search = cfg.Rancher.DefaultNetwork.Dns.Search + } + + if _, err := resolvconf.Build("/etc/resolv.conf", nameservers, search, nil); err != nil { log.Error(err) } @@ -58,8 +66,8 @@ func Main() { log.Error(err) } - dhcpHostname := cfg.Hostname == "" - if err := netconf.RunDhcp(&cfg.Rancher.Network, dhcpHostname); err != nil { + userSetHostname := cfg.Hostname != "" + if err := netconf.RunDhcp(&cfg.Rancher.Network, !userSetHostname, !userSetDns); err != nil { log.Error(err) } diff --git a/config/types.go b/config/types.go index 7854df55..c29619a3 100644 --- a/config/types.go +++ b/config/types.go @@ -90,6 +90,7 @@ type RancherConfig struct { ServicesInclude map[string]bool `yaml:"services_include,omitempty"` Modules []string `yaml:"modules,omitempty"` Network netconf.NetworkConfig `yaml:"network,omitempty"` + DefaultNetwork netconf.NetworkConfig `yaml:"default_network,omitempty"` Repositories Repositories `yaml:"repositories,omitempty"` Ssh SshConfig `yaml:"ssh,omitempty"` State StateConfig `yaml:"state,omitempty"` diff --git a/init/init.go b/init/init.go index ff35d44e..cc549f8d 100644 --- a/init/init.go +++ b/init/init.go @@ -164,8 +164,8 @@ func getLaunchConfig(cfg *config.CloudConfig, dockerCfg *config.DockerConfig) (* args := dockerlaunch.ParseConfig(&launchConfig, append(dockerCfg.Args, dockerCfg.ExtraArgs...)...) - launchConfig.DnsConfig.Nameservers = cfg.Rancher.Network.Dns.Nameservers - launchConfig.DnsConfig.Search = cfg.Rancher.Network.Dns.Search + launchConfig.DnsConfig.Nameservers = cfg.Rancher.DefaultNetwork.Dns.Nameservers + launchConfig.DnsConfig.Search = cfg.Rancher.DefaultNetwork.Dns.Search launchConfig.Environment = dockerCfg.Environment launchConfig.EmulateSystemd = true diff --git a/os-config.tpl.yml b/os-config.tpl.yml index 1ea550f2..dd7e4433 100644 --- a/os-config.tpl.yml +++ b/os-config.tpl.yml @@ -61,7 +61,7 @@ rancher: cloud_init: datasources: - configdrive:/media/config-2 - network: + default_network: dns: nameservers: [8.8.8.8, 8.8.4.4] repositories: diff --git a/tests/integration/assets/test_09/cloud-config.yml b/tests/integration/assets/test_09/cloud-config.yml index 4303c6cc..79f6d169 100644 --- a/tests/integration/assets/test_09/cloud-config.yml +++ b/tests/integration/assets/test_09/cloud-config.yml @@ -22,7 +22,6 @@ rancher: mode: 1 address: 123.123.123.124/32 dns: - override: true search: - mydomain.com - example.com diff --git a/trash.yml b/trash.yml index dada9bf9..c75d03d8 100644 --- a/trash.yml +++ b/trash.yml @@ -70,7 +70,7 @@ import: version: v1.10.3 - package: github.com/rancher/netconf - version: 6a771a0593c146f35634c405ab9ccfec50db65e1 + version: 7880fdeac0923a05b86a0b5774b4dc96a5749d76 - package: github.com/ryanuber/go-glob version: 0067a9abd927e50aed5190662702f81231413ae0 diff --git a/vendor/github.com/rancher/netconf/netconf_linux.go b/vendor/github.com/rancher/netconf/netconf_linux.go index 99f08153..c058dbe6 100644 --- a/vendor/github.com/rancher/netconf/netconf_linux.go +++ b/vendor/github.com/rancher/netconf/netconf_linux.go @@ -182,7 +182,7 @@ func ApplyNetworkConfigs(netCfg *NetworkConfig) error { return err } -func RunDhcp(netCfg *NetworkConfig, dhcpHostname bool) error { +func RunDhcp(netCfg *NetworkConfig, setHostname, setDns bool) error { links, err := netlink.LinkList() if err != nil { return err @@ -200,7 +200,7 @@ func RunDhcp(netCfg *NetworkConfig, dhcpHostname bool) error { for iface, args := range dhcpLinks { wg.Add(1) go func(iface, args string) { - runDhcp(netCfg, iface, args, dhcpHostname) + runDhcp(netCfg, iface, args, setHostname, setDns) wg.Done() }(iface, args) } @@ -209,7 +209,7 @@ func RunDhcp(netCfg *NetworkConfig, dhcpHostname bool) error { return err } -func runDhcp(netCfg *NetworkConfig, iface string, argstr string, dhcpHostname bool) { +func runDhcp(netCfg *NetworkConfig, iface string, argstr string, setHostname, setDns bool) { log.Infof("Running DHCP on %s", iface) args := []string{} if argstr != "" { @@ -223,12 +223,12 @@ func runDhcp(netCfg *NetworkConfig, iface string, argstr string, dhcpHostname bo args = defaultDhcpArgs } - if netCfg.Dns.Override { - args = append(args, "--nohook", "resolv.conf") + if setHostname { + args = append(args, "-e", "force_hostname=true") } - if dhcpHostname { - args = append(args, "-e", "force_hostname=true") + if !setDns { + args = append(args, "--nohook", "resolv.conf") } args = append(args, iface) diff --git a/vendor/github.com/rancher/netconf/types.go b/vendor/github.com/rancher/netconf/types.go index fa7f2d0c..1f17e972 100644 --- a/vendor/github.com/rancher/netconf/types.go +++ b/vendor/github.com/rancher/netconf/types.go @@ -26,7 +26,6 @@ type InterfaceConfig struct { } type DnsConfig struct { - Override bool `yaml:"override"` Nameservers []string `yaml:"nameservers,flow,omitempty"` Search []string `yaml:"search,flow,omitempty"` }