Migration von iocage jails nach bastille
Wenn Mensch Jails von iocage nach bastille migrieren möchte wird meistens der Weg über einen Import / Export beschrieben. Das funktionierte hier auch hat aber einen grossen Nachteil. Es wird dabei ein Zipfile vom Jail erstellt. Dies kann bei sehr grossen Jails sehr lange dauern und ist hier auch schon mal abgebrochen worden.
Ich habe hier meine Jails mit einem “einfachen” zfs send/recieve verschoben und dann die Jailkonfiguration manuell erstellt.
export jail=<jail2be-migrated>
iocage stop $jail
zfs snapshot -r zroot/iocage/jails/$jail@migration
zfs send -R zroot/iocage/jails/$jail@migration | zfs receive zroot/bastille/jails/$jail
zfs send -R zroot/iocage/jails/$jail/root@migration | zfs receive zroot/bastille/jails/$jail/root
Wenn man ein Snapshot Werkzeug wie sanoid verwendet sollte man das für den Export disablen. Sonst kann es passieren das der send/recieve abbricht weil zwischendurch zfs snapshots gelöscht worden sind.
Dann noch die Jail Konfiguration (die natürlich von der Netzwerkeinrichtung abhängig ist) nach /usr/local/bastille/jails/
<jail-name> {
devfs_ruleset = 13;
enforce_statfs = 2;
exec.clean;
exec.consolelog = /var/log/bastille/jail-name_console.log;
exec.start = '/bin/sh /etc/rc';
exec.stop = '/bin/sh /etc/rc.shutdown';
host.hostname = jail-name;
mount.devfs;
mount.fstab = /usr/local/bastille/jails/jail-name/fstab;
path = /usr/local/bastille/jails/jail-name/root;
securelevel = 2;
interface = bastille0;
ip4.addr = jail_ip ;
ip6 = disable;
}
Wenn das Jail Firewalleinträge braucht wird man noch die /etc/pf.conf anpassen müssen.