criecm.iocage
iocage
Installation/configuration de l'hôte iocage et des prisons sur FreeBSD
(cela ne fonctionnera pas tel quel sur FreeNAS, les correctifs sont les bienvenus ;)
Utilise le module iocage
d'ansible provenant de
https://github.com/fractalcells/ansible-iocage
(inclus dans la bibliothèque du rôle)
Ajoute les hôtes créés dans l'inventaire (add_host
) avec une variable iocage_host
remplie du inventory_hostname
de l'hôte et d'un groupe iojails
.
Variables de rôle
(dans defaults/main.yml)
iocage_zpool (zroot)
:
Pool ZFS pour iocageiocage_fetch_args ({})
:
Arguments à passer àiocage fetch
exemple : "-s ftp.local -d pub/FreeBSD/releases"jail_list ([])
:
Liste des dictionnaires de prisons à créer sur l'hôte, voir ci-dessousmyjail ('')
:
Si défini, exécute seulement cette prison dejail_list
(aucune si non trouvé)myjails([])
:
Identique à myjail, mais pour plus d'une :)iocage_components (none)
- liste :
Si défini, installe seulement ces composantsiocage_enable_ssh (True)
:
Active ssh dans les nouvelles prisonsiocage_release (uname -r)
:
La version dont vous avez besoinjail_init_role ()
:
Rôle à importer pour initialiser une nouvelle prisoniocage_use_pkg (True)
:
Installera iocage à partir des paquets, ou à partir de git si False
Variables par prison
(dans vars/jail.yml)
name
(pas de défaut, obligatoire) : identifiant humain, unique sur l'hôtehostname
('') : UUID généré si videip4
('') : adresses IPv4, même format que iocage : [ifaceN|]192.0.2.1[/24][,[ifaceN|]192.0.2.1[/24][,…]]- si 'iface|' est ajouté, l'IP sera ajoutée à l'interface au démarrage de la prison
- si pas de masque donné, l'IP sera /32
ip6
('') : IPv6... même que ci-dessus (mais le masque par défaut est /128, pas /32 ;-P)resolver
('auto') : contenu de resolv.conf pour la prison, avec ';' au lieu des nouvelles lignes
(iocage copiera celui de l'hôte au démarrage de la prison si vide)properties
({}) :
Dictionnaire pour toutes les propriétés de prison iocage disponiblesauthkeys (/root/.ssh/authorized_keys)
:
Fichier à copier en tant que /root/.ssh/authorized_keys dans la prison
Logique resolver=auto
resolver
sera automatiquement peuplé selon les variables search_domains
et resolvers
(ici nous les avons dans group_vars/all.yml
). Cela sélectionnera les domaines de recherche et les résolveurs en fonction des adresses IP de la prison.
# si l'IP est dans 'network', 'domain' est ajouté
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' }
# si l'IP est dans 'network', 'ip' est ajouté aux résolveurs
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 }
Exemples de playbooks :
Un hôte de prison avec deux prisons :
- 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' }
Un extrait de playbook pour créer/enregistrer la prison avant de travailler dessus
- hosts: realmachine
roles:
- criecm.iocage
vars:
# ici jail_list peut être dans l'inventaire/host_vars/realmachine.yml
myjail: myfirstjail
- hosts: myfirstjail
roles:
- criecm.apache
[…]
Module ansible-iocage
Mettre à jour à partir de la source :
git subtree pull -P roles/criecm.iocage/library/src/iocage https://github.com/criecm/ansible-iocage.git master
ansible-galaxy install criecm.iocage