| {% 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 %} |