zoukankan      html  css  js  c++  java
  • proxmox之cloud-init

    Cloud-Init支持

    Cloud-Init是事实上的多分发包,它处理虚拟机实例的早期初始化。使用Cloud-Init,可以在虚拟机管理程序端配置网络设备和ssh密钥。当VM首次启动时,VM内的Cloud-Init软件将应用这些设置。

    许多Linux发行版都提供了即用型Cloud-Init映像,主要是为OpenStack设计的这些图像也适用于Proxmox VE。虽然获得这样的即用型图像看起来很方便,但我们通常建议您自己准备图像。优点是您将确切知道已安装的内容,这有助于您以后轻松自定义图像以满足您的需求。

    创建了这样的Cloud-Init映像后,我们建议将其转换为VM模板。从VM模板中,您可以快速创建链接克隆,因此这是推出新VM实例的快速方法。您只需在启动新VM之前配置网络(可能还有ssh密钥)。

    我们建议使用基于SSH密钥的身份验证登录Cloud-Init配置的VM。也可以设置密码,但这不如使用基于SSH密钥的身份验证安全,因为Proxmox VE需要在Cloud-Init数据中存储该密码的加密版本。

    Proxmox VE生成ISO映像以将Cloud-Init数据传递给VM。为此,所有Cloud-Init VM都需要具有指定的CDROM驱动器。此外,许多Cloud-Init图像都假设有一个串行控制台,因此建议添加一个串行控制台并将其用作这些VM的显示器。

    准备Cloud-Init模板

    第一步是准备VM。基本上你可以使用任何VM。只需在要准备的VM中安装Cloud-Init软件包即可。在基于Debian / Ubuntu的系统上,这很简单:

    apt-get install cloud-init

    已有许多发行版提供了现成的Cloud-Init图像(以.qcow2文件形式提供),因此您可以简单地下载和导入此类图像。对于以下示例,我们将使用Ubuntu提供的云图像,网址https://cloud-images.ubuntu.com

    #下载图片
    wget https://cloud-images.ubuntu.com/bionic/current/bionic-server-cloudimg-amd64.img
    
    #创建一个新的VM
    qm create 9000 --memory 2048 --net0 virtio,bridge = vmbr0
    
    #将下载的磁盘导入local-lvm存储
    qm importdisk 9000 bionic-server-cloudimg-amd64.img local-lvm
    
    #finally将新磁盘作为scsi驱动器附加到VM
    qm set 9000 --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-9000-disk-1
      Ubuntu Cloud-Init映像需要virtio-scsi-pci 控制器类型用于SCSI驱动器。
    添加Cloud-Init CDROM驱动器

    下一步是配置CDROM驱动器,该驱动器将用于将Cloud-Init数据传递给VM。

    qm set 9000 --ide2 local-lvm:cloudinit

    要能够直接从Cloud-Init映像引导,请将bootdisk参数设置 scsi0,并将BIOS限制为仅从磁盘引导。这将加快启动速度,因为VM BIOS会跳过可启动CDROM的测试。

    qm set 9000 --boot c --bootdisk scsi0

    还要配置串行控制台并将其用作显示器。许多Cloud-Init图像依赖于此,因为它是OpenStack图像的要求。

    qm设置9000 --serial0 socket --vga serial0

    在最后一步中,将VM转换为模板很有帮助。然后,您可以从此模板快速创建链接克隆。从VM模板部署比创建完整克隆(副本)快得多。

    qm模板9000

    部署Cloud-Init模板

    您可以通过克隆轻松部署此类模板:

    qm clone 9000 123 --name ubuntu2

    然后配置用于身份验证的SSH公钥,并配置IP设置:

    qm设置123 --sshkey~ / .ssh / id_rsa.pub
    qm set 123 --ipconfig0 ip = 10.0.10.123 / 24,gw = 10.0.10.1

    您还可以仅使用一个命令配置所有Cloud-Init选项。我们简单地拆分了上面的例子来分离减少行长度的命令。另外,请确保为您的特定环境采用IP设置。

    Cloud-Init特定选项

    cicustom[meta = <volume>] [,network = <volume>] [,user = <volume>]

    指定自定义文件以在开始时替换自动生成的文件。

    meta = <volume>

    指定包含通过cloud-init传递给VM的所有元数据的自定义文件。这是提供者特定的含义configdrive2和nocloud不同。

    network = <volume>

    指定包含通过cloud-init传递给VM的所有网络数据的自定义文件。

    user = <volume>

    指定包含通过cloud-init传递给VM的所有用户数据的自定义文件。

    cipassword<string>

    分配用户的密码。通常不建议使用它。请改用ssh键。另请注意,较旧的cloud-init版本不支持散列密码。

    citype<configdrive2 | nocloud>

    指定cloud-init配置格式。默认值取决于配置的操作系统类型(ostype。我们使用Linux nocloud格式和Windows的configdrive2

    ciuser<string>

    用于更改ssh密钥和密码的用户名,而不是图像配置的默认用户。

    ipconfig [n][gw = <GatewayIPv4>] [,gw6 = <GatewayIPv6>] [,ip = <IPv4Format / CIDR>] [,ip6 = <IPv6Format / CIDR>]

    为相应的接口指定IP地址和网关。

    IP地址使用CIDR表示法,网关是可选的,但需要指定相同类型的IP。

    特殊字符串dhcp可用于IP地址以使用DHCP,在这种情况下,不应提供显式网关。对于IPv6,特殊字符串auto可用于使用无状态自动配置。

    如果启用了cloud-init且既未指定IPv4也未指定IPv6地址,则默认为在IPv4上使用dhcp。

    gw = <GatewayIPv4>

    IPv4流量的默认网关。

      需要选项:ip
    gw6 = <GatewayIPv6>

    IPv6流量的默认网关。

      需要选项:ip6
    ip = <IPv4Format / CIDR>默认= dhcp

    CIDR格式的IPv4地址。

    ip6 = <IPv6Format / CIDR>默认= dhcp

    CIDR格式的IPv6地址。

    nameserver<string>

    设置容器的DNS服务器IP地址。如果既没有设置searchdomain也没有设置nameserver,Create将自动使用主机中的设置。

    searchdomain<string>

    设置容器的DNS搜索域。如果既没有设置searchdomain也没有设置nameserver,Create将自动使用主机中的设置。

    sshkeys<string>

    设置公共SSH密钥(每行一个密钥,OpenSSH格式)。

  • 相关阅读:
    Icident event 分析
    innodb buffer pool相关特性
    备库Seconds_Behind_Master的计算
    savepoint原理
    layer探框
    解决layui表格和下拉框同时使用时,下拉框被表格遮当问题
    layui switch开关按钮
    formSelects 4.x多选下拉框
    java如何调用php接口,并获取值
    layui时间范围选择器
  • 原文地址:https://www.cnblogs.com/surplus/p/11432861.html
Copyright © 2011-2022 走看看