Ansible role to provision a zone on OpenIndiana
Olaf Bohlen
2020-08-19 3ada41b2e02817175192ac3e44f261ee76993a66
tasks/main.yml
@@ -1,2 +1,112 @@
---
# tasks file for oi-zone
# tasks file for oi-zone
- name: create VNICs
  dladm_vnic:
    name: "{{ item['logical'] }}"
    link: "{{ item['physical'] }}"
    vlan: "{{ item['vlan'] }}"
  loop: "{{ oizone['nics'] }}"
- name: create filesystems
  zfs:
    name: "{{ item['path'] }}"
    state: present
    zfs_extra_properties: "{{ item['zfs_extra_properties'] }}"
  loop: "{{ oizone['filesystems'] }}"
  when: zfscreate
- name: set up VM zones for master
  solaris_zone:
    name: "{{ oizone['name'] }}"
    state: installed
    path: "{{ oizone['zoneroot'] }}/{{ oizone['name'] }}"
    config: >
      set brand={{ oizone['brand'] }};
      set autoboot={{ oizone['autoboot'] }};
      {% if oizone['bootargs'] %}
      set bootargs={{ oizone['bootargs'] }};
      {% endif %}
      set ip-type={{ oizone['iptype'] }};
      {% for nic in oizone['nics'] %}
      add net;
      set physical={{ nic['logical'] }};
      {% if {{ oizone['iptype'] == "shared" %}
      set address={{ nic['address'] }};
      {% endif %}
      end;
      {% endfor %}
      {% for disk in vmconfig[outer_item]['disks'] %}
      add device;
      set match="/dev/zvol/rdsk/localstripe/vm/{{ outer_item }}d{{ disk['instance'] }}";
      end;
      add attr;
      set name="{{ disk['label'] }}";
      set type="string";
      set value="localstripe/vm/{{ outer_item }}d{{ disk['instance'] }}";
      end;
      {% endfor %}
      {% if oizone['cpus'] == "dedicated" %}
      add dedicated-cpu;
      set ncpus={{ oizone['ncpus'] }};
      end;
      {% endif %}
      {% if oizone['cpus'] == "capped-cpu" %}
      add capped-cpu;
      set ncpus={{ oizone['ncpus'] }};
      end;
      {% endif %}
      {% if oizone['mem'] == "capped-memory" %}
      add capped-memory;
      set physical={{ oizone['ram'] }};
      set swap={{ oizone['swap'] }};
      set locked={{ oizone['locked'] }};
      end;
      {% endif %}
      {% for dataset in oizone['filesystems'] %}
      {% if dataset['type'] == "dataset" %}
      add dataset;
      set name={{ dataset['path'] }};
      end;
      {% endif %}
      {% if dataset['type'] == "lofs" %}
      add fs;
      set special={{ dataset['path'] }};
      set dir={{ dataset['mountpoint'] }};
      set type="lofs";
      {% for option in database['options'] %}
      add options {{ option }};
      {% endfor %}
      end;
      {% endif %}
      {% if dataset['type'] == "volume" %}
      add device;
      set match=/dev/zvol/rdsk/{{ dataset['path'] }};
      end;
      {% endif %}
      {% endfor %}
      {% if oizone['brand'] == "kvm" %}
      add attr;
      set name="bootorder";
      set type="string";
      set value="{{ oizone['kvm']['bootorder'] }}";
      add attr;
      set name="vnc";
      set type="string";
      set value="{{ oizone['kvm']['vnc'] }}";
      end;
      add attr;
      set name="vcpus";
      set type="string";
      set value="{{ oizone['ncpus'] }}";
      end;
      add attr;
      set name="ram";
      set type="string";
      set value="{{ oizone['ram'] }}";
      end;
      {% endif %}
- name: create a sysding.conf
  template:
    dest: "{{ oizone['zoneroot'] }}/{{ oizone['name'] }}/root/etc/sysding.conf"
    src: sysding.j2