hamburger_software.vmware_ubuntu_cloud_image

vmware_ubuntu_cloud_image

Ansible角色,用于在vSphere环境中基于Ubuntu Cloud Images创建虚拟机。

Ubuntu Cloud Images

Ubuntu提供了用于云环境的预装镜像。 其中一种可用的镜像格式是_open virtualization appliance_(OVA),可以导入到VMware中。 这些镜像使用cloud-init机制,允许进行非常基础的配置。 遗憾的是,当前不支持使用静态IP地址,也无法在创建虚拟机时调整硬件。

该角色增加了对这些功能的支持。

特性

  • 从先前下载的OVA文件创建一个虚拟机(VM)。
  • 设置主机名。
  • 为默认用户“ubuntu”添加一个或多个ssh公钥和/或密码,以便Ansible能够连接到新计算机。
  • 可选地调整硬件,如CPU数量或内存,具体可见vmware_guest的自定义选项。
  • 可选地设置VM注释、VM配置文件参数和/或VM自定义属性
  • 可以增加磁盘大小(默认为10GB),可以创建和增加额外的磁盘。
  • 可选地将动态IP地址更改为静态IP(从剧本或DNS获取)。
  • VM会被开启,可以在调用该角色的同一剧本中使用。
  • 可以并行创建多个VM。
  • 已测试与Ubuntu Cloud Images 21.0420.1020.0419.1019.0418.1018.0417.10。 较早版本无法工作,因为它们没有使用netplan进行网络配置。

需求

要使用该角色,您需要:

  • 一个用于部署虚拟机的vSphere环境。
  • 具有适当权限的vCenter服务器凭证,详见下文。
  • 在控制机上有一个OVA文件,例如ubuntu-18.04-server-cloudimg-amd64.ova

如果您想从DNS获取虚拟机的IP地址,您还需要:

  • 在控制机上安装_dnspython_(python库,http://www.dnspython.org/)。
  • 在清单中使用完全限定域名(FQDN,例如host.example.org)。 FQDN也将用作虚拟机名称。
  • 为每个要创建的虚拟机添加A记录。

最低Ansible版本为2.10.7。 最低的community.vmware集合版本为1.8.0,属于Ansible社区包3.2.0的一部分。

vSphere权限

使用此角色创建虚拟机所需的最低权限为:

  • 数据存储 > 分配空间
  • 网络 > 分配网络
  • 资源 > 将虚拟机分配到资源池
  • vApp > 导入
  • 虚拟机 > 操作 > 开机
  • 虚拟机 > 配置 > 添加新磁盘

要调整CPU和内存设置,需要:

  • 虚拟机 > 配置 > 更改CPU数量
  • 虚拟机 > 配置 > 内存

要调整磁盘大小,需要:

  • 虚拟机 > 配置 > 扩展虚拟磁盘

高级配置选项可能需要额外权限。

角色变量

vCenter连接

  • vCenter服务器的URL通过vcenter_hostname或环境变量VMWARE_HOST设置。
  • vCenter用户通过vcenter_username或环境变量VMWARE_USER设置。
  • vCenter密码通过vcenter_password或环境变量VMWARE_PASSWORD设置。
  • 可以通过设置vcenter_validate_certs=no或将环境变量VMWARE_VALIDATE_CERTS设置为no来禁用证书验证。

VMware设置

  • 控制机上的OVA文件通过ova_file指定。
  • 虚拟机在数据中心vmware_datacenter上的数据存储vmware_datastore中创建。
  • 虚拟机可以通过指定vmware_folder放置在文件夹中,通过指定vmware_resource_pool放置在资源池中。
  • 虚拟机名称默认为inventory_hostname,可以通过vm_guestname更改。

虚拟机设置

  • 机器的主机名默认为inventory_hostname_short,可以通过vm_hostname更改。
  • 使用ssh_keys设置要添加到“ubuntu”用户的authorized_keys文件中的公钥列表。 至少要指定ssh_keyspassword之一,以便Ansible能够连接到新机器。
  • 使用password为“ubuntu”用户设置密码。 至少要指定ssh_keyspassword之一,以便Ansible能够连接到新机器。
  • 硬件可以通过hardware指定,包含在vmware_guest中指定的字典。
  • 磁盘大小可以通过disk调整。此参数接受文档中列出的磁盘规格的列表vmware_guest_disk。 第一个磁盘对应于导入的虚拟磁盘,其大小只能增加。 下面的示例剧本展示了用法。
  • 可以通过networks指定用户自定义的网络映射,详见vmware_deploy_ovf的语义。
  • 可以通过annotation设置VM注释。
    使用此功能需要VMware权限虚拟机 > 配置 > 设置注释
  • 要设置VM配置文件参数,请提供advanced_settings,其包含一个字典列表,如示例剧本所示。
  • 要设置VM自定义属性,请提供customvalues,其包含一个字典列表,如示例剧本所示。请注意,新自定义值不会被创建,它们在部署之前必须存在于vCenter中。

要使用静态IP地址,请在字典static_ip中使用以下键:

  • ipv4 - 您想要分配的特定IPv4地址。默认为FQDN在DNS中找到的IPv4地址。
  • netmask - 以CIDR表示的子网掩码,默认为8
  • gateway - 默认网关(必填)
  • dns_servers - DNS服务器IP地址列表,默认为Google的公共DNS服务器。
  • dns_search - 应用作DNS搜索后缀的域名列表。 使用此项可以将您的VM放入域中。

清单设置

由于虚拟机尚不存在,因此ssh服务器的密钥是未知的。 为了连接到新的虚拟机,您需要关闭ssh主机密钥检查。 如果您计划频繁使用相同的FQDN重新创建虚拟机,ssh则不应将指纹存储在_known_hosts_文件中。

因此,推荐的主机/组变量为:

ansible_user=ubuntu
ansible_ssh_extra_args=-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null

依赖

该角色不依赖其他角色。

示例剧本

剧本:

- name: 部署Ubuntu云镜像虚拟设备
  hosts: cloudimg
  gather_facts: no

  roles:
    - role: hamburger_software.vmware_ubuntu_cloud_image
      vars:
        vcenter_hostname: vcenter.your.domain
        vcenter_username: [email protected]
        vcenter_password: verysecret
        vcenter_validate_certs: no
        vmware_datacenter: your-datacenter
        vmware_datastore: your-datastore
        vmware_folder: your-datacenter/vm/some-folder
        ova_file: ubuntu-20.04-server-cloudimg-amd64.ova
        hardware:
          num_cpus: 4
          memory_mb: 2048
        annotation: '基于Ubuntu云镜像的示例虚拟机'
        # 避免在Ubuntu 20.04下来自multipathd的过多syslog消息
        advanced_settings:
          - key: disk.EnableUUID
            value: 'TRUE'
        customvalues:
          - key: 'yourkey'
            value: 'yourvalue'
        disk:
          - size_gb: 20
            datastore: your-datastore
            scsi_controller: 0
            unit_number: 0
          - size_mb: 250
            datastore: your-datastore
            scsi_controller: 0
            unit_number: 1
            type: thin
        static_ip:
          netmask: 16
          gateway: 10.0.42.1
          dns_servers: [10.0.47.11, 10.0.48.12]
          dns_search:
          - your.domain
        ssh_keys:
          - ssh-rsa AAAAB3Nz[...]== some-key-name
        password: passw0rd

清单包含5个主机:

[cloudimg]
vm-[1:5].your.domain

[cloudimg:vars]
ansible_user=ubuntu
ansible_password=passw0rd
ansible_ssh_extra_args=-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null

许可证

MIT

作者信息

该角色由Harald Albers在HS - Hamburger Software GmbH & Co. KG创建。

关于项目

Creates virtual machines based on Ubuntu Cloud Images in a vSphere environment.

安装
ansible-galaxy install hamburger_software.vmware_ubuntu_cloud_image
许可证
mit
下载
732
拥有者
Product documentation and open source projects created at HS - Hamburger Software GmbH & Co. KG