• 博客
  • Ansible 社区论坛
  • 文档
Ansible Logo
Ansible 社区文档
Ansible

Ansible 入门

  • Ansible 入门指南
  • 执行环境入门指南

安装、升级和配置

  • 安装指南
  • Ansible 移植指南

使用 Ansible

  • 构建 Ansible 清单
  • 使用 Ansible 命令行工具
  • 使用 Ansible playbook
  • 使用 Ansible vault 保护敏感数据
  • 使用 Ansible 模块和插件
  • 使用 Ansible 集合
  • 在 Windows 和 BSD 上使用 Ansible
  • Ansible 提示和技巧

为 Ansible 作出贡献

  • Ansible 社区指南
  • Ansible 集合贡献者指南
  • ansible-core 贡献者指南
  • 高级贡献者指南
  • Ansible 文档样式指南

扩展 Ansible

  • 开发者指南

常见的 Ansible 场景

  • 传统公共云指南

网络自动化

  • 网络入门
  • 网络高级主题
  • 网络开发者指南

Ansible Galaxy

  • Galaxy 用户指南
  • Galaxy 开发者指南

参考和附录

  • 集合索引
    • Amazon 命名空间中的集合
    • Ansible 命名空间中的集合
    • Arista 命名空间中的集合
    • Awx 命名空间中的集合
    • Azure 命名空间中的集合
    • Check_point 命名空间中的集合
    • Chocolatey 命名空间中的集合
    • Cisco 命名空间中的集合
    • Cloud 命名空间中的集合
    • Cloudscale_ch 命名空间中的集合
    • Community 命名空间中的集合
      • Community.Aws
      • Community.Ciscosmb
      • Community.Crypto
      • Community.Digitalocean
      • Community.Dns
      • Community.Docker
      • Community.General
      • Community.Grafana
      • Community.Hashi_Vault
      • Community.Hrobot
      • Community.Library_Inventory_Filtering_V1
      • Community.Libvirt
      • Community.Mongodb
      • Community.Mysql
      • Community.Network
      • Community.Okd
      • Community.Postgresql
      • Community.Proxysql
      • Community.Rabbitmq
      • Community.Routeros
      • Community.Sap_Libs
      • Community.Sops
      • Community.Vmware
        • 描述
        • 开发者指南
        • 插件索引
      • Community.Windows
      • Community.Zabbix
    • Containers 命名空间中的集合
    • Cyberark 命名空间中的集合
    • Dellemc 命名空间中的集合
    • F5networks 命名空间中的集合
    • Fortinet 命名空间中的集合
    • Frr 命名空间中的集合
    • Gluster 命名空间中的集合
    • Google 命名空间中的集合
    • Grafana 命名空间中的集合
    • Hetzner 命名空间中的集合
    • Hpe 命名空间中的集合
    • Ibm 命名空间中的集合
    • Ieisystem 命名空间中的集合
    • Infinidat 命名空间中的集合
    • Infoblox 命名空间中的集合
    • Inspur 命名空间中的集合
    • Junipernetworks 命名空间中的集合
    • Kaytus 命名空间中的集合
    • Kubernetes 命名空间中的集合
    • Kubevirt 命名空间中的集合
    • Lowlydba 命名空间中的集合
    • Mellanox 命名空间中的集合
    • Microsoft 命名空间中的集合
    • Netapp 命名空间中的集合
    • Netapp_eseries 命名空间中的集合
    • Netbox 命名空间中的集合
    • Ngine_io 命名空间中的集合
    • Openstack 命名空间中的集合
    • Openvswitch 命名空间中的集合
    • Ovirt 命名空间中的集合
    • Purestorage 命名空间中的集合
    • Sensu 命名空间中的集合
    • Servicenow 命名空间中的集合
    • Splunk 命名空间中的集合
    • T_systems_mms 命名空间中的集合
    • Telekom_mms 命名空间中的集合
    • Theforeman 命名空间中的集合
    • Vmware 命名空间中的集合
    • Vultr 命名空间中的集合
    • Vyos 命名空间中的集合
    • Wti 命名空间中的集合
  • 所有模块和插件的索引
  • Playbook 关键字
  • 返回值
  • Ansible 配置设置
  • 控制 Ansible 的行为:优先级规则
  • YAML 语法
  • Python 3 支持
  • 解释器发现
  • 发行版和维护
  • 测试策略
  • 健全性测试
  • 常见问题
  • 术语表
  • Ansible 参考:模块实用程序
  • 特殊变量
  • Red Hat Ansible Automation Platform
  • Ansible Automation Hub
  • 记录 Ansible 输出

路线图

  • Ansible 路线图
  • ansible-core 路线图




Ansible
  • 集合索引
  • Community 命名空间中的集合
  • Community.Vmware
  • community.vmware.vmware_guest_disk 模块 – 管理给定 vCenter 基础架构中虚拟机的相关磁盘


community.vmware.vmware_guest_disk 模块 – 管理给定 vCenter 基础架构中虚拟机的相关磁盘

注意

此模块是 community.vmware 集合 (版本 5.2.0) 的一部分。

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

要安装它,请使用:ansible-galaxy collection install community.vmware。

要在 playbook 中使用它,请指定:community.vmware.vmware_guest_disk。

  • 概要

  • 参数

  • 备注

  • 示例

  • 返回值

概要

  • 此模块可用于添加、删除和更新属于给定虚拟机的磁盘。

  • 此模块具有破坏性,请在继续操作之前仔细阅读文档。

  • 删除指定的磁盘时请务必小心,因为这可能会导致数据丢失。

参数

参数

注释

datacenter

字符串 / 必需

虚拟机所属的数据中心名称。

disk

列表 / 元素=字典

要添加或删除的磁盘列表。

使用此列表提供虚拟磁盘的相关信息。

默认值: []

autoselect_datastore

布尔值

选择使用率较低的数据存储。仅当未指定 disk[].datastore 时才指定。

当磁盘 disk[].type=vpmemdisk 时不适用。

选项

  • false

  • true

bus_sharing

字符串

仅适用于 Paravirtual SCSI 控制器。

允许在两台虚拟机之间共享 SCSI 总线。

选项

  • "noSharing" ← (默认)

  • "physicalSharing"

  • "virtualSharing"

cluster_disk

布尔值

此值允许在两台机器之间共享 RDM。

持有 RDM 的主机器使用默认值 false。

持有 RDM 的辅助机器使用 true。

选项

  • false ← (默认)

  • true

compatibility_mode

字符串

原始设备的兼容模式。当 disk[].type=rdm 时必需。

选项

  • "physicalMode"

  • "virtualMode"

controller_number

整数

此参数与 disk[].controller_type 一起使用,用于指定控制器总线编号。

对于 disk[].controller_type=ide,有效值为 0 或 1。

选项

  • 0

  • 1

  • 2

  • 3

controller_type

字符串

添加此参数是为了管理连接其他类型控制器的磁盘,例如 SATA 或 NVMe。

如果未指定 disk[].controller_type 或 disk[].scsi_type,则使用 paravirtual 类型。

选项

  • "buslogic"

  • "lsilogic"

  • "lsilogicsas"

  • "paravirtual"

  • "sata"

  • "nvme"

  • "ide"

datastore

字符串

要用于磁盘的数据存储或数据存储集群的名称。

当磁盘 disk[].type=vpmemdisk 时不适用。

destroy

布尔值

如果 disk[].state=absent,请确保从数据存储中删除磁盘文件。

选项

  • false

  • true ← (默认)

disk_mode

字符串

磁盘模式的类型。如果未指定,则对新磁盘使用 persistent 模式。

如果设置为 persistent 模式,则更改会立即永久写入虚拟磁盘。

如果设置为 independent_persistent 模式,则与 persistent 相同,但不受快照的影响。

如果设置为'independent_nonpersistent'模式,虚拟磁盘的更改将写入重做日志并在关机时丢弃,但不会受快照影响。

当磁盘 disk[].type=vpmemdisk 时不适用。

选项

  • “持久性”

  • “独立持久性”

  • “独立非持久性”

文件名

字符串

要使用的现有磁盘映像。文件名必须已存在于数据存储中。

请使用[datastore_name] path/to/file.vmdk格式指定文件名字符串。

当磁盘 disk[].type=vpmemdisk 时不适用。

iolimit

字典

此部分指定存储 I/O 资源的份额和限制。

当disk[].type=vpmemdisk时不适用。

限制

整数

此部分指定限制值,即使有可用资源,虚拟机的使用率也不会超过此限制。

份额

字典

指定用户可以为给定磁盘添加的不同类型的份额。

级别

字符串

指定份额部分的不同级别。

选项

  • “低”

  • “正常”

  • “高”

  • “自定义”

level_value

整数

当disk[].iolimit.shares.level=custom时使用的自定义值。

rdm_path

字符串

对于disk[].type=rdm所需的原始设备映射 (RDM) 的 LUN 路径。

仅当disk[].type=rdm时有效。

scsi_controller

整数

SCSI 控制器编号。每个虚拟机最多允许 4 个 SCSI 控制器。

选项

  • 0

  • 1

  • 2

  • 3

scsi_type

字符串

SCSI 控制器的类型。此值仅在第一次出现 SCSI 控制器时才需要。

如果 SCSI 控制器已存在或disk[].state=absent,则忽略此值。

选项

  • "buslogic"

  • "lsilogic"

  • "lsilogicsas"

  • "paravirtual"

份额

字典

iolimit 部分说明用户可以为磁盘添加的所有不同类型的份额。

当磁盘 disk[].type=vpmemdisk 时不适用。

级别

字符串

说明份额部分的不同级别。

选项

  • “低”

  • “正常”

  • “高”

  • “自定义”

level_value

整数

当disk[].shares.level=custom时使用的自定义值。

共享

布尔值

虚拟磁盘的共享模式。

设置共享意味着多个虚拟机可以写入虚拟磁盘。

仅当disk[].type=eagerzeroedthick或disk[].type=rdm时才能设置共享。

选项

  • false ← (默认)

  • true

大小

字符串

磁盘存储大小。

如果指定了大小,则必须指定单位。大小数字和单位之间不允许有空格。

即使有多个 size* 参数可用,也只考虑磁盘元素中的第一次出现。

size_gb

整数

以 GB 为单位的磁盘存储大小。

size_kb

整数

以 KB 为单位的磁盘存储大小。

size_mb

整数

以 MB 为单位的磁盘存储大小。

size_tb

整数

以 TB 为单位的磁盘存储大小。

状态

字符串

磁盘状态。

如果设置为absent,则将永久从虚拟机配置和 VMware 存储中删除磁盘。

如果设置为present,则如果在给定的控制器和单元号上不存在磁盘,则会添加磁盘。

或者磁盘存在但大小不同,则会增加磁盘大小,不允许减小磁盘大小。

选项

  • "present" ← (默认值)

  • “不存在”

类型

字符串

磁盘类型,如果未指定,则对新磁盘使用thick类型,无 eagerzero。

选项

  • “精简配置”

  • “预先清零的厚置”

  • “厚置”

  • “RDM”

  • “vpmemdisk”

unit_number

整数 / 必需

磁盘单元号。

有效值范围为 0 到 15,SCSI 控制器除外,其值为 7。

对于虚拟硬件版本 14 或更高的虚拟 SCSI 控制器,有效值范围为 0 到 64,SCSI 控制器除外,其值为 7。

SATA 控制器的有效值范围为 0 到 29。

NVME 控制器的有效值范围为 0 到 14。

IDE 控制器的有效值范围为 0 到 1。

文件夹

字符串

目标文件夹,查找现有客户机的绝对路径或相对路径。

如果找到多个名称相同的虚拟机,则此参数为必需参数。

文件夹应包含数据中心。ESX 的数据中心是 ha-datacenter

示例

folder: /ha-datacenter/vm

folder: ha-datacenter/vm

folder: /datacenter1/vm

folder: datacenter1/vm

folder: /datacenter1/vm/folder1

folder: datacenter1/vm/folder1

folder: /folder1/datacenter1/vm

folder: folder1/datacenter1/vm

folder: /folder1/datacenter1/vm/folder2

主机名

字符串

vSphere vCenter 或 ESXi 服务器的主机名或 IP 地址。

如果任务中未指定此值,则将使用环境变量VMWARE_HOST的值。

moid

字符串

如果已知,则为要管理的实例的管理对象 ID,这是单个 vCenter 实例内的唯一标识符。

如果未提供name或uuid,则需要此参数。

名称

字符串

虚拟机的名称。

如果未提供参数uuid或moid,则此参数为必需参数。

密码

别名:pass、pwd

字符串

vSphere vCenter 或 ESXi 服务器的密码。

如果任务中未指定此值,则将使用环境变量VMWARE_PASSWORD的值。

端口

整数

vSphere vCenter 或 ESXi 服务器的端口号。

如果任务中未指定此值,则将使用环境变量VMWARE_PORT的值。

默认值:443

proxy_host

字符串

将接收所有 HTTPS 请求并转发它们的代理的地址。

格式为主机名或 IP。

如果任务中未指定此值,则将使用环境变量VMWARE_PROXY_HOST的值。

proxy_port

整数

将接收所有 HTTPS 请求并转发它们的 HTTP 代理的端口。

如果任务中未指定此值,则将使用环境变量VMWARE_PROXY_PORT的值。

use_instance_uuid

布尔值

是否使用 VMware 实例 UUID 而不是 BIOS UUID。

选项

  • false ← (默认)

  • true

用户名

别名:admin、user

字符串

vSphere vCenter 或 ESXi 服务器的用户名。

如果任务中未指定此值,则将使用环境变量VMWARE_USER的值。

uuid

字符串

如果已知,则为要收集信息的实例的 UUID,这是 VMware 的唯一标识符。

如果未提供参数name或moid,则需要此参数。

validate_certs

布尔值

允许在 SSL 证书无效时进行连接。当证书不受信任时,将其设置为false。

如果任务中未指定此值,则将使用环境变量VMWARE_VALIDATE_CERTS的值。

选项

  • false

  • true ← (默认)

注释

注意

  • 所有模块都需要 API 写入访问权限,因此不受免费 ESXi 许可证支持。

  • 所有变量和 VMware 对象名称都区分大小写。

示例

- name: Add disks to virtual machine using UUID
  community.vmware.vmware_guest_disk:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    datacenter: "{{ datacenter_name }}"
    uuid: 421e4592-c069-924d-ce20-7e7533fab926
    disk:
      - size_mb: 10
        type: thin
        datastore: datacluster0
        state: present
        scsi_controller: 1
        unit_number: 1
        scsi_type: 'paravirtual'
        disk_mode: 'persistent'
      - size_gb: 10
        type: eagerzeroedthick
        state: present
        autoselect_datastore: true
        scsi_controller: 2
        scsi_type: 'buslogic'
        unit_number: 12
        disk_mode: 'independent_persistent'
      - size: 10Gb
        type: eagerzeroedthick
        state: present
        autoselect_datastore: true
        scsi_controller: 2
        scsi_type: 'buslogic'
        unit_number: 1
        disk_mode: 'independent_nonpersistent'
      - filename: "[datastore1] path/to/existing/disk.vmdk"
  delegate_to: localhost
  register: disk_facts

- name: Add disks with specified shares to the virtual machine
  community.vmware.vmware_guest_disk:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    datacenter: "{{ datacenter_name }}"
    disk:
      - size_gb: 1
        type: thin
        datastore: datacluster0
        state: present
        scsi_controller: 1
        unit_number: 1
        disk_mode: 'independent_persistent'
        shares:
          level: custom
          level_value: 1300
  delegate_to: localhost
  register: test_custom_shares

- name: Add physical raw device mapping to virtual machine using name
  community.vmware.vmware_guest_disk:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    datacenter: "{{ datacenter_name }}"
    validate_certs: false
    name: "Test_VM"
    disk:
      - type: rdm
        state: present
        scsi_controller: 1
        unit_number: 5
        rdm_path: /vmfs/devices/disks/naa.060000003b1234efb453
        compatibility_mode: 'physicalMode'

- name: Add virtual raw device mapping to virtual machine using name and virtual mode
  community.vmware.vmware_guest_disk:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    datacenter: "{{ datacenter_name }}"
    validate_certs: false
    name: "Test_VM"
    disk:
      - type: rdm
        state: present
        scsi_controller: 1
        unit_number: 5
        rdm_path: /vmfs/devices/disks/naa.060000003b1234efb453
        compatibility_mode: 'virtualMode'
        disk_mode: 'persistent'

- name: Add raw device mapping to virtual machine with Physical bus sharing
  community.vmware.vmware_guest_disk:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    datacenter: "{{ datacenter_name }}"
    validate_certs: false
    name: "Test_VM"
    disk:
      - type: rdm
        state: present
        scsi_controller: 1
        unit_number: 5
        rdm_path: /vmfs/devices/disks/naa.060000003b1234efb453
        compatibility_mode: 'virtualMode'
        disk_mode: 'persistent'
        bus_sharing: physicalSharing

- name: Add raw device mapping to virtual machine with Physical bus sharing and clustered disk
  community.vmware.vmware_guest_disk:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    datacenter: "{{ datacenter_name }}"
    validate_certs: false
    name: "Test_VM"
    disk:
      - type: rdm
        state: present
        scsi_controller: 1
        unit_number: 5
        compatibility_mode: 'virtualMode'
        disk_mode: 'persistent'
        bus_sharing: physicalSharing
        filename: "[datastore1] path/to/rdm/disk-marker.vmdk"

- name: create new disk with custom IO limits and shares in IO Limits
  community.vmware.vmware_guest_disk:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    datacenter: "{{ datacenter_name }}"
    disk:
      - size_gb: 1
        type: thin
        datastore: datacluster0
        state: present
        scsi_controller: 1
        unit_number: 1
        disk_mode: 'independent_persistent'
        iolimit:
            limit: 1506
            shares:
              level: custom
              level_value: 1305
  delegate_to: localhost
  register: test_custom_IoLimit_shares

- name: Remove disks from virtual machine using name
  community.vmware.vmware_guest_disk:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    datacenter: "{{ datacenter_name }}"
    name: VM_225
    disk:
      - state: absent
        scsi_controller: 1
        unit_number: 1
  delegate_to: localhost
  register: disk_facts

- name: Remove disk from virtual machine using moid
  community.vmware.vmware_guest_disk:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    datacenter: "{{ datacenter_name }}"
    moid: vm-42
    disk:
      - state: absent
        scsi_controller: 1
        unit_number: 1
  delegate_to: localhost
  register: disk_facts

- name: Remove disk from virtual machine but keep the VMDK file on the datastore
  community.vmware.vmware_guest_disk:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    datacenter: "{{ datacenter_name }}"
    name: VM_225
    disk:
      - state: absent
        scsi_controller: 1
        unit_number: 2
        destroy: false
  delegate_to: localhost
  register: disk_facts

- name: Add disks to virtual machine using UUID to SATA and NVMe controller
  community.vmware.vmware_guest_disk:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    datacenter: "{{ datacenter_name }}"
    validate_certs: false
    uuid: 421e4592-c069-924d-ce20-7e7533fab926
    disk:
      - size_mb: 256
        type: thin
        datastore: datacluster0
        state: present
        controller_type: sata
        controller_number: 1
        unit_number: 1
        disk_mode: 'persistent'
      - size_gb: 1
        state: present
        autoselect_datastore: true
        controller_type: nvme
        controller_number: 2
        unit_number: 3
        disk_mode: 'independent_persistent'
  delegate_to: localhost
  register: disk_facts

- name: Add a new vPMem disk to virtual machine to SATA controller
  community.vmware.vmware_guest_disk:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    datacenter: "{{ datacenter_name }}"
    validate_certs: false
    name: VM_226
    disk:
      - type: vpmemdisk
        size_gb: 1
        state: present
        controller_type: sata
        controller_number: 1
        unit_number: 2
  delegate_to: localhost
  register: disk_facts

返回值

常见的返回值已在此处记录,以下是此模块独有的字段

键

描述

disk_changes

字典

每个任务的结果,键是基于0的索引,与定义任务的顺序相同

返回值:始终返回

示例: {"0": "磁盘已删除。", "1": "磁盘已创建。"}

disk_data

字典

管理虚拟机的磁盘后,关于磁盘的元数据

返回值:始终返回

示例: {"0": {"backing_datastore": "datastore2", "backing_disk_mode": "persistent", "backing_eagerlyscrub": false, "backing_filename": "[datastore2] VM_225/VM_225.vmdk", "backing_thinprovisioned": false, "backing_uuid": "421e4592-c069-924d-ce20-7e7533fab926", "backing_writethrough": false, "capacity_in_bytes": 10485760, "capacity_in_kb": 10240, "controller_key": 1000, "key": 2000, "label": "硬盘 1", "summary": "10,240 KB", "unit_number": 0}}

作者

  • Abhijeet Kasurde (@Akasurde)

集合链接

  • 问题追踪器
  • 主页
  • 代码仓库
上一页 下一页

© 版权所有 Ansible 项目贡献者。 上次更新于 2024年12月19日。