第一种:

openstack中直接使用 hostnamectl 修改主机名,主机名在内核中的信息会被立即修改,但是当系统重启之后,主机名又重新变成原来的主机名称了。
openstack主机名由cloud-init程序管理,要修改主机名,需要修改cloud-init的配置文件 /etc/cloud/cloud.cfg 。
主机名:如果您想要在部署之后更改主机名,请从 cloud_init_modules 列表中移除“- update_hostname”。如果不从 cloud_init_modules 列表中移除“- update_hostname”,那么在系统重新启动时,cloud-init 会将主机名重置为原始部署的值。
参考:https://www.ibm.com/support/knowledgecenter/zh/SSVSPA_1.4.0/com.ibm.powervc.cloud.help.doc/powervc_install_cloudinit_aix_cloud.html

cloud-init 是一个能够激活和初始化虚拟机的脚本,广泛适用于 OpenStack。

在捕获虚拟机之前,安装 cloud-init 初始化包。

注:如果您要安装 cloud-init 软件包以捕获虚拟机,并且已经安装激活引擎,那么必须卸载该激活引擎。要检查是否安装了激活引擎 RPM,请在虚拟机上运行 # rpm -qa | grep activation。如果存在 RPM,请参阅“卸载激活引擎”主题以了解有关如何移除这些 RPM 的详细信息。
  1. 从 AIX 工具箱安装 yum(如果尚未将其安装在虚拟机上)。有关指示信息,请参阅 yum 自述文件
  2. 确保 SSH 守护程序正在运行。
  3. 运行 yum install cloud-init。
  4. 启用并配置模块以及主机名行为。 可以启用和配置 cloud-init 定制模块,并通过修改以下位置提供的cloud.cfg 文件来控制 cloud-init 设置主机名的方式:
    /opt/freeware/etc/cloud/cloud.cfg

    • 主机名:如果您想要在部署之后更改主机名,请从 cloud_init_modules 列表中移除“- update_hostname”。如果不从 cloud_init_modules 列表中移除“- update_hostname”,那么在系统重新启动时,cloud-init 会将主机名重置为原始部署的值。

      • 通过 DNS 设置主机名:- set_hostname_from_dns 模块允许您通过使用 DNS 服务器中配置的主机名值来设置虚拟机的主机名。

        要启用此模块,请按如下所示修改 cloud.cfg 文件的 cloud_init_modules 部分:

        移除以下行:

        - set_hostname
        - update_hostname

        在同一位置添加以下行:

         - set_hostname_from_dns

        更改这些行将指示 cloud-init 使用第一个网络接口 (en0) 的 IPv4 或 IPv6 地址来执行逆向 DNS 查询,并将标准域名设置为主机名。如果逆向查询失败,该模块将使用虚拟机名称来设置主机名。这与未启用模块时设置主机名的方式相同。

        可以使用下列选项来进一步配置模块的行为。可以在 cloud.cfg 中任何模块部分外部设置这些选项。还可以在部署期间将这些选项作为 cloud-config 激活输入传入。
        set_hostname_from_interface
        允许您选择要用于逆向查询的网络接口(因此也就选择了 IP 地址)。缺省值为 en0。
        set_dns_shortname
        指定是否使用短名称来设置主机名。有效值为 True(表示使用短名称)或者 False(表示使用标准域名)。缺省值为 False。

        示例:

        此示例指定模块应使用 en0 中的 IP 地址来进行逆向查询,并将主机名设置为短名称。在“部署”页面的激活输入 > 配置脚本下添加以下输入:

        #cloud-config
        set_hostname_from_interface: en0
        set_dns_shortname: True

        有关部署映像的详细信息,请参阅“部署已捕获或已导入的映像。”

    • reset-rmc:此模块将自动重置 RMC。缺省情况下已启用此模块。
    • 复原非 rootVG 卷组:如果要从 AIX® 上的所捕获虚拟机复原非 rootVG 卷组,请在每次捕获前对虚拟机运行以下脚本:/opt/freeware/lib/cloud-init/create_pvid_to_vg_mappings.sh。然后 cloud-init restore-volume-groups 模块将在部署期间运行。缺省情况下已启用此模块。
    • 设置多路径 hcheck 时间间隔:为使用 AIX cloud-init 设置多路径 hcheck 时间间隔,缺省情况下已启用“set-multipath-hcheck-interval”模块。hcheck 时间间隔的缺省值(以秒计)为 60。要设置另一时间间隔,请在部署映像时将以下值作为用户数据传递。可在 PowerVC 用户界面“部署”页的激活输入 > 配置脚本中指定此项:#cloud-config multipath_hcheck_interval : n,其中 n 是表示时间间隔的秒数。
    • update-bootlist:此模块将从虚拟机的引导列表中移除临时虚拟光学设备,该设备用来将配置信息发送至虚拟机。缺省情况下已启用此模块。

第二种方法:

openstack中虚拟机启动后主机名设置问题,在centos7中设置hostname后怎么都是原来的hostname,根本无效。所以在centos7中除了修改hosts文件和network文件后,还需修改etc/hostname文件,具体步骤如下

第一步:修改/etc/sysconfig/network文件

        #>vi /etc/sysconfig/network

        添加或修改:

                NETWORKING=yes

                HOSTNAME=slave

第二步:修改/etc/hosts文件

        #>vi /etc/hosts

        修改 127.0.0.1这行中的 localhost.localdomain为 slave

        修改 ::1这行中的localhost.localdomain 为slave

第三步 :修改/etc/hostname文件(此步不操作,怎么修改都没有用)

        删除文件中的所有文字,在第一行添加slave

第四步:重启并验证

       #>reboot -f 

       #> hostnamectl

重启后,发现虚拟机的名字,还是和原来的创建虚拟机时的名字一样,

[root@slave1 ~]# hostname
slave1.novalocal
修改文件:
[root@slave1 ~]# cat /etc/hosts
127.0.0.1 localhost node1 slave1.novalocal
::1 localhost node1 slave1.novalocal
并且/etc/hosts文件中不能有空行。
再重启后名字改成node1。 其它内容: /etc/sysconfig/network设定主机名与网卡启动、网关配置 [root@muban ~]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=muban
1
2
3
修改主机名: vi /etc/sysconfig/network 修改HOSTNAME(永久改)
hostname再修改(临时改) 修改了/etc/sysconfig/network下的HOSTNAME后,然后使用hostname命令使其生效。但是需要注意的是当前会话还是不会变化,但是后续新建会话会生效。 
结合永久性修改和临时性修改hostname,使其不必重启Linux服务器 结论:/etc/sysconfig/network 确实是hostname的配置文件,hostname的值跟该配置文件中的HOSTNAME有一定的关联关系,但是没有必然关系,hostname的值来自内核参数/proc/sys/kernel/hostname,如果我通过命令sysctl kernel.hostname=Test修改了内核参数,那么hostname就变为了Test了。   在CentOS中,有三种定义的主机名:静态的(static),瞬态的(transient),和灵活的(pretty)。“静态”主机名也称为内核主机名,是系统在启动时从/etc/hostname自动初始化的主机名。“瞬态”主机名是在系统运行时临时分配的主机名,例如,通过DHCP或mDNS服务器分配。静态主机名和瞬态主机名都遵从作为互联网域名同样的字符限制规则。而另一方面,“灵活”主机名则允许使用自由形式(包括特殊/空白字符)的主机名,以展示给终端用户(如Linuxidc)。 在CentOS 7中,有个叫hostnamectl的命令行工具,它允许你查看或修改与主机名相关的配置。 1.要查看主机名相关的设置:
[root@localhost ~]# hostnamectl
Static hostname: localhost.localdomain
Icon name: computer
Chassis: n/a
Machine ID: 80a4fa4970614cf6be9597ecd6f097a9
Boot ID: 28420e272e1847a583718262758bd0f7
Virtualization: vmware
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-123.el7.x86_64
Architecture: x86_64
或 [root@localhost ~]# hostnamectl status
Static hostname: localhost.localdomain
Icon name: computer
Chassis: n/a
Machine ID: 80a4fa4970614cf6be9597ecd6f097a9
Boot ID: 28420e272e1847a583718262758bd0f7
Virtualization: vmware
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-123.el7.x86_64
Architecture: x86_64 2.只查看静态、瞬态或灵活主机名,分别使用“--static”,“--transient”或“--pretty”选项。
[root@localhost ~]# hostnamectl --static
localhost.localdomain
[root@localhost ~]# hostnamectl --transient
localhost.localdomain
[root@localhost ~]# hostnamectl --pretty 3.要同时修改所有三个主机名:静态、瞬态和灵活主机名:
[root@localhost ~]# hostnamectl set-hostname Linuxidc
[root@localhost ~]# hostnamectl --pretty
Linuxidc
[root@localhost ~]# hostnamectl --static
Linuxidc
[root@localhost ~]# hostnamectl --transient
Linuxidc 就像上面展示的那样,在修改静态/瞬态主机名时,任何特殊字符或空白字符会被移除,而提供的参数中的任何大写字母会自动转化为小写。一旦修改了静态主机名,/etc/hostname 将被自动更新。然而,/etc/hosts 不会更新以保存所做的修改,所以你每次在修改主机名后一定要手动更新/etc/hosts,之后再重启CentOS 7。否则系统再启动时会很慢。 4.手动更新/etc/hosts vim /etc/hosts 127.0.0.1 Linuxidc hunk_zhu
#127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain
::1 localhost localhost.localdomain localhost6 localhost6.localdomai 5.重启CentOS 7 之后(reboot -f ),
[root@Linuxidc ~]# hostname
Linuxidc
[root@hunk_zhu ~]# hostnamectl --transient
Linuxidc
[root@hunk_zhu ~]# hostnamectl --static
Linuxidc
[root@hunk_zhu ~]# hostnamectl --pretty
Linuxidc 6.如果你只想修改特定的主机名(静态,瞬态或灵活),你可以使用“--static”,“--transient”或“--pretty”选项。
例如,要永久修改主机名,你可以修改静态主机名:
[root@localhost ~]# hostnamectl --static set-hostname Linuxidc
重启CentOS 7 之后(reboot -f ),
[root@Linuxidc ~]# hostnamectl --static
Linuxidc
[root@Hunk_zhu ~]# hostnamectl --transient
Linuxidc
[root@Hunk_zhu ~]# hostnamectl --pretty
Linuxidc
[root@Hunk_zhu ~]# hostname 其实,你不必重启机器以激活永久主机名修改。上面的命令会立即修改内核主机名。注销并重新登入后在命令行提示来观察新的静态主机名。

  

022-OpenStack 中虚拟机hostname问题的更多相关文章

  1. OpenStack中虚拟机获取不到IP地址的解决方法

    OpenStack源码交流群: 538850354 系统环境: centos6.5 + icehouse多节点部署 问题描述: 使用测试镜像cirros,虚拟机实例可以正常启动,但是不能从IP池中获取 ...

  2. openstack中虚拟机和其网络的联系方法 instance and network

    instance和network的连接关系: 在neutron数据库中,ports存储了instance和端口的关系,其中device_id表示了instance的id,在nova数据库中的insta ...

  3. openstack中虚拟机怎么与物理机通信

    How-to-connection-ns-outside 环境配置 网络接口 vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 TYPE ...

  4. 也谈OpenStack中的虚拟机HA

    OpenStack是一个旨在为公共及私有云的建设与管理提供软件的开源项目. 它的社区拥有超过130家企业及1350位开发人员,这些机构与个人都将OpenStack作为基础设施即服务(IaaS)资源的通 ...

  5. 034-openstack中虚拟机启动后主机名设置问题

    openstack中虚拟机启动后主机名设置问题,在centos7中设置hostname后怎么都是原来的hostname,根本无效. 方法一: 在centos7中除了修改hosts文件和network文 ...

  6. OpenStack中Keystone的基本概念理解

    原文http://www.kankanews.com/ICkengine/archives/10788.shtml Keystone简介 Keystone(OpenStack Identity Ser ...

  7. openstack中彻底删除计算节点的操作记录

    在使用openstack的过程中,我们经常会添加好几台计算节点来部署虚拟机,在后续使用中由于某些原因,一些计算节点出现了问题,需要将这些出了问题的计算节点从openstack的控制节点中踢出去!但是很 ...

  8. OpenStack中memcached的使用和实现

    概述 主要分享下个人对Liberty版本openstack中cache使用的理解,由于作者水平有限,难免有所错误,疏漏,还望批评指正. openstack中可以使用cache层来缓存数据,Libert ...

  9. openstack中的环境准备

    openstack中环境准备基于Ubuntu系统 author:headsen chen   2017-10-13  11:51:50 个人原创,转载请注明作者,出处. 6 apt-get insta ...

随机推荐

  1. TCP与UDP的对比分析

    转自该地址:https://blog.csdn.net/birdie_l/article/details/78067896 TCP: 优点:可靠 稳定 TCP的可靠体现在TCP在传输数据之前,会有三次 ...

  2. vue中下载excel的使用,后端链接两种情况,一个是链接,一个是文件流

    vue中下载excel使用 一.这是第一种情况,后台链接地址返回的是一个url,这个时候我只要在导出按钮上绑定exportData()这个事件方法就好了 exportData() {     this ...

  3. 使用mybatis-generator-core-1.3.2.jar根据数据库表自动生成实体

    1 导入mybatis-generator-core-1.3.2.jar 2配置mbg.xml <?xml version="1.0" encoding="UTF- ...

  4. easyhook源码分析一

    easyhook简要说明: easyhook是一个开源的hook库(http://easyhook.github.io/),其支持托管代码(.NET)和非托管代码(C/C++)hook,这里只分析了其 ...

  5. Git-Runoob:Git 分支管理

    ylbtech-Git-Runoob:Git 分支管理 1.返回顶部 1. Git 分支管理 几乎每一种版本控制系统都以某种形式支持分支.使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同 ...

  6. Docker安装CentOS7

    1. 拉取镜像 docker pull centos:centos7 2. 启动镜像创建容器 docker run -d -p 36622:22 -p 36680:80 --name centos7- ...

  7. note.js使用express创建项目的步骤以及ip和端口配置

    1.安装express npm install -g express 2.创建项目 express -e 项目名称 3.打开cmd进入项目目录安装依赖 npm install 4.打开配置文件./bi ...

  8. 【Linux开发】CCS远程调试ARM,AM4378

    注意一点:CCS也是安装在Linux主机上的,不是安装在Windows上的,我在Windows上做出了很多尝试,但最终也不没明白究竟要用怎样的格式去执行在ARM-Linux应用程序,out文件ELF可 ...

  9. kafka学习(二)

    创建kafka生产者 要往kafka写入消息,首先要创建一个生产者对象,并设置一些熟悉.kafka生产者有3个必选的属性.   1.bootstrap.servers 该属性指定broker的地址清单 ...

  10. java程序启动脚本

    #!/bin/bash appName=`ls|grep .jar$` if [ -z $appName ] then echo "Please check that this script ...