ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

使用 libvirt 快速创建 CentOS Stream 8 虚拟机

2021-10-17 01:01:20  阅读:183  来源: 互联网

标签:Stream stream centos -- IP 虚拟机 CentOS images


目标:快速创建一个 CentOS Stream 8 虚拟机,用于开发和测试。

  1. 获取 CentOS Stream 8 虚拟机磁盘镜像(qcow2)

    URL="https://cloud.centos.org/centos/8-stream/x86_64/images/$(curl -SsLf https://cloud.centos.org/centos/8-stream/x86_64/images/ | grep -Po '(?<=href=")CentOS-Stream-GenericCloud-8[^"]+.qcow2(?=")' | tail -1)"
    
    curl -Lo /var/lib/libvirt/images/centos-stream-8.qcow2 "${URL}"
    
  2. 修改虚拟机 root 密码为 12345

    docker run -it --rm \
      -v /var/lib/libvirt/images:/data \
      -w /data \
      -u "$(id -u):$(id -g)" \
      --entrypoint /usr/bin/env \
      bkahlert/libguestfs \
      -- virt-customize -a centos-stream-8.qcow2 --root-password password:12345 --uninstall cloud-init
    
  3. 修改虚拟机磁盘大小为 64G

    docker run -it --rm \
      -v /var/lib/libvirt/images:/data \
      -w /data \
      -u "$(id -u):$(id -g)" \
      --entrypoint /usr/bin/env \
      bkahlert/libguestfs \
      -- qemu-img resize centos-stream-8.qcow2 64G
    
  4. 创建虚拟机(4核8G,默认NAT网络)

    virt-install \
      --name centos-stream-8 \
      --os-type=Linux \
      --vcpus 4 \
      --memory 8192 \
      --disk /var/lib/libvirt/images/centos-stream-8.qcow2,bus=virtio --import \
      --network network=default,model=virtio \
      --graphics none \
      --noautoconsole
    
  5. SSH 登入虚拟机

    # 获取虚拟机 IP
    virsh domifaddr centos-stream-8
    # Name       MAC address          Protocol     Address
    # -------------------------------------------------------------------------------
    # vnet0      52:54:00:6c:41:39    ipv4         192.168.122.46/24
    
    IP=$(virsh domifaddr centos-stream-8 | grep -Po '\d+\.\d+\.\d+\.\d+')
    ssh "root@${IP}"
    # 密码为前面设置的 12345
    
  6. 拓展分区大小为磁盘大小(虚拟机内)

    # ========== 虚拟机内 ==========
    
    # 拓展分区大小
    growpart /dev/vda 1
    xfs_growfs /
    
    # 确认分区大小
    df -Th
    
  7. 设置静态 IP 地址 & DNS(虚拟机内)

    # ========== 虚拟机内 ==========
    
    sed -Ei -e '/^BOOTPROTO=.*$/d' -e '/^PERSISTENT_DHCLIENT=.*$/d' /etc/sysconfig/network-scripts/ifcfg-eth0
    
    cat >>/etc/sysconfig/network-scripts/ifcfg-eth0 <<EOF
    $(ip route | sed -En \
      -e 's|^[^/]+/([^ ]+) dev eth0 .* src ([^ ]+) .*$|PREFIX="\1"\nIPADDR="\2"|p' \
      -e 's|^default via ([^ ]+) dev eth0 .*$|GATEWAY="\1"|p')
    DNS1="223.5.5.5"
    DNS2="223.6.6.6"
    EOF
    
    # 确认配置无误
    cat /etc/sysconfig/network-scripts/ifcfg-eth0
    
    # 可选:设置 hostname 为 IP 地址
    hostnamectl set-hostname "$(hostname -I | sed 's|\.|-|g')"
    
  8. 转发虚拟机 SSH 服务端口到本地端口 22XXX

    IP=$(virsh domifaddr centos-stream-8 | grep -Po '\d+\.\d+\.\d+\.\d+')
    LOCAL_PORT=22$(grep -Po '\d+$' <<< "${IP}" | xargs printf '%03d')
    
    docker run -d --name="ssh-${LOCAL_PORT}" --restart=always --net=host alpine/socat \
        tcp-listen:"${LOCAL_PORT}",fork,reuseaddr tcp4-connect:"${IP}":22
    

标签:Stream,stream,centos,--,IP,虚拟机,CentOS,images
来源: https://www.cnblogs.com/roy2220/p/15415798.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有