Luego de de nuestra extensa compilación de información pudimos solucionar esta incógnita que presentan muchos usuarios. Te dejamos la respuesta y deseamos servirte de gran apoyo.
Nota
Este complemento es parte del community.general collection (versión 2.0.1).
Para instalarlo use: ansible-galaxy collection install community.general
.
Para usarlo en un libro de jugadas, especifique: community.general.xenserver_guest
.
- Sinopsis
- Requisitos
- Parámetros
- Notas
- Ejemplos de
- Valores devueltos
Sinopsis
- Este módulo se puede utilizar para crear nuevas máquinas virtuales a partir de plantillas u otras máquinas virtuales, modificar varios componentes de la máquina virtual como la red y el disco, cambiar el nombre de una máquina virtual y eliminar una máquina virtual con componentes asociados.
Requisitos
Los siguientes requisitos son necesarios en el host que ejecuta este módulo.
- pitón> = 2.6
- XenAPI
Parámetros
Parámetro | Opciones / Valores predeterminados | Comentarios |
---|---|---|
CD ROMdiccionario | Una configuración de CD-ROM para la VM. Todos los parámetros distinguen entre mayúsculas y minúsculas. Los parámetros válidos son: – type (cadena): el tipo de CD-ROM, las opciones válidas son none o iso . Con none el dispositivo de CD-ROM estará presente pero vacío. iso_name (cadena): el nombre de archivo de una imagen ISO de una de las bibliotecas ISO de XenServer (implica type: iso ). Requerido si type se establece en iso . |
|
custom_paramslista / elementos = diccionario | Definir una lista de parámetros de VM personalizados para configurar en VM. Útil para usuarios avanzados familiarizados con la administración de parámetros de VM a través de la CLI xe. Un objeto de valor personalizado toma dos campos key y value (ver ejemplo a continuación). |
|
discoslista / elementos = diccionario | Una lista de discos para agregar a la VM. Todos los parámetros distinguen entre mayúsculas y minúsculas. No se admite la eliminación o desconexión de los discos existentes de la VM. Parámetros requeridos por entrada: – size_[tb,gb,mb,kb,b] (entero): tamaño de almacenamiento en disco en la unidad especificada. Es necesario apagar la máquina virtual para reconfigurar este parámetro. Parámetros opcionales por entrada: – name (cadena): nombre del disco. También puedes usar name_label como un alias.- name_desc (cadena): descripción del disco.- sr (cadena): Repositorio de almacenamiento para crear el disco. Si no se especifica, utilizará el SR predeterminado. No se puede utilizar para mover el disco a otro SR. sr_uuid (cadena): UUID de un SR para crear el disco. Úselo si el nombre de SR no es único.alias: disco |
|
carpetacuerda | Carpeta de destino para VM.Este parámetro distingue entre mayúsculas y minúsculas.Ejemplo: carpeta: / carpeta1 / carpeta2 | |
fuerzabooleano |
|
Ignore las advertencias y complete las acciones. Este parámetro es útil para eliminar la VM en estado de ejecución o para volver a configurar los parámetros de VM que requieren que la VM se apague. |
hardwarediccionario | Administrar los parámetros de hardware de la VM. Es necesario apagar la máquina virtual para reconfigurar estos parámetros.Los parámetros válidos son: – num_cpus (entero): Número de CPUs.- num_cpu_cores_per_socket (entero): número de núcleos por socket. num_cpus tiene que ser un múltiplo de num_cpu_cores_per_socket .- memory_mb (entero): cantidad de memoria en MB. |
|
home_servercuerda | Nombre de un host XenServer que será un servidor doméstico para la máquina virtual. Este parámetro distingue entre mayúsculas y minúsculas. | |
nombre de hostcuerda | Defecto: “localhost” |
El nombre de host o la dirección IP del host de XenServer o el maestro del grupo de XenServer. Si el valor no se especifica en la tarea, el valor de la variable de entorno XENSERVER_HOST se utilizará en su lugar.alias: host, pool |
is_templatebooleano |
|
Convierta la máquina virtual en una plantilla. |
Linked_clonebooleano |
|
Ya sea para crear un clon vinculado a partir de la plantilla, la máquina virtual existente o la instantánea. Si no, creará una copia completa. Esto es equivalente a Use storage-level fast disk clone opción en XenCenter. |
nombrecuerda / requerido | Nombre de la VM con la que trabajar. Las VM que se ejecutan en XenServer no necesariamente tienen nombres únicos. El módulo fallará si se encuentran varias máquinas virtuales con el mismo nombre. En caso de varias máquinas virtuales con el mismo nombre, utilice uuid para especificar de forma exclusiva la máquina virtual que se va a administrar. Este parámetro distingue entre mayúsculas y minúsculas.alias: name_label |
|
name_desccuerda | Descripción de VM. | |
redeslista / elementos = diccionario | Una lista de redes (en el orden de las NIC). Todos los parámetros distinguen entre mayúsculas y minúsculas. Parámetros requeridos por entrada: – name (cadena): nombre de una red XenServer a la que conectar la interfaz de red. También puedes usar name_label como un alias Parámetros opcionales por entrada (utilizados para hardware de VM): – mac (cadena): Personaliza la dirección MAC de la interfaz Parámetros opcionales por entrada (utilizados para la personalización del sistema operativo): – type (cadena): tipo de asignación de IPv4, las opciones válidas son none , dhcp o static . Valor none significa lo que sea predeterminado para el sistema operativo. En algunos sistemas operativos, podría estar configurado con DHCP (por ejemplo, Windows) o una interfaz no configurada (por ejemplo, Linux). ip (cadena): dirección IPv4 estática (implica type: static ). Puede incluir prefijo en formato netmask .- netmask (string): Static IPv4 netmask required for ip if prefix is not specified.- gateway (string): Static IPv4 gateway.- type6 (string): Type of IPv6 assignment, valid options are none , dhcp or static . Value none means whatever is default for OS. On some operating systems it could be DHCP configured (e.g. Windows) or unconfigured interface (e.g. Linux).- ip6 (string): Static IPv6 address (implies type6: static ) with prefix in format gateway6 (string): Static IPv6 gateway.aliases: network | |
passwordstring | The password to use for connecting to XenServer.If the value is not specified in the task, the value of environment variable XENSERVER_PASSWORD will be used instead.aliases: pass, pwd | |
statestring |
| Specify the state VM should be in.If state is set to present and VM exists, ensure the VM configuration conforms to given parameters.If state is set to present and VM does not exist, then VM is deployed with given parameters.If state is set to absent and VM exists, then VM is removed with its associated components.If state is set to poweredon and VM does not exist, then VM is deployed with given parameters and powered on automatically. |
state_change_timeoutinteger | Default: 0 | By default, module will wait indefinitely for VM to accquire an IP address if wait_for_ip_address: yes .If this parameter is set to positive value, the module will instead wait specified number of seconds for the state change.In case of timeout, module will generate an error message. |
templatestring | Name of a template, an existing VM (must be shut down) or a snapshot that should be used to create VM.Templates/VMs/snapshots on XenServer do not necessarily have unique names. The module will fail if multiple templates with same name are found.In case of multiple templates/VMs/snapshots with same name, use template_uuid to uniquely specify source template.If VM already exists, this setting will be ignored.This parameter is case sensitive.aliases: template_src | |
template_uuidstring | UUID of a template, an existing VM or a snapshot that should be used to create VM.It is required if template name is not unique. | |
usernamestring | Default: “root” | The username to use for connecting to XenServer.If the value is not specified in the task, the value of environment variable XENSERVER_USER will be used instead.aliases: admin, user |
uuidstring | UUID of the VM to manage if known. This is XenServer’s unique identifier.It is required if name is not unique.Please note that a supplied UUID will be ignored on VM creation, as XenServer creates the UUID internally. | |
validate_certsboolean |
| Allows connection when SSL certificates are not valid. Set to false when certificates are not trusted.If the value is not specified in the task, the value of environment variable XENSERVER_VALIDATE_CERTS will be used instead. |
wait_for_ip_addressboolean |
| Wait until XenServer detects an IP address for the VM. If state is set to absent , this parameter is ignored.This requires XenServer Tools to be preinstalled on the VM to work properly. |
Notes
Note
- Minimal supported version of XenServer is 5.6.
- Module was tested with XenServer 6.5, 7.1, 7.2, 7.6, Citrix Hypervisor 8.0, XCP-ng 7.6 and 8.0.
- To acquire XenAPI Python library, just run
pip install XenAPI
on your Ansible Control Node. The library can also be found inside Citrix Hypervisor/XenServer SDK (downloadable from Citrix website). Copy the XenAPI.py file from the SDK to your Python site-packages on your Ansible Control Node to use it. Latest version of the library can also be acquired from GitHub: https://raw.githubusercontent.com/xapi-project/xen-api/master/scripts/examples/python/XenAPI/XenAPI.py - If no scheme is specified in
hostname
, module defaults tohttp://
becausehttps://
is problematic in most setups. Make sure you are accessing XenServer host in trusted environment or usehttps://
scheme explicitly. - To use
https://
scheme forhostname
you have to either import host certificate to your OS certificate store or usevalidate_certs: no
which requires XenAPI library from XenServer 7.2 SDK or newer and Python 2.7.9 or newer. - Network configuration inside a guest OS, by using
networks.type
,networks.ip
,networks.gateway
etc. parameters, is supported on XenServer 7.0 or newer for Windows guests by using official XenServer Guest agent support for network configuration. The module will try to detect if such support is available and utilize it, else it will use a custom method of configuration via xenstore. Since XenServer Guest agent only support None and Static types of network configuration, where None means DHCP configured interface,networks.type
andnetworks.type6
valuesnone
anddhcp
have same effect. More info here: https://www.citrix.com/community/citrix-developer/citrix-hypervisor-developer/citrix-hypervisor-developing-products/citrix-hypervisor-staticip.html - On platforms without official support for network configuration inside a guest OS, network parameters will be written to xenstore
vm-data/networks/
key. Parameters can be inspected by usingxenstore ls
andxenstore read
tools on *nix guests or trough WMI interface on Windows guests. They can also be found in VM factsinstance.xenstore_data
key as returned by the module. It is up to the user to implement a boot time scripts or custom agent that will read the parameters from xenstore and configure network with given parameters. Take note that for xenstore data to become available inside a guest, a VM restart is needed hence module will require VM restart if any parameter is changed. This is a limitation of XenAPI and xenstore. Considering these limitations, network configuration trough xenstore is most useful for bootstraping newly deployed VMs, much less for reconfiguring existing ones. More info here: https://support.citrix.com/article/CTX226713
Examples
-name: Create a VM from a template community.general.xenserver_guest:hostname:" xenserver_hostname "username:" xenserver_username "password:" xenserver_password "validate_certs: no folder: /testvms name: testvm_2 state: poweredon template: CentOS 7 disks:-size_gb:10sr: my_sr hardware:num_cpus:6num_cpu_cores_per_socket:3memory_mb:512cdrom:type: iso iso_name: guest-tools.iso networks:-name: VM Network mac: aa:bb:dd:aa:00:14wait_for_ip_address: yes delegate_to: localhost register: deploy -name: Create a VM template community.general.xenserver_guest:hostname:" xenserver_hostname "username:" xenserver_username "password:" xenserver_password "validate_certs: no folder: /testvms name: testvm_6 is_template: yes disk:-size_gb:10sr: my_sr hardware:memory_mb:512num_cpus:1delegate_to: localhost register: deploy -name: Rename a VM (requires the VM's UUID) community.general.xenserver_guest:hostname:" xenserver_hostname "username:" xenserver_username "password:" xenserver_password "uuid: 421e4592-c069-924d-ce20-7e7533fab926 name: new_name state: present delegate_to: localhost -name: Remove a VM by UUID community.general.xenserver_guest:hostname:" xenserver_hostname "username:" xenserver_username "password:" xenserver_password "uuid: 421e4592-c069-924d-ce20-7e7533fab926 state: absent delegate_to: localhost -name: Modify custom params (boot order) community.general.xenserver_guest:hostname:" xenserver_hostname "username:" xenserver_username "password:" xenserver_password "name: testvm_8 state: present custom_params:-key: HVM_boot_params value:"order":"ndc"delegate_to: localhost -name: Customize network parameters community.general.xenserver_guest:hostname:" xenserver_hostname "username:" xenserver_username "password:" xenserver_password "name: testvm_10 networks:-name: VM Network ip: 192.168.1.100/24 gateway: 192.168.1.1 -type: dhcp delegate_to: localhost
Valores devueltos
Los valores de retorno comunes están documentados aquí, los siguientes son los campos exclusivos de este módulo:
Llave | Devuelto | Descripción |
---|---|---|
cambioslista / elementos = cadena | siempre | Detectado o realizado cambios en la VM Muestra:[‘hardware’: [‘num_cpus’], ‘disks_changed’: [[], [‘size’]], ‘disks_new’: [‘name’: ‘new-disk’, ‘name_desc’: ”, ‘position’: 2, ‘size_gb’: ‘4’, ‘vbd_userdevice’: ‘2’], ‘CD ROM’: [‘type’, ‘iso_name’], ‘networks_changed’: [[‘mac’]], ‘networks_new’: [‘name’: ‘Pool-wide network associated with eth2’, ‘position’: 1, ‘vif_device’: ‘1’], ‘need_poweredoff’] |
ejemplodiccionario | siempre | Metadatos sobre la VM Muestra:‘cdrom’: ‘tipo’: ‘ninguno’, ‘agente_personalización’: ‘nativo’, ‘discos’: [‘name’: ‘testvm_11-0’, ‘name_desc’: ”, ‘os_device’: ‘xvda’, ‘size’: 42949672960, ‘sr’: ‘Local storage’, ‘sr_uuid’: ‘0af1245e-bdb0-ba33-1446-57a962ec4075’, ‘vbd_userdevice’: ‘0’, ‘name’: ‘testvm_11-1’, ‘name_desc’: ”, ‘os_device’: ‘xvdb’, ‘size’: 42949672960, ‘sr’: ‘Local storage’, ‘sr_uuid’: ‘0af1245e-bdb0-ba33-1446-57a962ec4075’, ‘vbd_userdevice’: ‘1’], ‘domid’: ’56’, ‘carpeta’: ”, ‘hardware’: ‘memory_mb’: 8192, ‘num_cpu_cores_per_socket’: 2, ‘num_cpus’: 4, ‘home_server’: ”, ‘is_template’ : False, ‘nombre’: ‘testvm_11’, ‘name_desc’: ”, ‘redes’: [‘gateway’: ‘192.168.0.254’, ‘gateway6’: ‘fc00::fffe’, ‘ip’: ‘192.168.0.200’, ‘ip6’: [‘fe80:0000:0000:0000:e9cb:625a:32c5:c291’, ‘fc00:0000:0000:0000:0000:0000:0000:0001’], ‘mac’: ‘ba: 91: 3a: 48: 20: 76’, ‘mtu’: ‘1500’, ‘name’: ‘Red de todo el grupo asociada con eth1’, ‘netmask’: ‘255.255.255.128’ , ‘prefix’: ’25’, ‘prefix6′: ’64’, ‘vif_device’: ‘0’]’other_config’: ‘base_template_name’: ‘Windows Server 2016 (64 bits)’, ‘import_task’ : ‘OpaqueRef: e43eb71c-45d6-5351-09ff-96e4fb7d0fa5’, ‘install-methods’: ‘cdrom’, ‘instant’: ‘true’, ‘mac_seed’: ‘f83e8d8a-cfdc-b105-b054-ef5cb416b77e’, ‘plataforma’: ‘acpi’: ‘1’, ‘apic’: ‘true’, ‘núcleos por socket’: ‘2’, ‘device_id’: ‘0002’, ‘hpet’: ‘true’, ‘ nx ‘:’ true ‘,’ pae ‘:’ true ‘,’ timeoffset ‘:’ -25200 ‘,’ vga ‘:’ std ‘,’ videoram ‘:’ 8 ‘,’ viridian ‘:’ true ‘,’ viridian_reference_tsc ‘:’ true ‘,’ viridian_time_ref_count ‘:’ true ‘,’ state ‘:’ poweredon ‘,’ uuid ‘:’ e3c0b2d5-5f05-424e-479c-d3df8b3e7cda ‘,’ xenstore_data ‘: ‘ vm-data ‘: ” |
Autores
- Bojan Vitnik (@bvitnik)bvitnik@convencional.rs>
Recuerda algo, que tienes la opción de decir .
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)