summaryrefslogtreecommitdiff
path: root/roles/jailhost/tasks/main.yml
blob: a26351b21574ceecbe1bb686d90d76d51278a5d7 (plain)
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
- name: create jails dataset
  community.general.zfs:
    name: poolen/jails
    state: present
    extra_zfs_properties:
      mountpoint: /usr/local/jails

- name: create jails tank dataset
  community.general.zfs:
    name: poolen/jails/tank
    state: present

- name: create base jail dataset
  community.general.zfs:
    name: poolen/jails/base
    state: present

- name: install base jail
  shell: |
    set -e
    bsdinstall checksum || echo 'checksums failed'
    bsdinstall distextract || echo 'distextract failed'
    bsdinstall config  || error 'failed to save config'

    bsdinstall entropy
  environment:
    BSDINSTALL_CHROOT: "/usr/local/jails/base"
    DISTRIBUTIONS: "base.txz"
    nonInteractive: "YES"
  args:
    creates: "/usr/local/jails/base/bin"

- name: configure base jail
  shell: |
    cp /etc/resolv.conf /usr/local/jails/base/etc/
    cp /etc/localtime /usr/local/jails/base/etc/
    cp /var/db/zoneinfo /usr/local/jails/base/var/db/
  args:
    creates: "/usr/local/jails/base/etc/resolv.conf"

- name: apply updates for base jail
  ansible.builtin.shell: |
    freebsd-update -b /usr/local/jails/base fetch
    freebsd-update -b /usr/local/jails/base install
  register: result_update
  failed_when: result_update.rc != 0 and result_update.rc != 2
  changed_when: result_update.rc != 2

- name: determine patch level of base jail
  shell: /usr/local/jails/base/bin/freebsd-version -u
  register: patch_level
  environment:
    ROOT: /usr/local/jails/base

- name: snapshot the base jail
  community.general.zfs:
    name: "poolen/jails/base@{{ patch_level.stdout }}"
    state: present

- name: set patch level as fact
  ansible.builtin.set_fact:
    base_jail_patch_level: "{{ patch_level.stdout }}"
    cacheable: yes