From 4b5fae3e4e24adfa7286cb863e31bf7a6dd362e3 Mon Sep 17 00:00:00 2001 From: Olaf Bohlen <olbohlen@eenfach.de> Date: Mon, 24 Aug 2020 22:32:30 +0200 Subject: [PATCH] added housekeeping, ssh-key provisioning, local inventory, etc --- tasks/main.yml | 257 ++++++++++++++++++++++++++++++--------------------- 1 files changed, 150 insertions(+), 107 deletions(-) diff --git a/tasks/main.yml b/tasks/main.yml index fd4045c..244a684 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -1,112 +1,155 @@ --- # tasks file for oi-zone -- name: create VNICs - dladm_vnic: - name: "{{ item['logical'] }}" - link: "{{ item['physical'] }}" - vlan: "{{ item['vlan'] }}" - loop: "{{ oizone['nics'] }}" +- name: creating zone for you + block: + - name: create VNICs with VLAN + dladm_vnic: + name: "{{ item['logical'] }}" + link: "{{ item['physical'] }}" + vlan: "{{ item['vlan'] }}" + loop: "{{ oizone['nics'] }}" + when: item['vlan'] is defined -- name: create filesystems - zfs: - name: "{{ item['path'] }}" - state: present - zfs_extra_properties: "{{ item['zfs_extra_properties'] }}" - loop: "{{ oizone['filesystems'] }}" - when: zfscreate + - name: create VNICs without VLAN + dladm_vnic: + name: "{{ item['logical'] }}" + link: "{{ item['physical'] }}" + loop: "{{ oizone['nics'] }}" + when: item['vlan'] is not defined + + - name: create filesystems + zfs: + name: "{{ item['path'] }}" + state: present + extra_zfs_properties: "{{ item['extra_zfs_properties'] }}" + loop: "{{ oizone['filesystems'] }}" + when: item['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: 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'] is defined and oizone['bootargs'] | length %} + 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 %} + {% if oizone['cpus'] is defined and oizone['cpus'] == "dedicated" %} + add dedicated-cpu; + set ncpus={{ oizone['ncpus'] }}; + end; + {% endif %} + {% if oizone['cpus'] is defined and oizone['cpus'] == "capped-cpu" %} + add capped-cpu; + set ncpus={{ oizone['ncpus'] }}; + end; + {% endif %} + {% if oizone['mem'] is defined and 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 + - name: create a sysding.conf + template: + dest: "{{ oizone['zoneroot'] }}/{{ oizone['name'] }}/root/etc/sysding.conf" + src: sysding.j2 + mode: 0400 + + - name: boot zone + solaris_zone: + name: "{{ oizone['name'] }}" + state: running + path: "{{ oizone['zoneroot'] }}/{{ oizone['name'] }}" + + - name: add zone to inventory + local_action: + module: lineinfile + path: "{{ inventory_file }}" + insertbefore: "BOF" + line: "{{ oizone['name'] }}.{{ oizone['sysding']['ip']['dns']['domain'] }}" + when: + - oizone['updateinventory'] is defined + - oizone['updateinventory'] + + rescue: # in case something wents wrong above, we do housekeeping here + - name: ATTENTION + debug: + msg: "failed to install {{ oizone['name'] }}, rolling back" + - name: delete zone + solaris_zone: + name: "{{ oizone['name'] }}" + state: absent + path: "{{ oizone['zoneroot'] }}/{{ oizone['name'] }}" + + - name: delete VNICs + dladm_vnic: + name: "{{ item['logical'] }}" + link: "{{ item['physical'] }}" + state: absent + loop: "{{ oizone['nics'] }}" + + - name: delete filesystems + zfs: + name: "{{ item['path'] }}" + state: absent + extra_zfs_properties: "{{ item['extra_zfs_properties'] }}" + loop: "{{ oizone['filesystems'] }}" + when: item['zfscreate'] + -- Gitblit v1.9.3