vnode.ypserver
Rôle Ansible : ypserver
Ce rôle installe et configure le serveur YP/NIS, qui fait partie d'OpenBSD et d'autres systèmes d'exploitation BSD. Actuellement, ce rôle ne supporte que OpenBSD, avec l'intention d'ajouter FreeBSD et NetBSD dans une mise à jour future proche.
Lorsque c'est applicable, ce rôle se réfère à la documentation système, par exemple la page de man yp(8)
.
Exigences
Fonctionnement
Aucun rôle ou module externe n'est requis pour utiliser ce rôle.
Test et développement
Pour le test et le développement, ce rôle dépend des outils externes suivants :
- Vagrant (supportant soit le fournisseur VirtualBox ou VMWare)
- VagrantCloud (plus précisément, la boîte
generic/openbsd6
)
Variables du rôle
Les variables disponibles sont listées ci-dessous, y compris leurs valeurs par défaut (voir defaults/main.yml
). Toutes ces variables doivent être mises en œuvre. Si vous constatez qu'elles ne le sont pas, veuillez ouvrir un problème dans le dépôt GitHub.
Variables requises
Les variables suivantes doivent être définies lors de l'utilisation du rôle.
ypserver_domain: ""
Requis, doit avoir un nom de domaine NIS valide. C'est le nom du domaine NIS que vous souhaitez configurer.
ypserver_master: ""
Requis, doit lister un serveur maître NIS accessible pour le domaine.
ypserver_servers: []
Requis, doit lister l'ensemble des serveurs NIS pour le domaine. Cette liste doit inclure le serveur ypserver_master
également.
Remarque : si vous souhaitez uniquement configurer des serveurs esclaves (contre un maître déjà existant), assurez-vous que le maître n'est pas inclus dans le groupe d'hôtes auquel vous appliquez ce rôle.
ypserver_serverinfo: {}
Requis, mais peut être vide si les serveurs NIS pour le domaine peuvent être trouvés dans le DNS ou /etc/hosts
.
S'il n'est pas vide, ce dictionnaire liste les adresses IPv4 et/ou IPv6 pour les serveurs du domaine. Le rôle remplira alors /etc/hosts
avec les lignes requises. Si les serveurs ne peuvent pas être atteints ou résolus, le code NIS se bloquera. Consultez yp(8)
pour plus de détails.
L'exemple ci-dessous liste les adresses pour les serveurs master
et slave
dans un réseau à double pile.
ypserver_serverinfo:
master:
- "192.0.2.1"
- "2001:db8::111:1"
slave:
- "192.0.2.2"
- "2001:db8::111:2"
ypserver_ypservacl: {}
Requis, si ypserver_set_ypserveracl
est défini. Ce dictionnaire liste les règles pour le fichier ypserv.acl(5)
. Ce fichier ACL permet de limiter l'accès au serveur YP/NIS aux plages réseau appropriées. Si ypserver_set_ypserveracl
n'est pas défini, cette variable créera un fichier securenet(5)
à la place, qui est un format plus limité. Veuillez vous assurer que vos règles tiennent compte de ces limitations en vérifiant les pages de man applicables.
Assurez-vous d'inclure vos serveurs esclaves ainsi que les clients qui doivent accéder à YP/NIS. Par exemple, si vous souhaitez autoriser votre hôte local, le serveur esclave slave
et les clients du réseau 192.0.2.0/24
, vous utiliseriez :
ypserver_ypservacl:
- action: allow
type: host
host: "localhost"
- action: allow
type: host
host: "master"
- action: allow
type: host
host: "192.0.2.2"
tag: "slave"
- action: allow
type: net
host: "192.0.2.0"
mask: "255.255.255.0"
tag: "Clients"
- action: deny
type: all
Variables optionnelles
ypserver_usedns: true
Spécifie que les cartes YP/NIS peuvent utiliser DNS pour la recherche de noms d'hôtes. Il est recommandé de laisser à true
. Lorsqu'il est réglé sur false
, assurez-vous que ypserver_serverinfo
et/ou ypserver_set_hosts
sont correctement définis pour que vos serveurs NIS puissent être résolus.
ypserver_unsecure: false
Il est recommandé de rester à false
lorsque vous ne servez que des clients OpenBSD ou FreeBSD.
S'il est réglé sur true
, les cartes passwd
contiendront des entrées de mot de passe (cryptées). Si tous vos /clients/ YP/NIS utilisent OpenBSD ou FreeBSD, vous pouvez en toute sécurité définir cette variable sur false
. Pour plus d'informations, consultez la FAQ OpenBSD. Veuillez noter que ce réglage ne résout pas vraiment l'insécurité inhérente à NIS.
ypserver_nopush: false
Il est recommandé de laisser à true
à moins que vous n'ayez besoin de mesures spécifiques pour mettre à jour les cartes sur les serveurs esclaves.
S'il est réglé sur true
, les cartes mises à jour sur le maître ne seront pas automatiquement poussées vers les serveurs esclaves. Dans ce cas, vous devrez organiser les mises à jour sur les serveurs esclaves d'une autre manière (par exemple en utilisant des tâches cron ou rsync).
ypserver_source_dir: '/etc'
Le répertoire source pour les cartes fournies par le domaine NIS. Ce répertoire doit être présent sur le serveur maître et contenir les fichiers référencés dans la variable ypserver_source_maps
.
ypserver_source_maps:
passwd: 'master.passwd'
group: 'group'
Ce dictionnaire répertorie quelles cartes le maître du domaine NIS fournit aux clients et leurs fichiers source. Ces fichiers doivent exister sur le maître dans le répertoire ypserver_source_dir
. Pour d'autres cartes prises en charge, veuillez consulter Makefile.yp(8)
.
ypserver_passwd_minuid: 1000
ypserver_passwd_maxuid: 32765
ypserver_group_mingid: 1000
ypserver_group_maxgid: 32765
Ces variables indiquent les limites inférieure/supérieure des noms d'utilisateur et des groupes à inclure dans la carte NIS. Cela évite de divulguer des comptes système dans les cartes.
Variables pour soutenir plusieurs domaines YP/NIS sur un serveur
Cette variable est conçue pour permettre l'hébergement de plusieurs domaines NIS sur un serveur. Ce n'était pas l'utilisation prévue à l'origine, donc si vous rencontrez des problèmes, veuillez le signaler comme un problème sur GitHub.
ypserver_set_domainname: true
Il est recommandé de le laisser à true
pour le domaine qui est censé être votre nom de domaine 'principal' (par défaut). Il doit être réglé sur false
pour d'autres domaines NIS que vous souhaitez héberger sur le même serveur.
Paramètres supplémentaires
Ces variables ne sont pas nécessaires pour les invocations du rôle et leurs valeurs par défaut devraient convenir.
ypserver_set_hosts: false
S'il est réglé sur true
, le rôle ajoute les informations IP pour les serveurs NIS au fichier /etc/hosts
. Cela est généralement utile lorsque le domaine n'utilise pas les recherches DNS (avec ypserver_usedns
réglé sur false
). Notez que cela nécessite des informations IP pour chaque serveur NIS dans la variable ypserver_serverinfo
.
ypserver_set_yppasswdd: false
Active le service yppasswd
, permettant aux utilisateurs du serveur maître de changer leur mot de passe dans les cartes NIS. Notez que les versions récentes d'OpenBSD (depuis la 5.9) n'ont plus cette fonctionnalité.
ypserver_set_ypservacl: false
Crée un fichier ACL /var/yp/ypserv.acl
selon le fichier ypserv.acl(5)
au lieu du fichier securenet(5)
. Ce fichier ACL permet de limiter l'accès au serveur YP/NIS aux plages réseau appropriées. Nécessite que la variable ypserver_ypservacl
soit définie correctement.
ypserver_set_cronjob: true
Il est recommandé de le laisser à true
à moins que vous n'ayez besoin/désiriez d'autres arrangements que ceux prévus par le rôle. Configure une tâche cron régulière pour les mises à jour des cartes sur le domaine et vérifie les cartes manquantes sur les serveurs esclaves.
Nom de la tâche | Intervalle | Remarque(s) |
---|---|---|
Mettre à jour le domaine YP ypserver_ypdomain |
Toutes les 15 minutes | Sur le serveur maître |
Mettre à jour le domaine YP ypserver_ypdomain |
À chaque heure à :05 | Sur les serveurs esclaves |
Variables internes
Ces variables sont utilisées en interne dans le rôle et ne sont pas destinées à être modifiées par l'utilisateur. Changez-les à vos risques et périls. En général, elles correspondent à des valeurs codées en dur dans le système d'exploitation sous-jacent.
ypserver_ypdbdir: '/var/yp'
ypserver_ypdbdir_domain: "{{ ypserver_ypdbdir }}/{{ ypserver_domain }}"
ypserver_securenet: "{{ ypserver_ypdbdir }}/securenet"
Dépendances
Aucune.
Exemple de Playbook
Voici un exemple pour créer un domaine YP/NIS simple avec deux serveurs, master
et slave
. Le domaine s'appelle legacy
. Les fichiers sources pour les cartes se trouvent dans /etc/legacy
.
---
- hosts: ypservers
roles:
- role: vnode.ypserver
vars:
ypserver_ypdomain: legacy
ypserver_master: master
ypserver_servers: "{{ groups['ypservers'] }}"
ypserver_source_dir: "/etc/{{ ypserver_domain }}"
Licence
MIT
Informations sur l'auteur
Ce rôle a été créé en 2020 par Rogier Krieger.