AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1034224
Accepted
oleksii
oleksii
Asked: 2020-09-18 03:00:04 +0800 CST2020-09-18 03:00:04 +0800 CST 2020-09-18 03:00:04 +0800 CST

如何配置 VMWare 克隆映像以获取唯一 IP 地址?

  • 772

我正在使用Teamcity和 VMWare vSphere 配置内部构建系统。配置完成后,构建服务器应该使用 vSphere API 启动构建代理虚拟机。我已经到了 TeamCity 构建服务器启动我需要的构建代理虚拟机的地步,但是有一个问题。

当构建服务器检测到它需要多个代理虚拟机时,它会非常快速地启动虚拟机,并且在大约 80% 的情况下,这些虚拟机往往会获得相同的 IP 地址。如果我在调用之间稍作停顿,手动开始构建代理,虚拟机将获得唯一的 IP 地址。

相同的 IP 地址会导致许多网络问题。这是来自具有相同 IP 地址的 2 个构建代理 VM 的屏幕截图。 虚拟机 IP4 相同

我认为 vSphere 正在使用具有 DHCP 服务的 Cisco Meraki 盒子,但我无权访问它。我花了几天时间试图将这个问题缩小到上面的屏幕截图,但我不知道从哪里开始。我认为 DHCP 服务应该可以很好地处理这种情况,但我一定是在某种程度上错误地配置了它。

我的构建代理 VM 是 Ubuntu 20.04 LTS,当我制作快照时它没有预先配置 DHCP。我没有运行任何脚本来为快照准备图像,它或多或少是安装了 docker 的香草 Ubuntu,我们所有的构建都是容器化的。我使用的是克隆的虚拟机,而不是模板。

有人可以指出我正确的方向吗?

dhcp ip snapshot vmware-esxi vmware-vsphere
  • 2 2 个回答
  • 704 Views

2 个回答

  • Voted
  1. Massimo
    2020-09-18T03:31:37+08:002020-09-18T03:31:37+08:00

    我的构建代理 VM 是 Ubuntu 20.04 LTS,当我制作快照时它没有预先配置 DHCP。

    它应该有。
    如果在您拍摄虚拟机快照时 VM 具有静态 IP 地址,则从该快照创建的所有克隆在启动时都将尝试使用相同的网络配置。即使您在部署它们时等待,这根本不应该工作。
    我认为正在发生的事情是,当 VM 启动并发现其 IP 地址已被使用时,它会自动切换到 DHCP 以获取新地址;但是如果您同时启动其中两个,它们不会检测到任何 IP 冲突,而只是尝试使用它们现有的配置。
    在克隆它之前,您应该为 DHCP 配置基本映像。

    • 4
  2. Best Answer
    oleksii
    2020-09-25T07:35:23+08:002020-09-25T07:35:23+08:00

    不确定这是否理想,但我将描述我为解决此问题所做的工作。这是一个hack,所以请不要使用它,除非所有其他事情都失败了

    启用netplan,但禁用 IPv4 DHCP。出于某种原因,当我制作同一个克隆的多个实例时,一些实例获得了相同的 IP

    sudo nano /etc/netplan/00-installer-config.yaml
    ---
    network:
      version: 2
      renderer: networkd
      ethernets:
        ens160:
          dhcp4: false
    ---
    

    添加作业以在启动时配置 IPv4 地址

    sudo crontab -e
    -- 
    @reboot /usr/bin/bash /boot-config.sh > /boot-config.log
    --
    

    创建启动配置文件

    sudo touch /boot-config.sh
    sudo chown root:root /boot-config.sh
    sudo chmod +x /boot-config.sh
    

    使用某些程序的完整路径很重要,因为$PATH它不包含/usr/sbin,例如,在启动时cron调用脚本时

    sudo nano /boot-config.sh
    ---
    #!/bin/bash
    
    echo "*********************"
    echo "Boot config script"
    echo "*********************"
    
    echo "PATH: " $PATH
    echo "Running via " $SHELL
    echo "Current working directory " $(pwd)
    
    echo ""
    echo "Releasing IP address for ens160"
    /usr/sbin/dhclient -v -r ens160
    
    echo "Removing DHCP lease files"
    rm /var/lib/dhcp/*
    
    echo "Generating new machine id"
    echo "Old id: " $(cat /etc/machine-id)
    rm /etc/machine-id
    systemd-machine-id-setup
    echo "New id: " $(cat /etc/machine-id)
    
    echo "Requesting new IP"
    /usr/sbin/dhclient -v  ens160
    
    echo ""
    echo "Finished"
    ---
    
    # You should be able to see the result in the log file
    sudo cat /boot-config.log
    

    PS:将此标记为答案,但https://serverfault.com/a/1034226/82856有助于解决问题。

    • 0

相关问题

  • DHCP 无法更新 DNS,没有 Active Directory

  • 在 SBS 2008 上禁用 DHCP?

  • 如何在 Ubuntu 中设置搜索域(和其他 resolv.conf 参数)?

  • DHCP/网络问题

  • 在一个 LAN 中使用两台 DHCP 服务器

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve