Ansible role to provision a zone on OpenIndiana
Olaf Bohlen
2020-08-19 3ada41b2e02817175192ac3e44f261ee76993a66
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
---
# 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