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.04、20.10、20.04、19.10、19.04、18.10、18.04和17.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_keys
或password
之一,以便Ansible能够连接到新机器。 - 使用
password
为“ubuntu”用户设置密码。 至少要指定ssh_keys
或password
之一,以便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