aboutsummaryrefslogtreecommitdiffstats
path: root/roles/jail
diff options
context:
space:
mode:
Diffstat (limited to 'roles/jail')
-rw-r--r--roles/jail/tasks/jail_setup.yml18
-rw-r--r--roles/jail/templates/jail_conf.j28
-rw-r--r--roles/jail/templates/usr_local_bin_jail_net.j223
3 files changed, 12 insertions, 37 deletions
diff --git a/roles/jail/tasks/jail_setup.yml b/roles/jail/tasks/jail_setup.yml
index 2c8581d..aac91f7 100644
--- a/roles/jail/tasks/jail_setup.yml
+++ b/roles/jail/tasks/jail_setup.yml
@@ -84,21 +84,6 @@
label: "{{ item.name }}"
delegate_to: "{{ jail_delegate_host }}"
-- name: "Inherit mountpoint on ZFS volumes for {{ jail_name }}"
- shell: |
- source=$(zfs get -H -o source mountpoint {{ item.name }})
- if [ "$source" != "inherited" ] && [ "$source" != "received" ]; then
- zfs unmount {{ item.name }} 2>/dev/null
- zfs inherit mountpoint {{ item.name }}
- echo "changed"
- fi
- loop: "{{ _zfs }}"
- loop_control:
- label: "{{ item.name }}"
- register: _zfs_inherit
- changed_when: "'changed' in _zfs_inherit.stdout"
- delegate_to: "{{ jail_delegate_host }}"
-
- name: "Set ownership on ZFS volume host mountpoints for {{ jail_name }}"
file:
path: "/usr/local/jails/volumes/{{ item.name | basename }}"
@@ -162,6 +147,7 @@
jail:
name: "{{ jail_name }}"
num: "{{ jail_num }}"
+ ip: "{{ jail_ips[jail_name] }}/{{ jail_lan_cidr | ipv4_prefixlen }}"
devfs_ruleset: "{{ devfs_ruleset | default(4) }}"
options: "{{ jail_conf_options | default([]) }}"
exec_prestart: "{{ exec_prestart | default([]) }}"
@@ -193,7 +179,7 @@
copy:
content: |
poudriere: {
- url: "http://{{ hostvars[jail_delegate_host]['poudriere_repo_ip'] }}/packages",
+ url: "http://{{ jail_ips.poudriere_repo }}/packages",
enabled: no,
priority: 100
}
diff --git a/roles/jail/templates/jail_conf.j2 b/roles/jail/templates/jail_conf.j2
index aa88049..f4243c7 100644
--- a/roles/jail/templates/jail_conf.j2
+++ b/roles/jail/templates/jail_conf.j2
@@ -16,10 +16,10 @@
exec.stop = "/bin/sh /etc/rc.shutdown";
# Networking
- exec.prestart += "jail_net prestart {{ jail.num }} ${name}";
- exec.poststart += "jail_net poststart {{ jail.num }} ${name}";
- exec.prestop += "jail_net prestop {{ jail.num }} ${name}";
- exec.poststop += "jail_net poststop {{ jail.num }} ${name}";
+ exec.prestart += "jail_net prestart ${name} {{ jail.num }} {{ jail.ip }}";
+ exec.poststart += "jail_net poststart ${name} {{ jail.num }} {{ jail.ip }}";
+ exec.prestop += "jail_net prestop ${name} {{ jail.num }} {{ jail.ip }}";
+ exec.poststop += "jail_net poststop ${name} {{ jail.num }} {{ jail.ip }}";
# Custom hooks
{% for cmd in jail.exec_prestart %}
diff --git a/roles/jail/templates/usr_local_bin_jail_net.j2 b/roles/jail/templates/usr_local_bin_jail_net.j2
index e9873a3..e8ce462 100644
--- a/roles/jail/templates/usr_local_bin_jail_net.j2
+++ b/roles/jail/templates/usr_local_bin_jail_net.j2
@@ -1,27 +1,16 @@
#!/bin/sh
# jail_net - manage jail LAN networking lifecycle
-# Usage: jail_net <prestart|poststart|prestop|poststop> <jail_num> <jail_name>
+# Usage: jail_net <prestart|poststart|prestop|poststop> <jail_name> <jail_num> <jail_ip_cidr>
set -e
STAGE="$1"
-NUM="$2"
-NAME="$3"
+NAME="$2"
+NUM="$3"
+IP="$4"
BRIDGE="brlan0"
-LAN_BASE="{{ jail_lan_cidr | ipv4_host }}"
-LAN_PREFIX="{{ jail_lan_cidr | ipv4_prefixlen }}"
-LAN_OFFSET="{{ jail_lan_offset }}"
-DEFAULT_ROUTE="{{ jail_lan_cidr | ipv4_nth(1 + jail_lan_offset | int) }}"
-
-# Compute jail IP from jail_num + offset
-_nth=$(( LAN_OFFSET + NUM ))
-_a=$(echo "$LAN_BASE" | cut -d. -f1)
-_b=$(echo "$LAN_BASE" | cut -d. -f2)
-_c=$(echo "$LAN_BASE" | cut -d. -f3)
-_d=$(echo "$LAN_BASE" | cut -d. -f4)
-_total=$(( (_a << 24) + (_b << 16) + (_c << 8) + _d + _nth ))
-IP="$(( (_total >> 24) & 255 )).$(( (_total >> 16) & 255 )).$(( (_total >> 8) & 255 )).$(( _total & 255 ))/${LAN_PREFIX}"
+DEFAULT_ROUTE="{{ jail_ips.ingress }}"
# --- Cleanup functions ---
@@ -121,7 +110,7 @@ case "$STAGE" in
prestop) _prestop ;;
poststop) _poststop ;;
*)
- echo "Usage: jail_net <prestart|poststart|prestop|poststop> <num> <name>" >&2
+ echo "Usage: jail_net <prestart|poststart|prestop|poststop> <name> <num> <ip_cidr>" >&2
exit 1
;;
esac