Note
This plugin is part of the community.general collection (version 3.8.1).
You might already have this collection installed if you are using the ansible
package. It is not included in ansible-core
. To check whether it is installed, run ansible-galaxy collection list
.
To install it, use: ansible-galaxy collection install community.general
.
To use it in a playbook, specify: community.general.one_vm
.
The below requirements are needed on the host that executes this module.
Parameter | Choices/Defaults | Comments |
---|---|---|
api_password string | Password of the user to login into OpenNebula RPC server. If not set then the value of the ONE_PASSWORD environment variable is used.if both api_username or api_password are not set, then it will try authenticate with ONE auth file. Default path is "~/.one/one_auth". Set environment variable ONE_AUTH to override this path. | |
api_url string | URL of the OpenNebula RPC server. It is recommended to use HTTPS so that the username/password are not transferred over the network unencrypted. If not set then the value of the ONE_URL environment variable is used. | |
api_username string | Name of the user to login into the OpenNebula RPC server. If not set then the value of the ONE_USERNAME environment variable is used. | |
attributes dictionary | Default: {} | A dictionary of key/value attributes to add to new instances, or for setting state of instances with these attributes.Keys are case insensitive and OpenNebula automatically converts them to upper case. Be aware NAME is a special attribute which sets the name of the VM when it's deployed.# character(s) can be appended to the NAME and the module will automatically addindexes to the names of VMs. For example':' NAME':' foo-### would create VMs with names foo-000 , foo-001 ,...When used with count_attributes and exact_count the module willmatch the base name without the index part. |
count integer | Default: 1 | Number of instances to launch |
count_attributes dictionary | A dictionary of key/value attributes that can only be used with exact_count to determine how many nodes based on a specificattributes criteria should be deployed. This can be expressed in multiple ways and is shown in the EXAMPLES section. | |
count_labels list / elements=string | A list of labels that can only be used with exact_count to determinehow many nodes based on a specific labels criteria should be deployed. This can be expressed in multiple ways and is shown in the EXAMPLES section. | |
cpu float | Percentage of CPU divided by 100 required for the new instance. Half a processor is written 0.5. | |
datastore_id integer added in 0.2.0 of community.general | Name of Datastore to use to create a new instace | |
datastore_name string added in 0.2.0 of community.general | Name of Datastore to use to create a new instace | |
disk_saveas dictionary | Creates an image from a VM disk. It is a dictionary where you have to specify name of the new image.Optionally you can specify disk_id of the disk you want to save. By default disk_id is 0.
NOTE':' This operation will only be performed on the first VM (if more than one VM ID is passed) and the VM has to be in the poweredoff state.Also this operation will fail if an image with specified name already exists. | |
disk_size list / elements=string | The size of the disk created for new instances (in MB, GB, TB,...). NOTE':' If The Template hats Multiple Disks the Order of the Sizes is matched against the order specified in template_id /template_name . | |
exact_count integer | Indicates how many instances that match count_attributes andcount_labels parameters should be deployed. Instances are eithercreated or terminated based on this value. NOTE':' Instances with the least IDs will be terminated first. | |
group_id integer | ID of the group which will be set as the group of the instance | |
hard boolean |
| Reboot, power-off or terminate instances hard
|
instance_ids list / elements=integer | A list of instance ids used for states':' absent , running , rebooted , poweredoff
aliases: ids | |
labels list / elements=string | Default: [] | A list of labels to associate with new instances, or for setting state of instances with these labels. |
memory string | The size of the memory for new instances (in MB, GB, ...) | |
mode string | Set permission mode of the instance in octet format, e.g. 600 to give owner use and manage and nothing to group and others. | |
networks list / elements=dictionary | Default: [] | A list of dictionaries with network parameters. See examples for more details. |
owner_id integer | ID of the user which will be set as the owner of the instance | |
persistent boolean added in 0.2.0 of community.general |
| Create a private persistent copy of the template plus any image defined in DISK, and instantiate that copy. |
state string |
| present - create instances from a template specified with template_id /template_name .running - run instancespoweredoff - power-off instancesrebooted - reboot instancesabsent - terminate instances |
template_id integer | ID of a VM template to use to create a new instance | |
template_name string | Name of VM template to use to create a new instace | |
vcpu integer | Number of CPUs (cores) new VM will have. | |
vm_start_on_hold boolean |
| Set to true to put vm on hold while creating |
wait boolean |
| Wait for the instance to reach its desired state before returning. Keep in mind if you are waiting for instance to be in running state it doesn't mean that you will be able to SSH on that machine only that boot process have started on that instance, see 'wait_for' example for details. |
wait_timeout integer | Default: 300 | How long before wait gives up, in seconds |
- name: Create a new instance community.general.one_vm: template_id: 90 register: result - name: Print VM properties ansible.builtin.debug: msg: result - name: Deploy a new VM on hold community.general.one_vm: template_name: 'app1_template' vm_start_on_hold: 'True' - name: Deploy a new VM and set its name to 'foo' community.general.one_vm: template_name: 'app1_template' attributes: name: foo - name: Deploy a new VM and set its group_id and mode community.general.one_vm: template_id: 90 group_id: 16 mode: 660 - name: Deploy a new VM as persistent community.general.one_vm: template_id: 90 persistent: yes - name: Change VM's permissions to 640 community.general.one_vm: instance_ids: 5 mode: 640 - name: Deploy 2 new instances and set memory, vcpu, disk_size and 3 networks community.general.one_vm: template_id: 15 disk_size: 35.2 GB memory: 4 GB vcpu: 4 count: 2 networks: - NETWORK_ID: 27 - NETWORK: "default-network" NETWORK_UNAME: "app-user" SECURITY_GROUPS: "120,124" - NETWORK_ID: 27 SECURITY_GROUPS: "10" - name: Deploy a new instance which uses a Template with two Disks community.general.one_vm: template_id: 42 disk_size: - 35.2 GB - 50 GB memory: 4 GB vcpu: 4 count: 1 networks: - NETWORK_ID: 27 - name: "Deploy an new instance with attribute 'bar: bar1' and set its name to 'foo'" community.general.one_vm: template_id: 53 attributes: name: foo bar: bar1 - name: "Enforce that 2 instances with attributes 'foo1: app1' and 'foo2: app2' are deployed" community.general.one_vm: template_id: 53 attributes: foo1: app1 foo2: app2 exact_count: 2 count_attributes: foo1: app1 foo2: app2 - name: Enforce that 4 instances with an attribute 'bar' are deployed community.general.one_vm: template_id: 53 attributes: name: app bar: bar2 exact_count: 4 count_attributes: bar: # Deploy 2 new instances with attribute 'foo: bar' and labels 'app1' and 'app2' and names in format 'fooapp-##' # Names will be: fooapp-00 and fooapp-01 - name: Deploy 2 new instances community.general.one_vm: template_id: 53 attributes: name: fooapp-## foo: bar labels: - app1 - app2 count: 2 # Deploy 2 new instances with attribute 'app: app1' and names in format 'fooapp-###' # Names will be: fooapp-002 and fooapp-003 - name: Deploy 2 new instances community.general.one_vm: template_id: 53 attributes: name: fooapp-### app: app1 count: 2 # Reboot all instances with name in format 'fooapp-#' # Instances 'fooapp-00', 'fooapp-01', 'fooapp-002' and 'fooapp-003' will be rebooted - name: Reboot all instances with names in a certain format community.general.one_vm: attributes: name: fooapp-# state: rebooted # Enforce that only 1 instance with name in format 'fooapp-#' is deployed # The task will delete oldest instances, so only the 'fooapp-003' will remain - name: Enforce that only 1 instance with name in a certain format is deployed community.general.one_vm: template_id: 53 exact_count: 1 count_attributes: name: fooapp-# - name: Deploy an new instance with a network community.general.one_vm: template_id: 53 networks: - NETWORK_ID: 27 register: vm - name: Wait for SSH to come up ansible.builtin.wait_for_connection: delegate_to: '{{ vm.instances[0].networks[0].ip }}' - name: Terminate VMs by ids community.general.one_vm: instance_ids: - 153 - 160 state: absent - name: Reboot all VMs that have labels 'foo' and 'app1' community.general.one_vm: labels: - foo - app1 state: rebooted - name: "Fetch all VMs that have name 'foo' and attribute 'app: bar'" community.general.one_vm: attributes: name: foo app: bar register: results - name: Deploy 2 new instances with labels 'foo1' and 'foo2' community.general.one_vm: template_name: app_template labels: - foo1 - foo2 count: 2 - name: Enforce that only 1 instance with label 'foo1' will be running community.general.one_vm: template_name: app_template labels: - foo1 exact_count: 1 count_labels: - foo1 - name: Terminate all instances that have attribute foo community.general.one_vm: template_id: 53 exact_count: 0 count_attributes: foo: - name: "Power-off the VM and save VM's disk with id=0 to the image with name 'foo-image'" community.general.one_vm: instance_ids: 351 state: poweredoff disk_saveas: name: foo-image - name: "Save VM's disk with id=1 to the image with name 'bar-image'" community.general.one_vm: instance_ids: 351 disk_saveas: name: bar-image disk_id: 1
Common return values are documented here, the following are the fields unique to this module:
Key | Returned | Description | |
---|---|---|---|
instances complex | success | a list of instances info whose state is changed or which are fetched with instance_ids option. | |
attributes dictionary | success | A dictionary of key/values attributes that are associated with the instance Sample: {'HYPERVISOR': 'kvm', 'LOGO': 'images/logos/centos.png', 'TE_GALAXY': 'bar', 'USER_INPUTS': None} | |
cpu float | success | Percentage of CPU divided by 100 Sample: 0.2 | |
disk_size string | success | The size of the disk in MB Sample: 20480 MB | |
group_id integer | success | vm's group id Sample: 1 | |
group_name string | success | vm's group name Sample: one-users | |
labels list / elements=string | success | A list of string labels that are associated with the instance Sample: ['foo', 'spec-label'] | |
lcm_state string | success | lcm state of an instance that is only relevant when the state is ACTIVE Sample: RUNNING | |
memory string | success | The size of the memory in MB Sample: 4096 MB | |
mode string | success | vm's mode Sample: 660 | |
networks list / elements=string | success | a list of dictionaries with info about IP, NAME, MAC, SECURITY_GROUPS for each NIC Sample: [{'ip': '10.120.5.33', 'mac': '02:00:0a:78:05:21', 'name': 'default-test-private', 'security_groups': '0,10'}, {'ip': '10.120.5.34', 'mac': '02:00:0a:78:05:22', 'name': 'default-test-private', 'security_groups': '0'}] | |
owner_id integer | success | vm's owner id Sample: 143 | |
owner_name string | success | vm's owner name Sample: app-user | |
state string | success | state of an instance Sample: ACTIVE | |
template_id integer | success | vm's template id Sample: 153 | |
uptime_h integer | success | Uptime of the instance in hours Sample: 35 | |
vcpu integer | success | Number of CPUs (cores) Sample: 2 | |
vm_id integer | success | vm id Sample: 153 | |
vm_name string | success | vm name Sample: foo | |
instances_ids list / elements=string | success | a list of instances ids whose state is changed or which are fetched with instance_ids option.Sample: [1234, 1235] | |
tagged_instances complex | success | A list of instances info based on a specific attributes and/or labels that are specified with count_attributes and count_labels
options. | |
attributes dictionary | success | A dictionary of key/values attributes that are associated with the instance Sample: {'HYPERVISOR': 'kvm', 'LOGO': 'images/logos/centos.png', 'TE_GALAXY': 'bar', 'USER_INPUTS': None} | |
cpu float | success | Percentage of CPU divided by 100 Sample: 0.2 | |
disk_size list / elements=string | success | The size of the disk in MB Sample: ['20480 MB', '10240 MB'] | |
group_id integer | success | vm's group id Sample: 1 | |
group_name string | success | vm's group name Sample: one-users | |
labels list / elements=string | success | A list of string labels that are associated with the instance Sample: ['foo', 'spec-label'] | |
lcm_state string | success | lcm state of an instance that is only relevant when the state is ACTIVE Sample: RUNNING | |
memory string | success | The size of the memory in MB Sample: 4096 MB | |
mode string | success | vm's mode Sample: 660 | |
networks list / elements=string | success | a list of dictionaries with info about IP, NAME, MAC, SECURITY_GROUPS for each NIC Sample: [{'ip': '10.120.5.33', 'mac': '02:00:0a:78:05:21', 'name': 'default-test-private', 'security_groups': '0,10'}, {'ip': '10.120.5.34', 'mac': '02:00:0a:78:05:22', 'name': 'default-test-private', 'security_groups': '0'}] | |
owner_id integer | success | vm's user id Sample: 143 | |
owner_name string | success | vm's user name Sample: app-user | |
state string | success | state of an instance Sample: ACTIVE | |
template_id integer | success | vm's template id Sample: 153 | |
uptime_h integer | success | Uptime of the instance in hours Sample: 35 | |
vcpu integer | success | Number of CPUs (cores) Sample: 2 | |
vm_id integer | success | vm id Sample: 153 | |
vm_name string | success | vm name Sample: foo |
© 2012–2018 Michael DeHaan
© 2018–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/collections/community/general/one_vm_module.html