Want to go from manually managing OpenNebula resources to a fully automated workflow? So did we. That's why we developed our own Ansible modules to do the job.
Now part of Ansible v.2.6, these modules make it so easy to manage and scale OpenNebula VM's, services and images. Join us and we'll show you how.
2. Milan Ilić, System EngineerManaging OpenNebula Resources with Ansible engineering.nordeus.com
FOUNDATION
2010
GAMES
Top Eleven
Golden Boot
HQ
Belgrade, Serbia
CREW
170 People,
22 Nationalities
ABOUT
WHO WE
ARE.
3.
4. Milan Ilić, System EngineerManaging OpenNebula Resources with Ansible engineering.nordeus.com
5. Milan Ilić, System EngineerManaging OpenNebula Resources with Ansible engineering.nordeus.com
● Wasting time managing resources manually
● Several different Python scripts
● A lot of unused VMs
Problems:
8. Milan Ilić, System EngineerManaging OpenNebula Resources with Ansible
one_vm
The module provides the easiest way to:
● Deploy one or more instances
● Set owner, group and permissions
● Terminate,power-off and reboot instances
● Scale up/down number of instances based on specific attributes and/or
labels criteria
● Get instances info
engineering.nordeus.com
9. Milan Ilić, System EngineerManaging OpenNebula Resources with Ansible
# Create a new instance
- one_vm:
template_id: 90
engineering.nordeus.com
10. Milan Ilić, System EngineerManaging OpenNebula Resources with Ansible
# Deploy a new VM and set its name to 'foo'
- one_vm:
template_name: 'app1_template'
attributes:
name: foo
engineering.nordeus.com
11. Milan Ilić, System EngineerManaging OpenNebula Resources with Ansible
# Deploy 2 new instances and set memory, vcpu, disk_size and network
- one_vm:
template_id: 15
disk_size: 35.2 GB
memory: 4 GB
vcpu: 4
count: 2
networks:
- NETWORK_ID: 27
SECURITY_GROUPS: "10"
engineering.nordeus.com
12. Milan Ilić, System EngineerManaging OpenNebula Resources with Ansible engineering.nordeus.com
# Enforce that exactly 7 instances with attribute
# 'application: app1' are deployed
- one_vm:
template_id: 53
exact_count: 7
count_attributes:
application: app1
Scaling up/down the number of instances
13. Milan Ilić, System EngineerManaging OpenNebula Resources with Ansible
one_service
The module provides the easiest way to:
● Create a service
● Delete a service
● Set owner, group and permissions
● Change role cardinality
● Get service info
engineering.nordeus.com
14. Milan Ilić, System EngineerManaging OpenNebula Resources with Ansible
# Instantiate a new service
- one_service:
template_id: 90
# Delete a service by ID
- one_service:
service_id: 153
state: absent
engineering.nordeus.com
15. Milan Ilić, System EngineerManaging OpenNebula Resources with Ansible
one_image
The module provides an easy way to manage One images, such as:
● Clone an image
● Rename an image
● Enable/Disable an image
● Delete an image
engineering.nordeus.com
16. Milan Ilić, System EngineerManaging OpenNebula Resources with Ansible
# Rename existing IMAGE
- one_image:
id: 34
state: renamed
new_name: bar-image
# Disable the IMAGE by id
- one_image:
id: 37
enabled: no
engineering.nordeus.com
17. Milan Ilić, System EngineerManaging OpenNebula Resources with Ansible
one_image_facts
Provides an easier way to gather facts about images using:
● image’s ids,
● name or
● regex pattern
engineering.nordeus.com
18. Milan Ilić, System EngineerManaging OpenNebula Resources with Ansible
# Gather facts about images using IDs
- one_image_facts:
ids:
- 123
- 456
# Gather facts about all images whose name matches regex 'app-image-.*'
- one_image_facts:
name: '~app-image-.*'
register: app_images
engineering.nordeus.com
20. Milan Ilić, System EngineerManaging OpenNebula Resources with Ansible
Deploying clean test environment within 90 seconds
engineering.nordeus.com
21. Milan Ilić, System EngineerManaging OpenNebula Resources with Ansible engineering.nordeus.com
- name: Rename the previous used image
one_image:
name: 'Prepared Image'
state: renamed
new_name: 'Prepared Image-{{ ansible_date_time.date }}'
- name: Power Off the VM and save its disk
one_vm:
instance_ids: '{{ instances_id }}'
state: poweredoff
disk_saveas:
name: 'Prepared Image'
Deploying clean test environment within 90 seconds
22. Milan Ilić, System EngineerManaging OpenNebula Resources with Ansible engineering.nordeus.com
Deploying clean test environment within 90 seconds
23. Milan Ilić, System EngineerManaging OpenNebula Resources with Ansible engineering.nordeus.com
- name: Deploy test VM
one_vm:
template_name: 'Prepared Galaxy'
attributes:
name: 'galaxy-vm-{{ username }}'
galaxy_user: '{{ username }}'
networks:
- NETWORK_ID: 27
register: vm
- name: Notify user via Slack
slack:
token: '{{ slack_webhook_token }}'
msg:|
'Greetings,n IP address of your Galaxy'
'machine is {{ vm.instances[0].networks[0].ip }}'
channel: '@{{ username }}'
Deploying clean test environment within 90 seconds