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 
参数
| 参数 | 注释 | 
|---|---|
| 指定要设置在  仅在  | |
| 用于向 API 进行身份验证的令牌。 也可以通过  | |
| 用于设置 KubeVirt 的 API 版本。 默认值:  | |
| 用于向 API 进行身份验证的 CA 证书的路径。必须提供完整的证书链,以避免证书验证错误。 也可以通过  | |
| 用于向 API 进行身份验证的证书的路径。 也可以通过  | |
| 用于向 API 进行身份验证的密钥文件的路径。 也可以通过  | |
| 配置文件中找到的上下文的名称。 也可以通过  | |
| 指定  参见 https://kubevirt.io/api-reference/main/definitions.html#_v1_datavolumetemplatespec | |
| 配置删除对象时的行为。 仅在  | |
| 指定删除操作必须满足的条件。 | |
| 指定目标对象的资源版本。 | |
| 指定目标对象的  | |
| 用于控制如何删除依赖对象。 如果未指定,则将使用对象类型的默认策略。这可能因对象类型而异。 选项 
 | |
| 提供用于访问 API 的 URL。 也可以通过  | |
| 要为操作模拟的用户组。 也可以通过  | |
| 要为操作模拟的用户名。 也可以通过  | |
| 指定  仅在  | |
| 现有 Kubernetes 配置文件的路径。如果未提供,并且未提供其他连接选项,则 Kubernetes 客户端将尝试从 ~/.kube/config 加载默认配置文件。 也可以通过环境变量 可以使用分隔符 Kubernetes配置可以作为字典提供。此功能需要python kubernetes客户端版本 >= 17.17.0。 | |
| 指定要设置在 | |
| 指定 | |
| 不应该通过代理的主机/域名/IP/CIDR 的逗号分隔列表。 也可以通过环境变量 请注意,此模块不会从环境中获取典型的代理设置(例如 此功能需要 示例值为 | |
| 是否保存kube config刷新令牌。 也可以通过环境变量 当k8s上下文使用具有刷新令牌的用户凭据(如oidc或gke/gcloud auth)时,令牌由k8s python客户端库刷新,但默认情况下不会保存。因此,旧的刷新令牌可能会过期,下次身份验证可能会失败。将此标志设置为true将告诉k8s python客户端将新的刷新令牌保存到kube config文件。 默认情况下禁用。 选项 
 | |
| 指定 仅在  | |
| 用于连接的HTTP代理的URL。 也可以通过环境变量 请注意,此模块不会从环境中获取典型的代理设置(例如 | |
| 用于基本身份验证标头的冒号分隔的用户名:密码。 也可以通过环境变量 | |
| 用于代理基本身份验证标头的冒号分隔的用户名:密码。 也可以通过环境变量 | |
| 表示您想要的用户代理的字符串,例如foo/1.0。 也可以通过环境变量 | |
| 指定 参见 https://kubevirt.io/api-reference/main/definitions.html#_v1_virtualmachineinstancespec | |
| 确定是否应创建、修补或删除对象。 设置为 如果设置为 如果设置为 选项 
 | |
| 提供用于与API进行身份验证的用户名。 也可以通过环境变量 | |
| 是否等待 选项 
 | |
注释
注意
- 当 - validate_certs=yes时,为避免SSL证书验证错误,必须通过- ca_cert或- kubeconfig文件提供API服务器的完整证书链。
示例
- 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
返回值
常见的返回值已在此处记录,以下是此模块特有的字段
| 键 | 描述 | 
|---|---|
| 创建的对象。在删除的情况下将为空。 返回:成功 | |
| 
 返回:成功 示例:  | |
| 在Kubernetes API上执行的方法。 返回:成功 | 
