美文网首页
通过DNS或DHCP给OCP4 RHCOS设置主机名

通过DNS或DHCP给OCP4 RHCOS设置主机名

作者: ragpo | 来源:发表于2020-03-17 13:12 被阅读0次

概述

在搭建 Openshift4.3 的时候使用了 https://github.com/RedHatOfficial/ocp4-helpernode 项目进行基础环境的搭建,该项目使用了 PXE 进行 rhcos 的安装,MAC地址、IP地址、主机名会进行绑定,安装好后就会有对应的主机名,我对 rhcos 的系统主机名的配置产生了好奇,想学习一下是如何实现的,接下来分享下我的分析。

基于Mac地址的主机角色绑定

  • /etc/dhcp/dhcpd.conf

其中host字段 {} 中的内容就是mac地址和ip的绑定配置;filename和next-server指定了系统以DHCP启动的时候去哪里拉取什么文件,pxelinux.0是一个基于tftp下载的二进制文件,不是一个具体系统引导文件。

# cat /etc/dhcp/dhcpd.conf
authoritative;
ddns-update-style interim;
default-lease-time 14400;
max-lease-time 14400;

    option routers                  172.31.20.254;
    option broadcast-address        172.31.20.255;
    option subnet-mask              255.255.255.0;
    option domain-name-servers      172.31.20.81;
    option domain-name              "ocp432.example.com";

    subnet 172.31.20.0 netmask 255.255.255.0 {
    #interface ens192;
        pool {
            range 172.31.20.82 172.31.20.99;
        # Static entries
        host bootstrap { hardware ethernet 00:50:56:b7:6a:d5; fixed-address 172.31.20.82; }
        host master0 { hardware ethernet 00:50:56:b7:82:80; fixed-address 172.31.20.83; }
        host master1 { hardware ethernet 00:50:56:b7:d0:43; fixed-address 172.31.20.84; }
        host master2 { hardware ethernet 00:50:56:b7:58:3f; fixed-address 172.31.20.85; }
        host worker0 { hardware ethernet 00:50:56:b7:91:f3; fixed-address 172.31.20.86; }
        host worker1 { hardware ethernet 00:50:56:b7:6d:16; fixed-address 172.31.20.87; }
        host worker2 { hardware ethernet 00:50:56:b7:60:88; fixed-address 172.31.20.88; }
        #host test-hostname { hardware ethernet 00:50:56:b7:37:90; fixed-address 172.31.20.89; option host-name"apo"; }
        # this will not give out addresses to hosts not listed above
        deny unknown-clients;
                #allow unknown-clients;
        # this is PXE specific
        filename "pxelinux.0";
        next-server 172.31.20.81;
        }
}
  • 基于mac地址绑定角色
    01-00-50-56-b7-58-3f这个文件名是00:50:56:b7:58:3f这个mac地址变来的,也就是master2的mac地址,以01开头,- 替换 . 形成的。
# ll /var/lib/tftpboot/pxelinux.cfg/
total 32
-r-xr-xr-x. 1 root root  420 Mar 13 00:11 01-00-50-56-b7-58-3f
-rwxrwxr-x. 1 root root  432 Mar 13 11:07 01-00-50-56-b7-60-88
-r-xr-xr-x. 1 root root  431 Mar 13 00:11 01-00-50-56-b7-6a-d5
-r-xr-xr-x. 1 root root  420 Mar 13 00:11 01-00-50-56-b7-6d-16
-r-xr-xr-x. 1 root root  420 Mar 13 00:11 01-00-50-56-b7-82-80
-r-xr-xr-x. 1 root root  420 Mar 13 00:11 01-00-50-56-b7-91-f3
-r-xr-xr-x. 1 root root  420 Mar 13 00:11 01-00-50-56-b7-d0-43
-r-xr-xr-x. 1 root root 1033 Mar 13 00:11 default
  • 分析01-00-50-56-b7-58-3f文件内容:
    这其实就是一个pxe系统的引导文件,定义了从哪里拉取配置文件等信息,以及角色的定义,其实就是系统启动时候菜单选项栏相关的参数通过文件配置好。openshift4安装系统的时候另外一种是通过ISO文件启动,需要在终端console输入大量参数,目前还没发现能够复制粘贴的。
# cat /var/lib/tftpboot/pxelinux.cfg/01-00-50-56-b7-58-3f
default menu.c32
 prompt 1
 timeout 9
 ONTIMEOUT 1
 menu title ######## PXE Boot Menu ########
 label 1
 menu label ^1) Install Master Node
 menu default
 kernel rhcos/kernel
 append initrd=rhcos/initramfs.img nomodeset rd.neednet=1 coreos.inst=yes coreos.inst.install_dev=sda coreos.inst.image_url=http://172.31.20.81:8080/install/bios.raw.gz coreos.inst.ignition_url=http://172.31.20.81:8080/ignition/master.ign

通过DNS PTR记录给Linux系统注入主机名

这个属于Linux的特性,在Linux有IP但是没有主机名的时候会进行DNS的反向查找,如果能查询到自己IP对应的主机名则将其设置为自己的主机名;关于这个功能我是在GitHub提了issue才知道的。

# cat /var/named/reverse.db
$TTL 1W
@   IN  SOA ns1.ocp432.example.com. root (
            2020031502  ; serial
            3H      ; refresh (3 hours)
            30M     ; retry (30 minutes)
            2W      ; expiry (2 weeks)
            1W )        ; minimum (1 week)
    IN  NS  ns1.ocp432.example.com.
;
; syntax is "last octet" and the host must have fqdn with trailing dot
83  IN  PTR master0.ocp432.example.com.
84  IN  PTR master1.ocp432.example.com.
85  IN  PTR master2.ocp432.example.com.
;
82  IN  PTR bootstrap.ocp432.example.com.
;
81  IN  PTR api.ocp432.example.com.
81  IN  PTR api-int.ocp432.example.com.
;
86  IN  PTR worker0.ocp432.example.com.
87  IN  PTR worker1.ocp432.example.com.
88  IN  PTR worker2.ocp432.example.com.

直接通过DHCP给Linux设置主机名

在host {} 里面添加 option host-name"apo"指定主机名,filename和next-server可以不用动。

# cat /etc/dhcp/dhcpd.conf
---------------------------------------------------------------------------
        host test-hostname { hardware ethernet 00:50:56:b7:37:90; fixed-address 172.31.20.89; option host-name"apo"; }
        # this will not give out addresses to hosts not listed above
        deny unknown-clients;
                #allow unknown-clients;
        # this is PXE specific
        filename "pxelinux.0";
        next-server 172.31.20.81;
        }
}

相关文章

网友评论

      本文标题:通过DNS或DHCP给OCP4 RHCOS设置主机名

      本文链接:https://www.haomeiwen.com/subject/jsvzehtx.html