mbach04.nutanix_vm_provisioner
Nutanix 虚拟机配置器
一个基础的 Ansible 角色,用于通过 APIv3 在 Nutanix AHV 上配置虚拟机。
必需变量
api_version: "3.0" # Nutanix 正在逐步淘汰 v2 API,最好使用可用的 v3
cluster_url: 172.16.1.100 # 通常用来登录 PRISM 的 IP 地址
prism_user: admin # 有权限在集群上进行配置的账号
prism_password: secret # 你账号的密码,请注意,应该使用 Ansible vault 加密,不要明文存储
cluster_name: "你的集群" # 要配置的集群名称
subnet_name: "VMNet" # 要添加虚拟机的子网 (vlan) 名称
image_name: "RHEL_Server_7.5" # 要使用的磁盘镜像或 ISO 名称
# 定义你想创建的虚拟机的字典列表
# 注意,你可以将其拆分为几个独立的列表,并在调用角色时重写 vm_defs 来循环多个虚拟机集合。
vm_defs:
- {vm_name: my-vm-01, vm_ip: '172.16.1.111', vm_ram: 8192, vm_num_cpu_per_socket: 1, vm_num_sockets: 1, vm_disk_list: [disk_size_mib: 152588]}
Cloud-init
如果你不想使用来宾自定义(在这种情况下是 cloud-init),那么请从 templates/vm-body.yml.j2
文件中删除 guest_customization
部分,或将其变量化并提交你的更改到此仓库。:-)
如果你希望使用带有 cloud-init 脚本的角色并设置用户密码,你可以这样做(但这不是最佳安全实践)。
在 RHEL 主机上使用以下命令生成一个 SHA-512 哈希密码,作为 cloud_init_root_pass
用于 kvm
RHEL 镜像。
python -c 'import crypt,getpass; print crypt.crypt(getpass.getpass())'
将生成的字符串设置为 group_vars/*/all.yaml
中的 cloud_init_root_pass
。
示例剧本
---
- name: 配置一些虚拟机
hosts: localhost
gather_facts: false
vars:
my_vms:
- {vm_name: server1, vm_ip: '172.29.171.100', vm_ram: 4096, vm_num_cpu_per_socket: 1, vm_num_sockets: 4, vm_disk_list: [disk_size_mib: 76294, disk_size_mib: 152588]}
- {vm_name: server2, vm_ip: '172.29.171.101', vm_ram: 4096, vm_num_cpu_per_socket: 1, vm_num_sockets: 4, vm_disk_list: [disk_size_mib: 76294, disk_size_mib: 152588]}
tasks:
- name: 在 Nutanix 上配置虚拟机
include_role:
name: nutanix_provisioner
vars:
vm_defs: "{{ my_vms }}"
许可证
根据 MIT 许可证授权。详见 LICENSE 文件。
作者信息
由 Red Hat 的 Matthew Bach 和 Timothy Ling 创建。