mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-08-29 03:51:54 +08:00
fix: deploy ipv6 scripts fixes (#22900)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
This commit is contained in:
@@ -464,6 +464,28 @@ func (l *sLinuxRootFs) DeployNetworkingScripts(rootFs IDiskPartition, nics []*ty
|
||||
log.Errorf("rootFs.GenerateSshHostKeys fail %s", err)
|
||||
}
|
||||
}
|
||||
// force dhclient for NetworkManager
|
||||
{
|
||||
err := forceNetworkManagerDhclient(rootFs)
|
||||
if err != nil {
|
||||
log.Errorf("force NetworkManager dhclient fail %s", err)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func forceNetworkManagerDhclient(rootFs IDiskPartition) error {
|
||||
const nmConfPath = "/etc/NetworkManager/conf.d"
|
||||
if !rootFs.Exists(nmConfPath, false) {
|
||||
return nil
|
||||
}
|
||||
dhcpConfPath := path.Join(nmConfPath, "dhcp-client.conf")
|
||||
content := `[main]
|
||||
dhcp=dhclient
|
||||
`
|
||||
if err := rootFs.FilePutContents(dhcpConfPath, content, false, false); err != nil {
|
||||
return errors.Wrapf(err, "write %s fail", dhcpConfPath)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -1034,23 +1056,16 @@ func (d *sDebianLikeRootFs) DeployNetworkingScripts(rootFs IDiskPartition, nics
|
||||
} else {
|
||||
if len(nicDesc.Ip) > 0 {
|
||||
cmds.WriteString(fmt.Sprintf("iface %s inet dhcp\n", nicDesc.Name))
|
||||
}
|
||||
if len(nicDesc.Ip6) > 0 {
|
||||
cmds.WriteString(fmt.Sprintf("iface %s inet6 dhcp\n", nicDesc.Name))
|
||||
}
|
||||
if len(nicDesc.Ip) > 0 || len(nicDesc.Ip6) > 0 {
|
||||
if len(nicDesc.TeamingSlaves) > 0 {
|
||||
cmds.WriteString(getNicTeamingConfigCmds(nicDesc.TeamingSlaves))
|
||||
}
|
||||
cmds.WriteString("\n")
|
||||
}
|
||||
|
||||
if len(nicDesc.Ip6) > 0 {
|
||||
// ipv6 support static temporarily
|
||||
// TODO
|
||||
cmds.WriteString(fmt.Sprintf("iface %s inet6 static\n", nicDesc.Name))
|
||||
cmds.WriteString(fmt.Sprintf(" address %s\n", nicDesc.Ip6))
|
||||
cmds.WriteString(fmt.Sprintf(" netmask %d\n", nicDesc.Masklen6))
|
||||
if len(nicDesc.Gateway6) > 0 && nicDesc.Ip == mainIp {
|
||||
cmds.WriteString(fmt.Sprintf(" gateway %s\n", nicDesc.Gateway6))
|
||||
}
|
||||
cmds.WriteString("\n")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1496,11 +1511,20 @@ func (r *sRedhatLikeRootFs) deployNetworkingScripts(rootFs IDiskPartition, nics
|
||||
cmds.WriteString("IPADDR=")
|
||||
cmds.WriteString(nicDesc.Ip)
|
||||
cmds.WriteString("\n")
|
||||
if len(nicDesc.Gateway) > 0 && nicDesc.Ip == mainIp {
|
||||
cmds.WriteString("GATEWAY=")
|
||||
cmds.WriteString(nicDesc.Gateway)
|
||||
cmds.WriteString("\n")
|
||||
}
|
||||
}
|
||||
if len(nicDesc.Gateway) > 0 && nicDesc.Ip == mainIp {
|
||||
cmds.WriteString("GATEWAY=")
|
||||
cmds.WriteString(nicDesc.Gateway)
|
||||
cmds.WriteString("\n")
|
||||
if len(nicDesc.Ip6) > 0 {
|
||||
cmds.WriteString("IPV6INIT=yes\n")
|
||||
cmds.WriteString("DHCPV6C=no\n")
|
||||
cmds.WriteString("IPV6_AUTOCONF=no\n")
|
||||
cmds.WriteString(fmt.Sprintf("IPV6ADDR=%s/%d\n", nicDesc.Ip6, nicDesc.Masklen6))
|
||||
if len(nicDesc.Gateway6) > 0 && nicDesc.Ip6 == mainIp6 {
|
||||
cmds.WriteString(fmt.Sprintf("IPV6_DEFAULTGW=%s\n", nicDesc.Gateway6))
|
||||
}
|
||||
}
|
||||
routes4 := make([]netutils2.SRouteInfo, 0)
|
||||
routes6 := make([]netutils2.SRouteInfo, 0)
|
||||
@@ -1514,6 +1538,14 @@ func (r *sRedhatLikeRootFs) deployNetworkingScripts(rootFs IDiskPartition, nics
|
||||
rtbl.WriteString(nicDesc.Name)
|
||||
rtbl.WriteString("\n")
|
||||
}
|
||||
for _, r := range routes6 {
|
||||
rtbl.WriteString(fmt.Sprintf("%s/%d", r.Prefix, r.PrefixLen))
|
||||
rtbl.WriteString(" via ")
|
||||
rtbl.WriteString(r.Gateway.String())
|
||||
rtbl.WriteString(" dev ")
|
||||
rtbl.WriteString(nicDesc.Name)
|
||||
rtbl.WriteString("\n")
|
||||
}
|
||||
rtblStr := rtbl.String()
|
||||
if len(rtblStr) > 0 {
|
||||
var fn = fmt.Sprintf("%s/route-%s", scriptPath, nicDesc.Name)
|
||||
@@ -1531,16 +1563,6 @@ func (r *sRedhatLikeRootFs) deployNetworkingScripts(rootFs IDiskPartition, nics
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if len(nicDesc.Ip6) > 0 {
|
||||
cmds.WriteString("IPV6INIT=yes\n")
|
||||
cmds.WriteString("DHCPV6C=no\n")
|
||||
cmds.WriteString("IPV6_AUTOCONF=no\n")
|
||||
cmds.WriteString(fmt.Sprintf("IPV6ADDR=%s/%d\n", nicDesc.Ip6, nicDesc.Masklen6))
|
||||
if len(nicDesc.Gateway6) > 0 {
|
||||
cmds.WriteString(fmt.Sprintf("IPV6_DEFAULTGW=%s\n", nicDesc.Gateway6))
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if len(nicDesc.Ip) > 0 {
|
||||
@@ -1548,15 +1570,9 @@ func (r *sRedhatLikeRootFs) deployNetworkingScripts(rootFs IDiskPartition, nics
|
||||
}
|
||||
|
||||
if len(nicDesc.Ip6) > 0 {
|
||||
// IPv6 support static temporarily
|
||||
// TODO
|
||||
cmds.WriteString("IPV6INIT=yes\n")
|
||||
cmds.WriteString("DHCPV6C=yes\n")
|
||||
cmds.WriteString("IPV6_AUTOCONF=yes\n")
|
||||
cmds.WriteString(fmt.Sprintf("IPV6ADDR=%s/%d\n", nicDesc.Ip6, nicDesc.Masklen6))
|
||||
if len(nicDesc.Gateway6) > 0 {
|
||||
cmds.WriteString("IPV6_DEFROUTE=yes\n")
|
||||
}
|
||||
}
|
||||
}
|
||||
var fn = fmt.Sprintf("%s/ifcfg-%s", scriptPath, nicDesc.Name)
|
||||
@@ -1586,18 +1602,28 @@ func (r *sRedhatLikeRootFs) deployVlanNetworkingScripts(rootFs IDiskPartition, s
|
||||
if nicDesc.Mtu > 0 {
|
||||
cmds.WriteString(fmt.Sprintf("MTU=%d\n", nicDesc.Mtu))
|
||||
}
|
||||
|
||||
netmask := netutils2.Netlen2Mask(int(nicDesc.Masklen))
|
||||
cmds.WriteString("NETMASK=")
|
||||
cmds.WriteString(netmask)
|
||||
cmds.WriteString("\n")
|
||||
cmds.WriteString("IPADDR=")
|
||||
cmds.WriteString(nicDesc.Ip)
|
||||
cmds.WriteString("\n")
|
||||
if len(nicDesc.Gateway) > 0 && nicDesc.Ip == mainIp {
|
||||
cmds.WriteString("GATEWAY=")
|
||||
cmds.WriteString(nicDesc.Gateway)
|
||||
if len(nicDesc.Ip) > 0 {
|
||||
netmask := netutils2.Netlen2Mask(int(nicDesc.Masklen))
|
||||
cmds.WriteString("NETMASK=")
|
||||
cmds.WriteString(netmask)
|
||||
cmds.WriteString("\n")
|
||||
cmds.WriteString("IPADDR=")
|
||||
cmds.WriteString(nicDesc.Ip)
|
||||
cmds.WriteString("\n")
|
||||
if len(nicDesc.Gateway) > 0 && nicDesc.Ip == mainIp {
|
||||
cmds.WriteString("GATEWAY=")
|
||||
cmds.WriteString(nicDesc.Gateway)
|
||||
cmds.WriteString("\n")
|
||||
}
|
||||
}
|
||||
if len(nicDesc.Ip6) > 0 {
|
||||
cmds.WriteString("IPV6INIT=yes\n")
|
||||
cmds.WriteString("DHCPV6C=no\n")
|
||||
cmds.WriteString("IPV6_AUTOCONF=no\n")
|
||||
cmds.WriteString(fmt.Sprintf("IPV6ADDR=%s/%d\n", nicDesc.Ip6, nicDesc.Masklen6))
|
||||
if len(nicDesc.Gateway6) > 0 && nicDesc.Ip6 == mainIp6 {
|
||||
cmds.WriteString(fmt.Sprintf("IPV6_DEFAULTGW=%s\n", nicDesc.Gateway6))
|
||||
}
|
||||
}
|
||||
routes4 := make([]netutils2.SRouteInfo, 0)
|
||||
routes6 := make([]netutils2.SRouteInfo, 0)
|
||||
@@ -1611,6 +1637,14 @@ func (r *sRedhatLikeRootFs) deployVlanNetworkingScripts(rootFs IDiskPartition, s
|
||||
rtbl.WriteString(fmt.Sprintf("%s.%d", nicDesc.Name, nicDesc.Vlan))
|
||||
rtbl.WriteString("\n")
|
||||
}
|
||||
for _, r := range routes6 {
|
||||
rtbl.WriteString(fmt.Sprintf("%s/%d", r.Prefix, r.PrefixLen))
|
||||
rtbl.WriteString(" via ")
|
||||
rtbl.WriteString(r.Gateway.String())
|
||||
rtbl.WriteString(" dev ")
|
||||
rtbl.WriteString(fmt.Sprintf("%s.%d", nicDesc.Name, nicDesc.Vlan))
|
||||
rtbl.WriteString("\n")
|
||||
}
|
||||
rtblStr := rtbl.String()
|
||||
if len(rtblStr) > 0 {
|
||||
var fn = fmt.Sprintf("%s/route-%s", scriptPath, nicDesc.Name)
|
||||
|
||||
@@ -156,7 +156,10 @@ func getNetplanEthernetConfig(nic *types.SServerNic, isBond bool, mainIp, mainIp
|
||||
}
|
||||
} else {
|
||||
// dhcp
|
||||
nicConf = netplan.NewDHCP4EthernetConfig()
|
||||
nicConf = netplan.NewDHCPEthernetConfig()
|
||||
if len(nic.Ip) > 0 {
|
||||
nicConf.EnableDHCP4()
|
||||
}
|
||||
if len(nic.Ip6) > 0 {
|
||||
nicConf.EnableDHCP6()
|
||||
}
|
||||
|
||||
@@ -297,18 +297,15 @@ func (r *sSuseLikeRootFs) deployNetworkingScripts(rootFs IDiskPartition, nics []
|
||||
|
||||
} else {
|
||||
cmds.WriteString("STARTMODE=auto\n")
|
||||
if len(nicDesc.Ip) > 0 {
|
||||
if len(nicDesc.Ip) > 0 && len(nicDesc.Ip6) == 0 {
|
||||
cmds.WriteString("BOOTPROTO=dhcp4\n")
|
||||
} else if len(nicDesc.Ip) == 0 && len(nicDesc.Ip6) > 0 {
|
||||
cmds.WriteString("BOOTPROTO=dhcp6\n")
|
||||
} else if len(nicDesc.Ip) > 0 && len(nicDesc.Ip6) > 0 {
|
||||
cmds.WriteString("BOOTPROTO=dhcp\n")
|
||||
} else {
|
||||
cmds.WriteString("BOOTPROTO=none\n")
|
||||
}
|
||||
|
||||
if len(nicDesc.Ip6) > 0 {
|
||||
// IPv6 support static temporarily
|
||||
// TODO
|
||||
cmds.WriteString("IPV6INIT=yes\n")
|
||||
cmds.WriteString("IPV6_AUTOCONF=no\n")
|
||||
cmds.WriteString(fmt.Sprintf("IPADDR_V6=%s/%d\n", nicDesc.Ip6, nicDesc.Masklen6))
|
||||
}
|
||||
|
||||
}
|
||||
var fn = fmt.Sprintf("/etc/sysconfig/network/ifcfg-%s", nicDesc.Name)
|
||||
log.Debugf("%s: %s", fn, cmds.String())
|
||||
|
||||
@@ -199,15 +199,19 @@ func (n *Network) YAMLString() string {
|
||||
return toYAMLString(n)
|
||||
}
|
||||
|
||||
func NewDHCP4EthernetConfig() *EthernetConfig {
|
||||
return &EthernetConfig{
|
||||
DHCP4: true,
|
||||
}
|
||||
func NewDHCPEthernetConfig() *EthernetConfig {
|
||||
return &EthernetConfig{}
|
||||
}
|
||||
|
||||
func (c *EthernetConfig) EnableDHCP6() {
|
||||
func (c *EthernetConfig) EnableDHCP4() *EthernetConfig {
|
||||
c.DHCP4 = true
|
||||
return c
|
||||
}
|
||||
|
||||
func (c *EthernetConfig) EnableDHCP6() *EthernetConfig {
|
||||
c.DHCP6 = true
|
||||
c.AcceptRa = true
|
||||
return c
|
||||
}
|
||||
|
||||
func NewStaticEthernetConfig(
|
||||
|
||||
@@ -21,7 +21,7 @@ import (
|
||||
)
|
||||
|
||||
func TestNewEthernetConfig(t *testing.T) {
|
||||
c := NewDHCP4EthernetConfig()
|
||||
c := NewDHCPEthernetConfig().EnableDHCP4()
|
||||
|
||||
assert := assert.New(t)
|
||||
assert.YAMLEq("dhcp4: true", c.YAMLString())
|
||||
@@ -72,7 +72,7 @@ parameters:
|
||||
|
||||
func TestNewNetwork(t *testing.T) {
|
||||
n := NewNetwork()
|
||||
n.AddEthernet("eth0", NewDHCP4EthernetConfig())
|
||||
n.AddEthernet("eth0", NewDHCPEthernetConfig().EnableDHCP4())
|
||||
n.AddEthernet("eth1", NewStaticEthernetConfig(
|
||||
"10.10.10.2/24",
|
||||
"",
|
||||
|
||||
Reference in New Issue
Block a user