.. _scale_computing.hypercore.vm_disk_module: vm_disk -- Manage VM's disks ============================ Use this module to add, delete or set disks to the VM. The module can also remove all disks from a VM, attach and/or detach ISO image to the VM by ISO's name, detach ISO image from the VM by disk's disk slot, or update the existing disks (disk size etc.). .. versionadded:: 0.0.1 Examples -------- .. code-block:: yaml+jinja - name: Set exact disk scale_computing.hypercore.vm_disk: vm_name: demo-vm force_reboot: true shutdown_timeout: "{{ '5minutes' | community.general.to_time_unit('seconds') }}" items: - disk_slot: 0 type: virtio_disk size: "{{ '10.1 GB' | human_to_bytes }}" state: set - name: Remove all disks scale_computing.hypercore.vm_disk: vm_name: demo-vm items: [] state: set force: true - name: Remove one disk scale_computing.hypercore.vm_disk: vm_name: demo-vm items: - disk_slot: 0 type: virtio_disk state: absent - name: Example add/update one disk. scale_computing.hypercore.vm_disk: vm_name: demo-vm items: - disk_slot: 0 type: virtio_disk size: "{{ '10.1 GB' | human_to_bytes }}" state: present - name: Attach existing ISO image to existing VM scale_computing.hypercore.vm_disk: vm_name: demo-vm items: - name: CentOS-Stream-9-latest-x86_64-dvd1.iso disk_slot: 0 type: ide_cdrom state: present - name: Detach ISO image from cdrom disk on slot 0 scale_computing.hypercore.vm_disk: vm_name: demo-vm items: - name: CentOS-Stream-9-latest-x86_64-dvd1.iso disk_slot: 0 type: ide_cdrom state: absent - name: Detach ISO image from existing VM, find CD-ROM by slot number and type scale_computing.hypercore.vm_disk: vm_name: demo-vm items: - disk_slot: 0 type: ide_cdrom state: absent - name: Update existing disk - resize, change type etc scale_computing.hypercore.vm_disk: vm_name: demo-vm items: - disk_slot: 0 type: ide_disk type_new: virtio_disk size: "{{ '11.1 GB' | human_to_bytes }}" cache_mode: writeback state: present - name: Resize disk scale_computing.hypercore.vm_disk: vm_name: demo-vm items: - disk_slot: 0 type: virtio_disk size: "{{ '20 GB' | human_to_bytes }}" state: present Notes ----- .. note:: ``check_mode`` is not supported. Parameters ---------- cluster_instance (optional) Scale Computing HyperCore instance information. | **type**: dict host (required) The HyperCore instance URL. If not set, the value of the ``SC_URL`` environment variable will be used. For example "https://10.1.2.3:443". | **type**: str password (required) Password used for authentication. If not set, the value of the ``SC_PASSWORD`` environment variable will be used. | **type**: str timeout (optional) Timeout in seconds for the connection with the Scale Computing HyperCore API instance. If not set, the value of the ``SC_TIMEOUT`` environment variable will be used. | **type**: float username (required) Username used for authentication. If not set, the value of the ``SC_USERNAME`` environment variable will be used. | **type**: str force (optional) A safeguard to prevent unintentional removal of all disks. To remove all disks, items should be set to *items=[]* and state should be *state=set* (see example below). In addition, the *force=true* must be provided. | **type**: bool force_reboot (optional) Can VM be forced to power off and on. Only used when modifications to the VM require it to be powered off and VM does not respond to a shutdown request within *shutdown_timeout* limit. Before this is utilized, a shutdown request is sent. | **type**: bool items (optional) The disk items we want to change. | **type**: list cache_mode (optional) The cache mode the VM will use. | **type**: str | **choices**: none, writeback, writethrough disable_snapshotting (optional) Disables the ability to snapshot the drive. | **type**: bool disk_slot (required) Virtual slot the drive will occupy. | **type**: int iso_name (optional) The name of ISO image we want to attach/detach from existing VM. In case of attaching ISO image (see example below), name is required. In case of detaching ISO image (see example below), name is optional. If not specified, ISO image present on the ``ide_cdrom`` disk will get removed. | **type**: str size (optional) Logical size of the device in bytes. Can be used for resizing or creating the disk. In case you're creating a disk, size needs to be specified. | **type**: int tiering_priority_factor (optional) SSD tiering priority factor for block placement. Check the tiering documentation for best practices when modifying this. tiering_priority_factor won't be relevant on cluster that only has a single tier - ie. only spinning disk or all flash. | **type**: int type (required) The bus type the VirDomainBlockDevice will use. If *type=ide_cdrom*, it's assumed you want to attach ISO image to cdrom disk. In that case, field name is required. | **type**: str | **choices**: ide_cdrom, virtio_disk, ide_disk, scsi_disk, ide_floppy, nvram type_new (optional) Only relevant if we want to update the disk parameters. The type we want to assign the disk with. | **type**: str shutdown_timeout (optional) How long does ansible controller wait for VMs response to a shutdown request. In seconds. | **type**: float | **default**: 300 state (required) The desired state of the disks specified by *items*. With *state=present* (or *state=absent*), the disks in *items* are added to VM, or removed from VM. Individual disk is resized if needed. With *state=set*, the VM is reconfigured to have exactly such disks as specified by *items*. | **type**: str | **choices**: present, absent, set vm_name (required) Virtual machine name. Used to identify selected virtual machine by name. | **type**: str Return Values ------------- record The modified record from the HyperCore API endpoint ``/rest/v1/VirDomainBlockDevice``. **sample**: .. code-block:: yaml cache_mode: NONE disable_snapshotting: false disk_slot: 0 mount_points: [] name: jc1-disk-0 read_only: false size: 81001000100 tiering_priority_factor: 8 type: VIRTIO_DISK uuid: 056ea04b-069c-4a22-84d5-5489b100029f vm_uuid: 1596dab1-6f90-494c-9607-b14221830433