ansible / ansible.builtin / v2.7.17 / module / one_vm Creates or terminates OpenNebula instances | "added in version" 2.6 of ansible.builtin" Authors: Milan Ilic (@ilicmilan) preview | supported by communityansible.builtin.one_vm (v2.7.17) — module
pip
Install with pip install ansible==2.7.17
Manages OpenNebula instances
# Create a new instance - one_vm: template_id: 90 register: result
# Print VM properties - debug: msg: result
# Deploy a new VM and set its name to 'foo' - one_vm: template_name: 'app1_template' attributes: name: foo
# Deploy a new VM and set its group_id and mode - one_vm: template_id: 90 group_id: 16 mode: 660
# Change VM's permissions to 640 - one_vm: instance_ids: 5 mode: 640
# Deploy 2 new instances and set memory, vcpu, disk_size and 3 networks - 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"
# Deploy an new instance with attribute 'bar: bar1' and set its name to 'foo' - one_vm: template_id: 53 attributes: name: foo bar: bar1
# Enforce that 2 instances with attributes 'foo1: app1' and 'foo2: app2' are deployed - one_vm: template_id: 53 attributes: foo1: app1 foo2: app2 exact_count: 2 count_attributes: foo1: app1 foo2: app2
# Enforce that 4 instances with an attribute 'bar' are deployed - 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 - 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 - 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 - 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 - one_vm: template_id: 53 exact_count: 1 count_attributes: name: fooapp-#
# Deploy an new instance with a network - one_vm: template_id: 53 networks: - NETWORK_ID: 27 register: vm
# Wait for SSH to come up - wait_for_connection: delegate_to: '{{ vm.instances[0].networks[0].ip }}'
# Terminate VMs by ids - one_vm: instance_ids: - 153 - 160 state: absent
# Reboot all VMs that have labels 'foo' and 'app1' - one_vm: labels: - foo - app1 state: rebooted
# Fetch all VMs that have name 'foo' and attribute 'app: bar' - one_vm: attributes: name: foo app: bar register: results
# Deploy 2 new instances with labels 'foo1' and 'foo2' - one_vm: template_name: app_template labels: - foo1 - foo2 count: 2
# Enforce that only 1 instance with label 'foo1' will be running - one_vm: template_name: app_template labels: - foo1 exact_count: 1 count_labels: - foo1
# Terminate all instances that have attribute foo - one_vm: template_id: 53 exact_count: 0 count_attributes: foo:
# Power-off the VM and save VM's disk with id=0 to the image with name 'foo-image' - one_vm: instance_ids: 351 state: powered-off disk_saveas: name: foo-image
# Save VM's disk with id=1 to the image with name 'bar-image' - one_vm: instance_ids: 351 disk_saveas: name: bar-image disk_id: 1
cpu: description: - Percentage of CPU divided by 100 required for the new instance. Half a - processor is written 0.5. hard: default: false description: - Reboot, power-off or terminate instances C(hard) type: bool mode: description: - Set permission mode of the instance in octet format, e.g. C(600) to give owner C(use) and C(manage) and nothing to group and others. vcpu: description: - Number of CPUs (cores) new VM will have. wait: default: true description: - 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. type: bool count: default: 1 description: - Number of instances to launch state: choices: - present - absent - running - rebooted - poweredoff default: present description: - C(present) - create instances from a template specified with C(template_id)/C(template_name). - C(running) - run instances - C(poweredoff) - power-off instances - C(rebooted) - reboot instances - C(absent) - terminate instances labels: default: [] description: - A list of labels to associate with new instances, or for setting - C(state) of instances with these labels. memory: description: - The size of the memory for new instances (in MB, GB, ...) api_url: description: - 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 C(ONE_URL) environment variable is used. group_id: description: - ID of the group which will be set as the group of the instance networks: default: [] description: - A list of dictionaries with network parameters. See examples for more details. owner_id: description: - ID of the user which will be set as the owner of the instance disk_size: description: - The size of the disk created for new instances (in MB, GB, TB,...). - NOTE':' This option can be used only if the VM template specified with - C(template_id)/C(template_name) has exactly one disk. attributes: default: {} description: - A dictionary of key/value attributes to add to new instances, or for - setting C(state) of instances with these attributes. - Keys are case insensitive and OpenNebula automatically converts them to upper case. - Be aware C(NAME) is a special attribute which sets the name of the VM when it's deployed. - C(#) character(s) can be appended to the C(NAME) and the module will automatically add - indexes to the names of VMs. - For example':' C(NAME':' foo-###) would create VMs with names C(foo-000), C(foo-001),... - When used with C(count_attributes) and C(exact_count) the module will - match the base name without the index part. disk_saveas: description: - Creates an image from a VM disk. - It is a dictionary where you have to specife C(name) of the new image. - Optionally you can specife C(disk_id) of the disk you want to save. By default C(disk_id) is 0. - I(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 C(poweredoff) state. - Also this operation will fail if an image with specified C(name) already exists. exact_count: description: - Indicates how many instances that match C(count_attributes) and - C(count_labels) parameters should be deployed. Instances are either - created or terminated based on this value. - NOTE':' Instances with the least IDs will be terminated first. template_id: description: - ID of a VM template to use to create a new instance api_password: description: - Password of the user to login into OpenNebula RPC server. If not set api_username: description: - Name of the user to login into the OpenNebula RPC server. If not set - then the value of the C(ONE_USERNAME) environment variable is used. count_labels: description: - A list of labels that can only be used with C(exact_count) to determine - how 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. instance_ids: aliases: - ids description: - A list of instance ids used for states':' C(absent), C(running), C(rebooted), C(poweredoff) wait_timeout: default: 300 description: - How long before wait gives up, in seconds template_name: description: - Name of VM template to use to create a new instace count_attributes: description: - A dictionary of key/value attributes that can only be used with - C(exact_count) to determine how many nodes based on a specific - attributes criteria should be deployed. This can be expressed in - multiple ways and is shown in the EXAMPLES section.
instances: contains: attributes: description: 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: null type: dict cpu: description: Percentage of CPU divided by 100 sample: 0.2 type: float disk_size: description: The size of the disk in MB sample: 20480 MB type: string group_id: description: vm's group id sample: 1 type: integer group_name: description: vm's group name sample: one-users type: string labels: description: A list of string labels that are associated with the instance sample: - foo - spec-label type: list lcm_state: description: lcm state of an instance that is only relevant when the state is ACTIVE sample: RUNNING type: string memory: description: The size of the memory in MB sample: 4096 MB type: string mode: description: vm's mode returned: success sample: 660 type: string networks: description: 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' type: list owner_id: description: vm's owner id sample: 143 type: integer owner_name: description: vm's owner name sample: app-user type: string state: description: state of an instance sample: ACTIVE type: string template_id: description: vm's template id sample: 153 type: integer uptime_h: description: Uptime of the instance in hours sample: 35 type: integer vcpu: description: Number of CPUs (cores) sample: 2 type: int vm_id: description: vm id sample: 153 type: integer vm_name: description: vm name sample: foo type: string description: a list of instances info whose state is changed or which are fetched with C(instance_ids) option. returned: success type: complex instances_ids: description: a list of instances ids whose state is changed or which are fetched with C(instance_ids) option. returned: success sample: - 1234 - 1235 type: list tagged_instances: contains: attributes: description: 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: null type: dict cpu: description: Percentage of CPU divided by 100 sample: 0.2 type: float disk_size: description: The size of the disk in MB sample: 20480 MB type: string group_id: description: vm's group id sample: 1 type: integer group_name: description: vm's group name sample: one-users type: string labels: description: A list of string labels that are associated with the instance sample: - foo - spec-label type: list lcm_state: description: lcm state of an instance that is only relevant when the state is ACTIVE sample: RUNNING type: string memory: description: The size of the memory in MB sample: 4096 MB type: string mode: description: vm's mode returned: success sample: 660 type: string networks: description: 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' type: list owner_id: description: vm's user id sample: 143 type: integer owner_name: description: vm's user name sample: app-user type: string state: description: state of an instance sample: ACTIVE type: string template_id: description: vm's template id sample: 153 type: integer uptime_h: description: Uptime of the instance in hours sample: 35 type: integer vcpu: description: Number of CPUs (cores) sample: 2 type: int vm_id: description: vm id sample: 153 type: integer vm_name: description: vm name sample: foo type: string description: - A list of instances info based on a specific attributes and/or - labels that are specified with C(count_attributes) and C(count_labels) - options. returned: success type: complex