使用 foreman 配置具有静态 IP 的虚拟机

使用 foreman 配置具有静态 IP 的虚拟机

我正在尝试使用 Foreman 1.5.1 在 vmware 上为带有静态 IP 地址的 Centos6.5 虚拟机配置。但是,虚拟机一直使用 dhcp 地址进行配置。我正在进行基于网络的安装。我创建了一个子网,其中包含有关网络的所有信息(子网范围、网关、dns 服务器等)。在 foreman 中,我为该子网启用了 dhcp 智能代理(只要 dhcp 服务器正在运行,禁用它仍会产生相同的结果)

以下是配置模板中的相关行:

启动 pxe:

<% if @host.operatingsystem.name == 'Fedora' and @host.operatingsystem.major.to_i > 16 -%>`
append initrd=<%= @initrd %> ks=<%= foreman_url('provision')%>?static=yes ks.device=bootif network ks.sendmac ip=<%= @host.ip %> netmask=<%= @host.subnet.mask %> gateway=<%= @host.subnet.gateway %> dns=<%= @host.subnet.dns_primary %>
<% elsif @host.operatingsystem.name != 'Fedora' and @host.operatingsystem.major.to_i >= 7 -%>
`append initrd=<%= @initrd %> ks=<%= foreman_url('provision')%>?static=yes network ks.sendmac ip=        <%= @host.ip %> netmask=<%= @host.subnet.mask %> gateway=<%= @host.subnet.gateway %> dns=<%= @host.subnet.dns_primary %>
<% else -%>
append initrd=<%= @initrd %> ks=<%= foreman_url('provision')%>?static=yes ksdevice=bootif  network kssendmac ip=<%= @host.ip %> netmask=<%= @host.subnet.mask %> gateway=<%= @host.subnet.gateway %> dns=<%= @host.subnet.dns_primary %> 
<% end -%>

kickstart 默认:

network --bootproto <%= @static ? "static --ip=#{@host.ip} --netmask=#{@host.subnet.mask} --gateway=#{@host.subnet.gateway} --nameserver=#{[@host.subnet.dns_primary,@host.subnet.dns_secondary].reject{|n| n.blank?}.join(',')}" : 'dhcp' %> --hostname <%= @host %>

一切正常,服务器在 vmware 中创建,使用 pxe 安装,在 foreman 中注册等。除了 ip 地址不是静态的。

我在这里做错了什么?

安装后的实际ks文件包含以下行:

network --onboot yes --device eth0 --mtu=1500 --bootproto dhcp --hostname test3.example.net 

这很奇怪,因为我添加?static=yes了 ks url。(我认为这是这样做的方法?)

答案1

我通过将默认 kickstart 模板中的此行从以下内容更改为现在的工作:

network --bootproto <%= @static ? "static --ip=#{@host.ip} --netmask=#{@host.subnet.mask} --gateway=#{@host.subnet.gateway} --nameserver=#{[@host.subnet.dns_primary,@host.subnet.dns_secondary].reject{|n| n.blank?}.join(',')}" : 'dhcp' %> --hostname <%= @host %>

到:

network --bootproto <%= "static --ip=#{@host.ip} --netmask=#{@host.subnet.mask} --gateway=#{@host.subnet.gateway} --nameserver=#{[@host.subnet.dns_primary,@host.subnet.dns_secondary].reject{|n| n.blank?}.join(',')}" %> --hostname <%= @host %>

这样我强制使用静态 IP。

不过,我仍然想知道如何正确地将该变量传递给 kickstart。

答案2

创建 PXELinux 模板并将 static=yes 提供给你的 kickstart 请求

例如我像这样添加了...

append initrd=<%= @initrd %> ks=<%= foreman_url('provision')%>&static=yes ksdevice=bootif network kssendmac

我将其与我想要配置静态地址的特定主机组关联起来

答案3

转到基础设施 -> 子网 --> 单击默认 --> 将“启动模式”更改为静态

相关内容