• 博客
  • 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 参考:模块实用程序
  • 特殊变量
  • 红帽 Ansible 自动化平台
  • Ansible 自动化中心
  • 记录 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。

  • 概要

  • 参数

  • 备注

  • 示例

  • 返回值

概要

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

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

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

参数

参数

注释

数据中心

字符串 / 必需

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

磁盘

列表 / 元素=字典

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

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

默认值: []

自动选择数据存储

布尔值

选择使用较少的数据存储。仅在未指定 disk[].datastore 时指定。

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

选择

  • false

  • true

总线共享

字符串

仅适用于准虚拟 SCSI 控制器。

允许在两个虚拟机之间共享 scsi 总线。

选择

  • "noSharing" ← (默认)

  • "physicalSharing"

  • "virtualSharing"

群集磁盘

布尔值

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

保存 RDM 的主机器使用默认的 false。

保存 RDM 的辅助机器使用 true。

选择

  • false ← (默认)

  • true

兼容模式

字符串

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

选择

  • "physicalMode"

  • "virtualMode"

控制器编号

整数

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

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

选择

  • 0

  • 1

  • 2

  • 3

控制器类型

字符串

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

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

选择

  • "buslogic"

  • "lsilogic"

  • "lsilogicsas"

  • "paravirtual"

  • "sata"

  • "nvme"

  • "ide"

数据存储

字符串

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

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

销毁

布尔值

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

选择

  • false

  • true ← (默认)

磁盘模式

字符串

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

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

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

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

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

选择

  • "persistent"

  • "independent_persistent"

  • "independent_nonpersistent"

文件名

字符串

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

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

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

iolimit

字典

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

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

限制

整数

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

共享

字典

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

级别

字符串

指定共享部分的不同级别。

选择

  • "low"

  • "normal"

  • "high"

  • "custom"

level_value

整数

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

rdm_path

字符串

用于裸设备映射的 LUN 路径,当 disk[].type=rdm 时需要。

仅当 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 时不适用。

级别

字符串

说明共享部分的各个级别。

选择

  • "low"

  • "normal"

  • "high"

  • "custom"

level_value

整数

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

sharing

布尔值

虚拟磁盘的共享模式。

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

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

选择

  • false ← (默认)

  • true

size

字符串

磁盘存储大小。

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

即使有多个 size* 参数可用,也只考虑 disk 元素中的第一个。

size_gb

整数

磁盘存储大小,单位为 gb。

size_kb

整数

磁盘存储大小,单位为 kb。

size_mb

整数

磁盘存储大小,单位为 mb。

size_tb

整数

磁盘存储大小,单位为 tb。

state

字符串

磁盘的状态。

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

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

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

选择

  • "present" ← (默认)

  • "absent"

type

字符串

磁盘的类型,如果未指定,则新磁盘使用 thick 类型,不进行预先置零。

选择

  • "thin"

  • "eagerzeroedthick"

  • "thick"

  • "rdm"

  • "vpmemdisk"

unit_number

integer / 必需

磁盘单元号。

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

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

对于 SATA 控制器,有效值范围为 0 到 29。

对于 NVME 控制器,有效值范围为 0 到 14。

对于 IDE 控制器,有效值范围为 0 到 1。

folder

字符串

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

仅当找到多个同名虚拟机时,此参数为必需。

文件夹应包含数据中心。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

hostname

字符串

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

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

moid

字符串

要管理的实例的托管对象 ID(如果已知),这是单个 vCenter 实例中的唯一标识符。

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

name

字符串

虚拟机的名称。

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

password

别名: pass, pwd

字符串

vSphere vCenter 或 ESXi 服务器的密码。

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

port

整数

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

username

别名: 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 月 06 日。