2.9. 自动执行管理任务
您可以使用 Red Hat Ansible Automation Platform 自动完成容器原生虚拟化管理任务。通过使用 Ansible Playbook 创建新虚拟机来了解基础知识。
2.9.1. 关于 Red Hat Ansible Automation
Ansible 是用于配置系统、部署软件和执行滚动更新的自动化工具。Ansible 包含对容器原生虚拟化的支持,Ansible 模块可用于自动执行集群管理任务,如模板、持久性卷声明和虚拟机操作。
Ansible 提供了一种方式来自动执行容器原生虚拟化管理,您也可以使用 oc
CLI 工具或 API 来完成此项操作。Ansible 独具特色,因其可用于将 KubeVirt 模块与其他 Ansible 模块集成。
2.9.2. 自动创建虚拟机
使用 Red Hat Ansible Automation Platform,您可使用 kubevirt_vm
Ansible Playbook 在 OpenShift Container Platform 集群中创建虚拟机。
先决条件
- Red Hat Ansible Engine 版本 2.8 或更新版本
流程
编辑 Ansible Playbook YAML 文件,以便其包含
kubevirt_vm
任务:kubevirt_vm: namespace: name: cpu_cores: memory: disks: - name: volume: containerDisk: image: disk: bus:
注意该片断仅包含 playbook 的
kubevirt_vm
部分。编辑这些值以反应您要创建的虚拟机,包括
namespace
、cpu_cores
数、memory
以及disks
。例如:kubevirt_vm: namespace: default name: vm1 cpu_cores: 1 memory: 64Mi disks: - name: containerdisk volume: containerDisk: image: kubevirt/cirros-container-disk-demo:latest disk: bus: virtio
如果希望虚拟机创建后立即启动,请向 YAML 文件添加
state: running
。例如:kubevirt_vm: namespace: default name: vm1 state: running 1 cpu_cores: 1
- 1
- 将该值改为
state: absent
会删除已存在的虚拟机。
运行
ansible-playbook
命令,将 playbook 文件名用作唯一参数:$ ansible-playbook create-vm.yaml
查看输出以确定该 play 是否成功:
(...) TASK [Create my first VM] ************************************************************************ changed: [localhost] PLAY RECAP ******************************************************************************************************** localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
如果您未在 playbook 文件中包含
state: running
,而您希望立即启动虚拟机,请编辑文件使其包含state: running
并再次运行 playbook:$ ansible-playbook create-vm.yaml
要验证是否已创建虚拟机,请尝试访问虚拟机控制台。
2.9.3. 示例:用于创建虚拟机的 Ansible Playbook
您可使用 kubevirt_vm
Ansible Playbook 自动创建虚拟机。
以下 YAML 文件是一个 kubevirt_vm
playbook 示例。如果运行 playbook,其中会包含必须替换为您自己的信息的样本值。
--- - name: Ansible Playbook 1 hosts: localhost connection: local tasks: - name: Create my first VM kubevirt_vm: namespace: default name: vm1 cpu_cores: 1 memory: 64Mi disks: - name: containerdisk volume: containerDisk: image: kubevirt/cirros-container-disk-demo:latest disk: bus: virtio