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 iocage

  • iocage_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-dessous

  • myjail ('') :
    Si défini, exécute seulement cette prison de jail_list (aucune si non trouvé)

  • myjails([]) :
    Identique à myjail, mais pour plus d'une :)

  • iocage_components (none) - liste :
    Si défini, installe seulement ces composants

  • iocage_enable_ssh (True) :
    Active ssh dans les nouvelles prisons

  • iocage_release (uname -r) :
    La version dont vous avez besoin

  • jail_init_role () :
    Rôle à importer pour initialiser une nouvelle prison

  • iocage_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ôte

  • hostname ('') : UUID généré si vide

  • ip4 ('') : 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 disponibles

  • authkeys (/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

À propos du projet

iocage jail management for FreeBSD

Installer
ansible-galaxy install criecm.iocage
Licence
Unknown
Téléchargements
187
Propriétaire
Direction des Systèmes d'Information