- name: "Check if dataset {{ dataset.name }} exists" shell: zfs list -o name | grep -Fxq "{{ dataset.name }}" changed_when: false failed_when: false register: check_dataset_exists - name: "Create ZFS dataset {{ dataset.name }}" shell: | {% if dataset.mountpoint is defined %} zfs create -o "mountpoint={{ dataset.mountpoint }}" -p "{{ dataset.name }}" {% else %} zfs create -p "{{ dataset.name }}" {% endif %} when: check_dataset_exists.rc != 0 - name: Check if userland snapshot already exists shell: zfs list -t snapshot -o name | grep -Fxq "{{ dataset.name }}@base" failed_when: false changed_when: false register: zfs_userland_check when: dataset.userland is defined - name: Set up userland when: dataset.userland is defined and zfs_userland_check.rc != 0 block: - name: Download userland get_url: url: https://download.freebsd.org/ftp/releases/{{ arch }}/{{ dataset.userland }}/base.txz dest: /usr/local/jails/media/{{ dataset.userland }}-base.txz owner: root group: wheel mode: "0644" - name: Unarchive userland shell: tar -xzf /usr/local/jails/media/{{ dataset.userland }}-base.txz -C /usr/local/jails/templates/{{ dataset.userland }} - name: Copy localtime to jail userland copy: remote_src: true src: /etc/localtime dest: /usr/local/jails/templates/{{ dataset.userland }}/etc/localtime - name: Copy resolv.conf to jail userland template: src: etc_resolv.conf.j2 dest: /usr/local/jails/templates/{{ dataset.userland }}/etc/resolv.conf owner: root group: wheel mode: "0644" - name: Disable resolvconf in the template shell: echo 'resolvconf=NO' >> /usr/local/jails/templates/{{ dataset.userland }}/etc/resolvconf.conf - name: Update userland to latest patch level shell: freebsd-update -b /usr/local/jails/templates/{{ dataset.userland }}/ fetch install - name: Disable syslogd in the template shell: echo 'syslogd_enable="NO"' >> /usr/local/jails/templates/{{ dataset.userland }}/etc/rc.conf - name: Create userland ZFS snapshot shell: zfs snapshot zroot/jails/templates/{{ dataset.userland }}@base