-
Notifications
You must be signed in to change notification settings - Fork 0
/
increase_node_memory.yml
55 lines (47 loc) · 1.65 KB
/
increase_node_memory.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
---
- name: Increase node memory
hosts: localhost
connection: local
gather_facts: false
# These variables are intended to be overriden using the `--extra-vars`
# command line option:
vars:
# Maximum memory to assing to the VM, in MiB.
max_memory: 4096
# Amount of memory to add in each increase, in MiB. Must be a multiple of
# 256 MiB due to restrictions in the oVirt API.
inc_memory: 256
tasks:
# Calculate the IP address from the `instance` input variable, and then do a
# reverse DNS lookup to find the FQDN, which in this environment is equal to
# the name of the virtual machine.
- set_fact:
vm_ip: "{{ instance | regex_replace(':.*$') }}"
- set_fact:
vm_name: "{{ lookup('dig', vm_ip + '/PTR') | regex_replace('\\.$') }}"
# Retrieve the facts of the virtual machine, so that we can check that it
# exists and get its current memory size:
- ovirt_vms_facts:
pattern: "name={{ vm_name }}"
- debug:
var: ovirt_vms
# Fail if the virtual machine doesn't exist:
- fail:
msg: "Virtual machine '{{ vm_name }}' doesn't exist"
when: ovirt_vms | length == 0
# Extract the current memory:
- set_fact:
current_memory: "{{ ovirt_vms[0].memory / 2**20 }}"
- debug:
var: current_memory
# Calculate the new amount of memory:
- set_fact:
new_memory: "{{ [current_memory|int + inc_memory|int, max_memory|int] | min }}"
- debug:
var: new_memory
# Update the virtual machine with the new memory size:
- name: Increase memory of '{{ vm_name }}'
ovirt_vms:
name: "{{ vm_name }}"
memory: "{{ new_memory }}MiB"
when: new_memory > current_memory