criecm.iocage
iocage
iocage Hostinstallation/konfiguration und Jail-Installation auf FreeBSD
(Dies wird so nicht auf FreeNAS funktionieren, Patches sind willkommen ;)
Verwendet das iocage
Ansible-Modul von
https://github.com/fractalcells/ansible-iocage
(im Rollenbibliotheksverzeichnis eingebettet)
Fügt erstellte Hosts im Inventar (add_host
) mit einer iocage_host
Variablen hinzu,
die mit inventory_hostname
des Hosts und einer iojails
Gruppe gefüllt ist.
Rollenvariablen
(in defaults/main.yml)
iocage_zpool (zroot)
:
ZFS-Pool für iocageiocage_fetch_args ({})
:
Argumente, die aniocage fetch
übergeben werden
Beispiel: "-s ftp.local -d pub/FreeBSD/releases"jail_list ([])
:
Liste von Jail-Dictionaries, die auf dem Host erstellt werden sollen, siehe untenmyjail ('')
:
Wenn definiert, nur dieses Jail vonjail_list
ausführen (nichts, wenn nicht gefunden)myjails([])
:
Dasselbe wie myjail, aber für mehr als eines :)iocage_components (none)
- Liste:
Wenn definiert, nur diese Komponenten installiereniocage_enable_ssh (True)
:
SSH in neuen Jails aktiviereniocage_release (uname -r)
:
Die benötigte Versionjail_init_role ()
:
Rolle, die importiert werden soll, um ein neues Jail zu initialisiereniocage_use_pkg (True)
:
Installiert iocage aus Paketen oder aus Git, wenn False
Variablen pro Jail
(in vars/jail.yml)
name
(kein Standard, verpflichtend): menschliche Kennung, einzigartig auf dem Hosthostname
(''): generierter UUID, wenn leerip4
(''): IPv4-Adresse(n), dasselbe Format wie iocage: [ifaceN|]192.0.2.1[/24][,[ifaceN|]192.0.2.1[/24][,…]]- Wenn 'iface|' vorangestellt ist, wird die IP beim Booten des Jails der Schnittstelle hinzugefügt
- Wenn keine Maske angegeben ist, wird die IP als /32 verwendet
ip6
(''): IPv6 … dasselbe wie oben. (aber Standardmaske ist /128, nicht /32 ;-P )resolver
('auto'): Inhalt von resolv.conf für das Jail, mit ';' anstelle von Zeilenumbrüchen
(iocage kopiert den Inhalt des Hosts beim Booten des Jails, wenn leer)properties
({}):
Dictionary für alle verfügbaren iocage Jail-Eigenschaftenauthkeys (/root/.ssh/authorized_keys)
:
Datei, die als /root/.ssh/authorized_keys im Jail kopiert wird
resolver=auto Logik
resolver
wird automatisch entsprechend den Variablen search_domains
und resolvers
ausgefüllt
(hier haben wir sie in group_vars/all.yml
). Dies wählt die Suchdomain(en) und Resolver abhängig von den IP-Adressen des Jails aus.
# Wenn die IP im 'network' ist, wird 'domain' hinzugefügt
search_domains:
- { network: '192.0.2.0/24', domain: 'our.example.net' }
- { network: '198.51.100.0/24', domain: 'ryd.example.org' }
- { network: '2001:0DB8:fe43::/32', domain: 'ipv6.example.org' }
- { network: '0.0.0.0/0', domain: 'example.com' }
# Wenn die IP im 'network' ist, wird 'ip' zu resolvers hinzugefügt
resolvers:
- { network: '192.0.2.0/24', ip: 192.0.2.1 }
- { network: '198.51.100.0/24', ip: 192.0.2.1 }
- { network: '2001:0DB8:fe43::/56', ip: 2001:0DB8::1 }
- { network: '0.0.0.0/0', ip: 8.8.8.8 }
- { network: '::/0', ip: 2620:0:ccc::2 }
Beispiel-Playbooks:
Ein Jail-Host mit zwei Jails:
- hosts: realmachine
roles:
- criecm.iocage
vars:
jail_list:
- { name: myfirstjail, hostname: myfirstjail.example.org, ip4_addr: 'bge0|198.51.100.0' }
- { name: mysecjail, hostname: mysecjail.example.org, ip4_addr: 'bge0|198.51.100.8' }
Ein Playbook-Ausschnitt zur Erstellung/Registrierung des Jails, bevor daran gearbeitet wird
- hosts: realmachine
roles:
- criecm.iocage
vars:
# hier kann jail_list im inventory/host_vars/realmachine.yml sein
myjail: myfirstjail
- hosts: myfirstjail
roles:
- criecm.apache
[…]
ansible-iocage Modul
Update von der Quelle:
git subtree pull -P roles/criecm.iocage/library/src/iocage https://github.com/criecm/ansible-iocage.git master
ansible-galaxy install criecm.iocage