blob: d84199f7b40c2e247f3935549964b0220799adf3 [file] [log] [blame]
{% from "salt/map.jinja" import control with context %}
{%- if control.enabled and control.virt_enabled is defined %}
include:
- salt.minion
salt_control_virt_packages:
pkg.installed:
- names: {{ control.virt_pkgs }}
{% if grains.oscodename == 'trusty' %}
{#- This tool is not available in newer releases #}
update-guestfs-appliance:
cmd.wait:
- watch:
- pkg: salt_control_virt_packages
{%- endif %}
{%- for cluster_name, cluster in control.cluster.iteritems() %}
{%- if cluster.engine == "virt" %}
salt_libvirt_service:
service.running:
- name: {{ control.virt_service }}
- enable: true
{%- if grains.get('noservices') %}
- onlyif: /bin/false
{%- endif %}
##Posibility to disable rng device globally for old libvirt version
{%- if cluster.rng is defined %}
{%- set rng = cluster.rng %}
{%- endif %}
{%- if cluster.enable_vnc is defined and cluster.enable_vnc %}
{%- set enable_vnc = True %}
{%- else %}
{%- set enable_vnc = False %}
{%- endif %}
{%- for node_name, node in cluster.node.iteritems() %}
{%- if node.name is defined %}
{%- set node_name = node.name %}
{%- endif %}
{%- if node.provider == grains.id %}
{%- set size = control.size.get(node.size) %}
{%- set cluster_cloud_init = cluster.get('cloud_init', {}) %}
{%- set node_cloud_init = node.get('cloud_init', {}) %}
{%- set cloud_init = salt['grains.filter_by']({'default': cluster_cloud_init}, merge=node_cloud_init) %}
salt_control_virt_{{ cluster_name }}_{{ node_name }}:
module.run:
- name: virtng.init
- m_name: {{ node_name }}.{{ cluster.domain }}
- cpu: {{ size.cpu }}
- mem: {{ size.ram }}
- image: {{ node.image }}
- start: True
- disk: {{ size.disk_profile }}
- nic: {{ size.net_profile }}
{%- if node.rng is defined %}
- rng: {{ node.rng }}
{%- elif rng is defined %}
- rng: {{ rng }}
{%- endif %}
{%- if node.loader is defined %}
- loader: {{ node.loader }}
{%- endif %}
{%- if node.machine is defined %}
- machine: {{ node.machine }}
{%- endif %}
{%- if node.cpuset is defined %}
- cpuset: {{ node.cpuset }}
{%- endif %}
{%- if node.cpu_mode is defined %}
- cpu_mode: {{ node.cpu_mode }}
{%- endif %}
- kwargs:
{%- if cloud_init is defined %}
cloud_init: {{ cloud_init }}
{%- endif %}
seed: True
serial_type: pty
console: True
{%- if node.enable_vnc is defined %}
enable_vnc: {{ node.enable_vnc }}
{%- else %}
enable_vnc: {{ enable_vnc }}
{%- endif %}
{%- if node.img_dest is defined %}
img_dest: {{ node.img_dest }}
{%- endif %}
{%- if node.mac is defined %}
{%- for mac_name, mac in node.mac.items() %}
{{ mac_name }}_mac: {{ mac }}
{%- endfor %}
{%- endif %}
- unless: virsh list --all --name| grep -E "^{{ node_name }}.{{ cluster.domain }}$"
- require:
- salt_libvirt_service
#salt_control_seed_{{ cluster_name }}_{{ node_name }}:
# module.run:
# - name: seed.apply
# - path: /srv/salt-images/{{ node_name }}.{{ cluster.domain }}/system.qcow2
# - id_: {{ node_name }}.{{ cluster.domain }}
# - unless: virsh list | grep {{ node_name }}.{{ cluster.domain }}
{%- if node.get("autostart", True) %}
salt_virt_autostart_{{ cluster_name }}_{{ node_name }}:
module.run:
- name: virt.set_autostart
- vm_: {{ node_name }}.{{ cluster.domain }}
- state: true
- unless: virsh list --autostart --name| grep -E "^{{ node_name }}.{{ cluster.domain }}$"
{%- endif %}
{%- endif %}
{%- endfor %}
{%- endif %}
{%- endfor %}
{%- endif %}