2015-03-02 23:03:21 +00:00
|
|
|
package network
|
|
|
|
|
|
|
|
import (
|
2017-05-18 04:44:51 +00:00
|
|
|
"golang.org/x/net/context"
|
|
|
|
|
2018-09-16 04:55:26 +00:00
|
|
|
"github.com/rancher/os/pkg/docker"
|
|
|
|
"github.com/rancher/os/pkg/log"
|
2015-03-02 23:03:21 +00:00
|
|
|
|
2018-01-19 09:57:25 +00:00
|
|
|
"io/ioutil"
|
|
|
|
|
2015-11-30 11:06:21 +00:00
|
|
|
"github.com/docker/libnetwork/resolvconf"
|
2015-10-12 11:50:17 +00:00
|
|
|
"github.com/rancher/os/config"
|
2018-09-16 04:55:26 +00:00
|
|
|
"github.com/rancher/os/pkg/hostname"
|
|
|
|
"github.com/rancher/os/pkg/netconf"
|
2015-03-02 23:03:21 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
func Main() {
|
2016-11-23 10:49:35 +00:00
|
|
|
log.InitLogger()
|
2016-04-08 20:04:35 +00:00
|
|
|
|
2016-06-02 01:41:55 +00:00
|
|
|
cfg := config.LoadConfig()
|
2016-11-09 19:08:30 +00:00
|
|
|
ApplyNetworkConfig(cfg)
|
|
|
|
|
2017-05-18 04:44:51 +00:00
|
|
|
log.Infof("Restart syslog")
|
|
|
|
client, err := docker.NewSystemClient()
|
|
|
|
if err != nil {
|
|
|
|
log.Error(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
if err := client.ContainerRestart(context.Background(), "syslog", 10); err != nil {
|
|
|
|
log.Error(err)
|
|
|
|
}
|
|
|
|
|
2016-11-09 19:08:30 +00:00
|
|
|
select {}
|
|
|
|
}
|
2016-04-11 23:44:33 +00:00
|
|
|
|
2016-11-09 19:08:30 +00:00
|
|
|
func ApplyNetworkConfig(cfg *config.CloudConfig) {
|
2017-03-21 10:26:52 +00:00
|
|
|
log.Infof("Apply Network Config")
|
2017-08-28 04:22:50 +00:00
|
|
|
userSetDNS := len(cfg.Rancher.Network.DNS.Nameservers) > 0 || len(cfg.Rancher.Network.DNS.Search) > 0
|
2016-04-11 23:44:33 +00:00
|
|
|
|
2016-04-15 04:58:07 +00:00
|
|
|
if err := hostname.SetHostnameFromCloudConfig(cfg); err != nil {
|
2018-01-19 09:57:25 +00:00
|
|
|
log.Errorf("Failed to set hostname from cloud config: %v", err)
|
2016-04-15 04:58:07 +00:00
|
|
|
}
|
|
|
|
|
2016-04-15 17:38:31 +00:00
|
|
|
userSetHostname := cfg.Hostname != ""
|
2017-08-28 04:22:50 +00:00
|
|
|
dhcpSetDNS, err := netconf.ApplyNetworkConfigs(&cfg.Rancher.Network, userSetHostname, userSetDNS)
|
|
|
|
if err != nil {
|
2018-01-19 09:57:25 +00:00
|
|
|
log.Errorf("Failed to apply network configs(by netconf): %v", err)
|
2016-04-15 04:58:07 +00:00
|
|
|
}
|
|
|
|
|
2017-08-28 04:22:50 +00:00
|
|
|
if dhcpSetDNS {
|
|
|
|
log.Infof("DNS set by DHCP")
|
|
|
|
}
|
|
|
|
|
|
|
|
if !userSetDNS && !dhcpSetDNS {
|
|
|
|
// only write 8.8.8.8,8.8.4.4 as a last resort
|
|
|
|
log.Infof("Writing default resolv.conf - no user setting, and no DHCP setting")
|
|
|
|
if _, err := resolvconf.Build("/etc/resolv.conf",
|
|
|
|
cfg.Rancher.Defaults.Network.DNS.Nameservers,
|
|
|
|
cfg.Rancher.Defaults.Network.DNS.Search,
|
|
|
|
nil); err != nil {
|
2018-01-19 09:57:25 +00:00
|
|
|
log.Errorf("Failed to write resolv.conf (!userSetDNS and !dhcpSetDNS): %v", err)
|
2017-08-28 04:22:50 +00:00
|
|
|
}
|
|
|
|
}
|
2017-09-12 05:00:20 +00:00
|
|
|
if userSetDNS {
|
|
|
|
if _, err := resolvconf.Build("/etc/resolv.conf", cfg.Rancher.Network.DNS.Nameservers, cfg.Rancher.Network.DNS.Search, nil); err != nil {
|
2018-01-19 09:57:25 +00:00
|
|
|
log.Errorf("Failed to write resolv.conf (userSetDNS): %v", err)
|
2017-09-12 05:00:20 +00:00
|
|
|
} else {
|
|
|
|
log.Infof("writing to /etc/resolv.conf: nameservers: %v, search: %v", cfg.Rancher.Network.DNS.Nameservers, cfg.Rancher.Network.DNS.Search)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-08-28 04:22:50 +00:00
|
|
|
resolve, err := ioutil.ReadFile("/etc/resolv.conf")
|
2018-01-25 01:47:17 +00:00
|
|
|
log.Debugf("Resolve.conf == [%s], %v", resolve, err)
|
2017-08-28 04:22:50 +00:00
|
|
|
|
2017-03-30 12:29:32 +00:00
|
|
|
log.Infof("Apply Network Config SyncHostname")
|
2016-04-15 04:58:07 +00:00
|
|
|
if err := hostname.SyncHostname(); err != nil {
|
2018-01-19 09:57:25 +00:00
|
|
|
log.Errorf("Failed to sync hostname: %v", err)
|
2015-12-10 15:56:15 +00:00
|
|
|
}
|
2015-03-02 23:03:21 +00:00
|
|
|
}
|