README.md | ●●●●● patch | view | raw | blame | history | |
defaults/main.yml | ●●●●● patch | view | raw | blame | history | |
meta/main.yml | ●●●●● patch | view | raw | blame | history | |
tasks/main.yml | ●●●●● patch | view | raw | blame | history | |
templates/sysding.j2 | ●●●●● patch | view | raw | blame | history |
README.md
@@ -1,7 +1,7 @@ Role Name ========= A brief description of the role goes here. This role is supposed to deploy a new OpenIndiana Zone on a yada... Requirements ------------ defaults/main.yml
@@ -1,2 +1,72 @@ --- # defaults file for oi-zone oizone: name: oizone zoneroot: /export/zones/ autoboot: "true" bootargs: # -v iptype: exclusive cpus: dedicated # dedicated or capped-cpu ncpus: 1 mem: capped-memory # or nil ram: 1G swap: 1G locked: 1G brand: ipkg filesystems: - path: /export/zones/oizone type: zoneroot zfscreate: true zfs_extra_properties: refquota: 10G - path: apppool/oizone/datavol1 type: volume zfscreate: true zfs_extra_properties: volsize: 5G - path: apppool/oizone/dataset1 type: dataset zfscreate: true zfs_extra_properties: quota: 2G - path: /disk1 type: lofs mountpoint: /hostdisks/disk1 zfscreate: false options: - ro - nodevices nics: - physical: ixgbe0 logical: oizoneint0 vlan: 100 address: dhcp # can be "dhcp" or a regular IP address addrsuffix: v4 # can be a string, interface0/suffix will be the ipadm create-addr kvm: vnc: "on" bootorder: cd sysding: timezone: UTC locale: C ip: routes: - target: default # can be a CIDR or a host ip or "default" router: 172.18.0.200 # IP of the router dns: nameservers: - 1.1.1.1 - 8.8.8.8 search: - example.com - openindiana.org domain: example.com users: - name: root hashedpassword: "$5$foobar...." - name: localadm uid: 100 gid: 10 shell: /usr/bin/bash gecos: "Local Admin Account" home: /export/home/localadm hashedpassword: "$5$barfoo...." meta/main.yml
@@ -1,7 +1,7 @@ galaxy_info: author: your name description: your role description company: your company (optional) author: Olaf Bohlen description: create zones on OpenIndiana company: eenfach.de # If the issue tracker for your role is not on github, uncomment the # next line and provide a value @@ -14,9 +14,9 @@ # - GPL-3.0-only # - Apache-2.0 # - CC-BY-4.0 license: license (GPL-2.0-or-later, MIT, etc) license: license BSD-3-Clause min_ansible_version: 2.9 min_ansible_version: 2.7 # If this a Container Enabled role, provide the minimum Ansible Container version. # min_ansible_container_version: @@ -39,13 +39,18 @@ # - 7 # - 99.99 galaxy_tags: [] galaxy_tags: # List tags for your role here, one per line. A tag is a keyword that describes # and categorizes the role. Users find roles by searching for tags. Be sure to # remove the '[]' above, if you add tags to this list. # # NOTE: A tag is limited to a single word comprised of alphanumeric characters. # Maximum 20 tags per role. - zones - illumos - openindiana - oi - hipster dependencies: [] # List your role dependencies here, one per line. Be sure to remove the '[]' above, tasks/main.yml
@@ -1,2 +1,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 templates/sysding.j2
New file @@ -0,0 +1,27 @@ setup_timezone "{{ oizone['sysding']['timezone'] }}" setup_locale "{{ oizone['sysding']['locale'] }}" {% if oizone['sysding']['nfs4domain'] %} setup_nfs4domain "{{ oizone['sysding']['nfs4domain'] }}" {% endif %} {% for user in oizone['sysding']['users'] %} {% if user['name'] != "root" %} setup_user_account {{ user['name'] }} {{ user['uid'] }} {{ user['gid'] }} {{ user['gecos'] }} {{ user['home'] }} {{ user['shell'] }} mkdir -p {{ user['home'] }} chmod {{ user['name'] }}:{{ user['gid'] }} {{ user['home'] }} {% endif %} setup_user_password {{ user['name'] }} '{{ user["hashedpassword"] }}' {% endfor %} {% if oizone['iptype'] == "exclusive-ip" %} {% for nic in oizone['nics'] %} setup_interface {{ nic['logical'] }} {{ nic['addrsuffix'] }} {{ nic['address'] }} {% endfor %} {% endif %} {% for route in oizone['sysding']['ip']['routes'] %} setup_route {{ route['target'] }} {{ route['router'] }} {% endfor %} {% if oizone['sysding']['dns'] %} setup_ns_dns "{{ oizone['sysding']['dns']['domain'] }}" "{{ oizone['sysding']['dns']['search'] | join(' ') }}" "{{ oizone['sysding']['dns']['nameservers'] | join(' ') }}" {% endif %}