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

2020-03-17  本文已影响0人  ragpo

概述

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

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

其中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;
        }
}
# 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
# 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;
        }
}
上一篇 下一篇

猜你喜欢

热点阅读