如何在 Openstack Heat 模板中使用带句号的主机名?

How do I have hostnames with full stop in Openstack Heat templates?

我试图将主机名设置为服务器的完整 DNS 名称,但如果我包含句号,它似乎会从末尾被截断。

这是我设置主机名的方式:

properties:
      name: sample-name.domain.com

但是,这给出了 sample-name 的主机名。全名正确显示在实例列表中。

我查看了 /var/log/cloud-init.log,发现主机名设置为 "sample-name",无论您是将名称设置为 "sample-name.domain.com" 还是 "sample-name"属性。

因此,我们可以在 heat 模板中使用 "user_data" 设置主机名,如下所示:

user_data:
            #!/bin/bash
            sudo bash -c "echo 'sample-name.domain.com' > /etc/hostname"
            sudo bash -c "hostname sample-name.domain.com"

这是我使用的整体解决方案,基于@Tejaswi 的:

user_data:
  #!/bin/bash -v
  sudo echo "127.0.0.1 sample-name.domain.com" >> /etc/hosts
  sudo hostname sample-name.domain.com
  sudo echo sample-name.domain.com > /etc/hostname
  sudo sed -i 's/preserve_hostname: false/preserve_hostname: true/g' /etc/cloud/cloud.cfg

我还更新了 /etc/hosts 文件,并启用了 preserve_hostname cloud-init 属性,这样它就不会在每次重启时重置。