1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- package hostname
- import (
- "bufio"
- "io/ioutil"
- "os"
- "strings"
- "syscall"
- "github.com/rancher/os/config"
- )
- func SetHostnameFromCloudConfig(cc *config.CloudConfig) error {
- var hostname string
- if cc.Hostname == "" {
- hostname = cc.Rancher.Defaults.Hostname
- } else {
- hostname = cc.Hostname
- }
- if hostname == "" {
- return nil
- }
- // set hostname
- return syscall.Sethostname([]byte(hostname))
- }
- func SyncHostname() error {
- hostname, err := os.Hostname()
- if err != nil {
- return err
- }
- if hostname == "" {
- return nil
- }
- hosts, err := os.Open("/etc/hosts")
- defer hosts.Close()
- if err != nil {
- return err
- }
- lines := bufio.NewScanner(hosts)
- hostsContent := ""
- for lines.Scan() {
- line := strings.TrimSpace(lines.Text())
- fields := strings.Fields(line)
- if len(fields) > 0 && fields[0] == "127.0.1.1" {
- hostsContent += "127.0.1.1 " + hostname + "\n"
- continue
- }
- hostsContent += line + "\n"
- }
- return ioutil.WriteFile("/etc/hosts", []byte(hostsContent), 0600)
- }
|