criecm.iocage
iocage
Instalacja hosta i konfigurowanie więzień na FreeBSD (to nie zadziała as-is na FreeNAS, poprawki mile widziane ;)
Używa modułu iocage z ansible z
https://github.com/fractalcells/ansible-iocage
(wbudowanego w bibliotekę roli)
Dodaje stworzone hosty do inwentarza (add_host) z zmienną iocage_host wypełnioną nazwą hosta oraz grupą iojails.
Zmienne roli
(w defaults/main.yml)
iocage_zpool (zroot): ZFS pool dla iocageiocage_fetch_args ({}): argumenty, które będą przekazywane doiocage fetchprzykład: "-s ftp.local -d pub/FreeBSD/releases"jail_list ([])lista słowników więzień do utworzenia na hoście, patrz poniżejmyjail ('')jeśli zdefiniowane, uruchomi tylko to więzienie zjail_list(nic, jeśli nie znalezione)myjails([])to samo comyjail, ale dla więcej niż jednego :)iocage_components (none)- lista jeśli zdefiniowane, zainstaluje tylko te komponentyiocage_enable_ssh (True)Włącz SSH w nowych więzieniachiocage_release (uname -r)Wersja, której potrzebujeszjail_init_role ()Rola do zaimportowania w celu inicjalizacji nowego więzieniaiocage_use_pkg (True)Zainstaluje iocage z pakietów, lub z git, jeśli False
zmienne dla więzienia
(w vars/jail.yml)
name(brak domyślnej wartości, obowiązkowe): ludzki identyfikator, unikalny na hościehostname(''): wygenerowany UUID, jeśli pusteip4(''): adres(y) IPv4, ten sam format co iocage: [ifaceN|]192.0.2.1[/24][,[ifaceN|]192.0.2.1[/24][,…]]- jeśli 'iface|' jest dodane na początku, adres IP zostanie dodany do interfejsu przy uruchamianiu więzienia
- jeśli nie podano maski, IP będzie /32
ip6(''): IPv6 … tak samo jak powyżej (ale domyślna maska to /128, nie /32 ;-P)resolver('auto'): zawartość resolv.conf dla więzienia, z ';' zamiast nowych linii (iocage skopiuje jeden z hosta przy uruchamianiu więzienia, jeśli puste)properties({}): Słownik dla dowolnych właściwości więzienia iocageauthkeys (/root/.ssh/authorized_keys)Plik do skopiowania jako /root/.ssh/authorized_keys w więzieniu
logika resolver=auto
resolver zostanie automatycznie wypełniony według zmiennych search_domains i resolvers
(tutaj mamy je w group_vars/all.yml). To wybierze domeny wyszukiwania i resolvery
w zależności od adresów IP więzienia.
# jeśli ip jest w 'network', 'domain' jest dodawana
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' }
# jeśli ip jest w 'network', 'ip' jest dodawane do resolverów
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 }
przykładowe playbooki:
Host z dwoma więzieniami:
- 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' }
fragment playbooka do utworzenia/zarejestrowania więzienia przed pracą z nim
- hosts: realmachine
roles:
- criecm.iocage
vars:
# tutaj jail_list może być w inwentarzu/host_vars/realmachine.yml
myjail: myfirstjail
- hosts: myfirstjail
roles:
- criecm.apache
[…]
moduł ansible-iocage
aktualizacja z źródła:
git subtree pull -P roles/criecm.iocage/library/src/iocage https://github.com/criecm/ansible-iocage.git master
ansible-galaxy install criecm.iocage