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 fetch
przykł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