kubevirt.core.kubevirt_vm 模块 – 创建或删除 KubeVirt 虚拟机

注意

此模块是 kubevirt.core 集合 (版本 2.1.0) 的一部分。

如果您使用的是 ansible 包,则可能已安装此集合。它不包含在 ansible-core 中。要检查它是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用: ansible-galaxy collection install kubevirt.core。您需要其他要求才能使用此模块,请参阅 要求 获取详细信息。

要在剧本中使用它,请指定: kubevirt.core.kubevirt_vm

概要

  • 使用 Kubernetes Python 客户端对 KubeVirt 虚拟机执行创建或删除操作。

  • 将选项作为模块参数传递以创建虚拟机。

  • 使用配置文件、证书、密码或令牌进行身份验证。

  • 支持检查模式。

要求

执行此模块的主机需要以下要求。

  • python >= 3.9

  • kubernetes >= 28.1.0

  • PyYAML >= 3.11

  • jsonpatch

参数

参数

注释

annotations

字典

指定要在 VirtualMachine 上设置的注释。

仅当 state=present 时使用。

api_key

字符串

用于向 API 进行身份验证的令牌。

也可以通过 K8S_AUTH_API_KEY 环境变量指定。

api_version

字符串

用于设置 KubeVirt 的 API 版本。

默认值: "kubevirt.io/v1"

ca_cert

别名:ssl_ca_cert

路径

用于向 API 进行身份验证的 CA 证书的路径。必须提供完整的证书链以避免证书验证错误。

也可以通过 K8S_AUTH_SSL_CA_CERT 环境变量指定。

client_cert

别名:cert_file

路径

用于向 API 进行身份验证的证书的路径。

也可以通过 K8S_AUTH_CERT_FILE 环境变量指定。

client_key

别名:key_file

路径

用于向 API 进行身份验证的密钥文件的路径。

也可以通过 K8S_AUTH_KEY_FILE 环境变量指定。

context

字符串

配置文件中找到的上下文名称。

也可以通过 K8S_AUTH_CONTEXT 环境变量指定。

data_volume_templates

列表 / 元素=字典

指定 VirtualMachineDataVolume 模板。

参见 https://kubevirt.io/api-reference/main/definitions.html#_v1_datavolumetemplatespec

delete_options

字典

配置删除对象时的行为。

仅当 state=absent 时使用。

preconditions

字典

指定删除操作必须满足的条件。

resourceVersion

字符串

指定目标对象的资源版本。

uid

字符串

指定目标对象的 UID

propagationPolicy

字符串

用于控制如何删除依赖对象。

如果未指定,将使用对象类型的默认策略。这可能因对象类型而异。

选项

  • "Foreground"

  • "Background"

  • "Orphan"

force

布尔值

如果设置为 force=yes,并且设置了 state=present,则将替换现有对象。

选项

  • false ← (默认)

  • true

generate_name

字符串

指定 VirtualMachine 名称的基础,集群将自动添加随机字符以生成唯一名称。

仅当 state=present 时使用。

name 互斥。

host

字符串

提供用于访问 API 的 URL。

也可以通过 K8S_AUTH_HOST 环境变量指定。

impersonate_groups

列表 / 元素=字符串

要为操作模拟的组。

也可以通过 K8S_AUTH_IMPERSONATE_GROUPS 环境变量指定,例如 Group1,Group2

impersonate_user

字符串

要为操作模拟的用户名。

也可以通过 K8S_AUTH_IMPERSONATE_USER 环境变量指定。

instancetype

字典

指定 VirtualMachineInstancetype 匹配器。

仅当 state=present 时使用。

kubeconfig

任意

现有 Kubernetes 配置文件的路径。如果未提供,并且未提供其他连接选项,Kubernetes 客户端将尝试从 ~/.kube/config 加载默认配置文件。

也可以通过环境变量K8S_AUTH_KUBECONFIG指定。

可以使用分隔符;(Windows平台)或:(其他平台)提供多个Kubernetes配置文件。

Kubernetes配置可以作为字典提供。此功能需要python kubernetes客户端版本 >= 17.17.0。

标签

字典

指定要设置在VirtualMachine上的标签。

名称

字符串

指定VirtualMachine的名称。

当未设置state=present时,此选项将被忽略。

generate_name互斥。

命名空间

字符串 / 必需

指定VirtualMachine的命名空间。

no_proxy

字符串

不应该通过代理的主机/域名/IP/CIDR 的逗号分隔列表。

也可以通过环境变量K8S_AUTH_NO_PROXY指定。

请注意,此模块不会从环境中获取典型的代理设置(例如NO_PROXY)。

此功能需要kubernetes>=19.15.0。当kubernetes库低于19.15.0时,即使no_proxy设置正确也会失败。

示例值为localhost,.local,.example.com,127.0.0.1,127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16

密码

字符串

提供用于与API进行身份验证的密码。

也可以通过环境变量K8S_AUTH_PASSWORD指定。

请阅读username选项的描述,了解此选项何时适用。

persist_config

布尔值

是否保存kube config刷新令牌。

也可以通过环境变量K8S_AUTH_PERSIST_CONFIG指定。

当k8s上下文使用具有刷新令牌的用户凭据(如oidc或gke/gcloud auth)时,令牌由k8s python客户端库刷新,但默认情况下不会保存。因此,旧的刷新令牌可能会过期,下一次身份验证可能会失败。将此标志设置为true将告诉k8s python客户端将新的刷新令牌保存到kube config文件中。

默认情况下禁用。

选项

  • false

  • true

偏好设置

字典

指定VirtualMachinePreference匹配器。

仅当 state=present 时使用。

代理

字符串

用于连接的HTTP代理的URL。

也可以通过环境变量K8S_AUTH_PROXY指定。

请注意,此模块不会从环境中获取典型的代理设置(例如HTTP_PROXY)。

代理头

字典

基本身份验证

字符串

用于基本身份验证头的冒号分隔的用户名:密码。

也可以通过环境变量K8S_AUTH_PROXY_HEADERS_BASIC_AUTH指定。

代理基本身份验证

字符串

用于代理基本身份验证头的冒号分隔的用户名:密码。

也可以通过环境变量K8S_AUTH_PROXY_HEADERS_PROXY_BASIC_AUTH指定。

用户代理

字符串

表示所需用户代理的字符串,例如foo/1.0。

也可以通过环境变量K8S_AUTH_PROXY_HEADERS_USER_AGENT指定。

运行策略

字符串

kubevirt.core 2.0.0中添加

指定VirtualMachineRunStrategy

running互斥。

选项

  • "始终"

  • "已停止"

  • "手动"

  • "失败时重新运行"

  • "一次"

运行中

布尔值

指定VirtualMachine是否应该运行。

run_strategy互斥。

当未设置runningrun_strategy时,默认为running=yes

选项

  • false

  • true

规范

字典

状态

字符串

确定是否应创建、修补或删除对象。

设置为state=present时,如果对象不存在,则将创建该对象。

如果设置为state=absent,则将删除现有对象。

如果设置为state=present,则如果现有对象的属性与指定的属性不同,则将对其进行修补。

选项

  • "不存在"

  • "存在" ← (默认)

用户名

字符串

提供用于与API进行身份验证的用户名。

也可以通过环境变量K8S_AUTH_USERNAME指定。

validate_certs

别名:verify_ssl

布尔值

是否验证API服务器的SSL证书。

也可以通过环境变量K8S_AUTH_VERIFY_SSL指定。

选项

  • false

  • true

等待

布尔值

是否等待VirtualMachine进入就绪状态。

选项

  • false ← (默认)

  • true

等待休眠

整数

检查之间休眠的秒数。

如果未设置wait,则忽略。

默认值: 5

等待超时

整数

等待资源进入就绪状态的秒数。

如果未设置wait,则忽略。

默认值: 120

注释

注意

示例

- name: Create a VirtualMachine
  kubevirt.core.kubevirt_vm:
    state: present
    name: testvm
    namespace: default
    labels:
      app: test
    instancetype:
      name: u1.medium
    preference:
      name: fedora
    spec:
      domain:
        devices:
          interfaces:
            - name: default
              masquerade: {}
            - name: bridge-network
              bridge: {}
      networks:
        - name: default
          pod: {}
        - name: bridge-network
          multus:
            networkName: kindexgw
      volumes:
        - containerDisk:
            image: quay.io/containerdisks/fedora:latest
          name: containerdisk
        - cloudInitNoCloud:
            userData: |-
              #cloud-config
              # The default username is: fedora
              ssh_authorized_keys:
                - ssh-ed25519 AAAA...
          name: cloudinit

- name: Create a VirtualMachine with a DataVolume template
  kubevirt.core.kubevirt_vm:
    state: present
    name: testvm-with-dv
    namespace: default
    labels:
      app: test
    instancetype:
      name: u1.medium
    preference:
      name: fedora
    data_volume_templates:
      - metadata:
          name: testdv
        spec:
          source:
            registry:
              url: docker://quay.io/containerdisks/fedora:latest
          storage:
            accessModes:
              - ReadWriteOnce
            resources:
              requests:
                storage: 5Gi
    spec:
      domain:
        devices: {}
      volumes:
        - dataVolume:
            name: testdv
          name: datavolume
        - cloudInitNoCloud:
            userData: |-
              #cloud-config
              # The default username is: fedora
              ssh_authorized_keys:
                - ssh-ed25519 AAAA...
          name: cloudinit
    wait: true

- name: Delete a VirtualMachine
  kubevirt.core.kubevirt_vm:
    name: testvm
    namespace: default
    state: absent

返回值

公共返回值已在此处记录,以下是此模块特有的字段

描述

结果

复杂的

已创建的对象。在删除情况下将为空。

返回:成功

已更改

布尔值

VirtualMachine是否已更改。

返回:成功

示例: true

持续时间

整数

任务的经过时间(秒)。

返回:wait=true时。

示例: 48

方法

字符串

在Kubernetes API上执行的方法。

返回:成功

作者

  • KubeVirt.io 项目