Unicamp-OpenPower / minicloud

Minicloud website
https://openpower.ic.unicamp.br/minicloud/
MIT License
13 stars 2 forks source link

Hostname changing after the first reboot #29

Open doodeck opened 4 years ago

doodeck commented 4 years ago

Describe the bug Rebooting the machine changes the hostname as shown in the CLI prompt

To Reproduce Steps to reproduce the behavior:

  1. Create a new VM, e. g. from the image "openSUSE Tumbleweed ppc64le". In the creation wizard give it any name, e. g. "swarm-master-tumbleweed"

  2. Login, look at the CLI prompt:

    opensuse@swarm-master-tumbleweed:~> hostname
    swarm-master-tumbleweed
    opensuse@swarm-master-tumbleweed:~> ping `hostname`
    ping: swarm-master-tumbleweed: Name or service not known
    opensuse@swarm-master-tumbleweed:~> sudo reboot
    Connection to minicloud.parqtec.unicamp.br closed by remote host.
  3. after rebooting the hostname is different, but you still can't ping it:

opensuse@host-10-8-40-142:~> uptime
 14:41:01  up   0:05,  1 user,  load average: 1.74, 1.86, 0.91
opensuse@host-10-8-40-142:~> hostname
host-10-8-40-142
opensuse@host-10-8-40-142:~> ping `hostname`
ping: host-10-8-40-142: Name or service not known

Expected behavior The hostname shouldn't change. E.g. if you installed something, the filename is quite often embedded into configuration and after reboot it may no longer work.

Nice to have: hostname resolvable to an IP address. Sure you can easily add it to the /etc/hosts

Additional context Have tested and reproduced only in opensuse images. Not sure if other images are affected.

rpsene commented 4 years ago

@doodeck try disabling the host management via cloud-init:

sed -i -- 's/manage_etc_hosts: true/manage_etc_hosts: false/g' /etc/cloud/cloud.cfg
doodeck commented 4 years ago

Hi @rpsene

Opensuse thumbleweed distro has no entry "manage_etc_hosts":

opensuse@opensuse-17-05:~> cat /etc/cloud/cloud.cfg
# The top level settings are used as module
# and system configuration.

syslog_fix_perms: root:root
# A set of users which may be applied and/or used by various modules
# when a 'default' entry is found it will reference the 'default_user'
# from the distro configuration specified below
users:
   - default

# If this is set, 'root' will not be able to ssh in and they
# will get a message to login instead as the default $user
disable_root: true

# This will cause the set+update hostname module to not operate (if true)
preserve_hostname: false

# Example datasource config
# datasource:
#    Ec2:
#      metadata_urls: [ 'blah.com' ]
#      timeout: 5 # (defaults to 50 seconds)
#      max_wait: 10 # (defaults to 120 seconds)

# The modules that run in the 'init' stage
cloud_init_modules:
 - migrator
 - seed_random
 - bootcmd
 - write-files
 - growpart
 - resizefs
 - disk_setup
 - mounts
 - set_hostname
 - update_hostname
 - update_etc_hosts
 - ca-certs
 - rsyslog
 - users-groups
 - ssh

# The modules that run in the 'config' stage
cloud_config_modules:
 - ssh-import-id
 - locale
 - set-passwords
 - zypper-add-repo
 - ntp
 - timezone
 - disable-ec2-metadata
 - runcmd

# The modules that run in the 'final' stage
cloud_final_modules:
 - package-update-upgrade-install
 - puppet
 - chef
 - mcollective
 - salt-minion
 - rightscale_userdata
 - scripts-vendor
 - scripts-per-once
 - scripts-per-boot
 - scripts-per-instance
 - scripts-user
 - ssh-authkey-fingerprints
 - keys-to-console
 - phone-home
 - final-message
 - power-state-change

# System and/or distro specific settings
# (not accessible to handlers/transforms)
system_info:
   # This will affect which distro class gets used
   distro: opensuse
   # Default user name + that default users groups (if added/used)
   default_user:
     name: opensuse
     lock_passwd: True
     gecos: opensuse Cloud User
     groups: [cdrom, users]
     sudo: ["ALL=(ALL) NOPASSWD:ALL"]
     shell: /bin/bash
   # Other config here will be given to the distro class and/or path classes
   paths:
      cloud_dir: /var/lib/cloud/
      templates_dir: /etc/cloud/templates/
   ssh_svcname: sshd

I tried adding the entry twice on different levels in that file:

diff /etc/cloud/cloud.cfg /etc/cloud/cloud.cfg.old
73,74d72
< manage_etc_hosts: false
<
78d75
<    manage_etc_hosts: false

but still to no avail...