Roles Rôle « Domain »
22 octobre 2025 à 16:34Ce rôle est chargé de gérer les enregistrements de domaine.
Tags internes
- packages : Installation et configuration des packages ;
- domain : Gestion des enregistrements ;
Traitements spécifiques du jeu de tâches
Le jeu de tâche construit la liste des domaines depuis les informations des autres tâches et la variable managed_domains pour la mettre dans domains.
En plus de fournir les API, la configuration du jeu de tâche fourni les variables disponibles pour tous les inventaires :
| Variable | Type | Description |
|---|---|---|
domain_api_providers |
Dictionnaire de provider |
Informations d’authentification aux API des fournisseurs |
domain_providers |
Dictionnaire | Association entre les zones et les founisseurs pour la détermination automatique du fournisseur |
Le jeu de tâche défini ces variables pour l’usage dans managed_domains :
| Variable | Type | Description |
|---|---|---|
target_hostname |
FQDN | Nom de l’hôte utilisé pour les enregistrement CNAME – Calculé depuis le premier défini parmis hostoverride, ansible_host et inventory_hostname |
target_ipv4 |
IPv4 | Adresse IPv4 pour les enregistrements A – Utilise ipv4override ou calcul depuis ansible_all_ipv4_addresses |
target_ipv6 |
IPv6 | Adresse IPv6 pour les enregistrements AAAA – Utilise ipv6override ou calcul depuis ansible_all_ipv6_addresses |
Et ces variables sont utilisables pour les surcharger, dans l’ordre :
| Variable | Type | Description |
|---|---|---|
hostoverride |
FQDN | Nom d’hôte à utiliser pour les enregistrement CNAME |
ipv4override |
IPv4 | Adresse IPv4 pour les enregistrements A |
ipv6override |
IPv6 | Adresse IPv6 pour les enregistrements AAAA |
Variables à fournir
| Variable | Type | Requis | Défaut | Description |
|---|---|---|---|---|
domain_api_providers |
Dictionnaire de provider |
Oui | Dictionnaire vide | Informations d’authentification aux API des fournisseurs |
domains |
Liste de domain |
Oui | Liste vide | Information des domaines à mettre en place |
domain_pause |
Booléen | Non | Faux | Indique si l’on souhaite une pause de 60 secondes après la mise à jour des domaines en cas d’usage de reverse juste après |
Type provider
| Propriété | Type | Requis | Défaut | Description |
|---|---|---|---|---|
type |
Identifiant | Oui | Fournisseur d’API à utiliser. |
La propriété type indique le sous-type de l’objet.
Sous-type ovh
| Propriété | Type | Requis | Défaut | Description |
|---|---|---|---|---|
endpoint |
Chaîne | Non | Point de terminaison | |
application_key |
Chaîne | Non | Clé de l’application | |
application_secret |
Chaîne | Non | Secret de l’application | |
consumer_key |
Chaîne | Non | Clé du consommateur |
Aucune ou toutes les propriétés doivent être utilisées. Dans le cas ou aucune des propriétés est utilisé, le fichier ovh.ini configuré est utilisé.
Sous-type gandi
| Propriété | Type | Requis | Défaut | Description |
|---|---|---|---|---|
endpoint |
URL | Oui | Point de terminaison | |
apikey |
Chaîne | Oui | Clé API de l’utilisateur |
Type domain
| Propriété | Type | Requis | Défaut | Description |
|---|---|---|---|---|
provider |
Identifiant | Oui | Nom du fournisseur dans domain_api_providers |
|
domain |
Chaîne | Oui | Nom de la zone gérée | |
name |
Chaîne | Oui | Nom de domain sans le nom de la zone | |
ttl |
Entier | Non | Non défini | Durée de vie de l’enregistrement |
rrtype |
Identifiant | Oui | Type d’enregistrement DNS | |
value |
Chaîne | Oui si state != ‘absent’ |
Non définie | Valeur de l’enregistrement |
state |
Énumération | Non | ‘present’ | État de l’enregistrement souhaité |
L’unicité d’un enregistrement est effectué sur : name, rrtype et value.
Les valeurs valides pour state sont:
present: L’enregistrement existe dans la zone avec les paramètres indiqués.only: L’enregistrement existe et est le seul de son type. Les autres enregistrements du même type sont supprimés. Le reste est commepresent.absent: L’enregistrement n’existe pas. Si la valeur n’est pas spécifiée, tous les enregistrement de ce type sont supprimés.
Initialisation d’une clé OVH
Le point d’entrée est ovh-eu.
- Créer une application avec https://eu.api.ovh.com/createApp/ ;
- Créer un jeton d’authentification avec la commande suivante ;
curl -XPOST -H"X-Ovh-Application: YourApplicationKey" -H "Content-type: application/json" https://eu.api.ovh.com/1.0/auth/credential -d '{ "accessRules": [ { "method": "GET", "path": "/domain/zone/*" }, { "method": "POST", "path": "/domain/zone/*" }, { "method": "PUT", "path": "/domain/zone/*" }, { "method": "DELETE", "path": "/domain/zone/*" } ] }'
- Récupérer la valeur de
consumerKeydans le résultat ; - Accéder à l’URL
validationUrlindiquée dans le résultat ;- Indiquer les informations d’accès ;
- Choisir la validité non limitée ;
Récupération de la clé Gandi
- Se connecter à l’espace client https://admin.gandi.net ;
- Aller dans « Paramètres » ;
- Aller dans « Gérer le compte… » ;
- Aller dans « Sécurité » ;
- Récupérer la clé d’API ;
Ou demander la clé à un collaborateur si déjà générée.
Conversion Vhost en Domain
Détail de la conversion des champs de Virtual Host en champs de Domain.
Règles générales
Type vhost_base vers domain.
| Propriété Application | Type source | Source | Détails |
|---|---|---|---|
provider |
Calculé | vhost_name / vhost_aliases |
Le fournisseur est déterminé en fonction du nom de domaine |
domain |
Calculé | vhost_name / vhost_aliases |
Partie du nom de domaine ayant permis de trouver le fournisseur |
name |
Calculé | vhost_name / vhost_aliases |
Partie du nom de domaine restante après retrait de la partie déléguée |
rrtype |
Calculé | Voir détails ci-après | |
value |
Calculé | Voir détails ci-après | |
state |
Calculé | Voir détails ci-après |
Notes :
- Lorsqu’aucun fournisseur n’est trouvé pour le domaine, aucune équivalence n’est créé.
- Si la propriété
domain_ignoreest présente et à Vrai, alors l’entrée n’est pas traitée.
Règles particulières
Un vhost peut engendrer la création de plusieurs entrées de domaine. Voir, même aucune. Le nom principal du vhost ainsi que ses alias sont pris en compte.
Les propriétés suivantes optionnelles sont aussi prises en compte :
| Propriété | Type | Défaut | Description |
|---|---|---|---|
domains_by_ip |
Liste de FQDN | Vide | Liste des domaines pour lesquels il faut créer une association par adresse IP et non par nom canonique |
Un nom tombe dans l’une de ces trois conditions, évaluées dans l’ordre :
- Le nom de domaine n’est pas pris en charge par un fournisseur, le nom est ignoré ;
- Le nom de domaine est pris en charge les conditions ci-après sont vrais. Un enregistrement de type nom canonique est créé,
décris après la liste ;
- Le nom de domaine n’est pas celui de la machine ;
- Le nom de domaine n’est pas celui de la zone ;
- Le nom de domaine est absent de la liste
domains_by_ipde l’hôte ;
- Le nom de domaine est pris en charge et au moins une condition de l’entrée précédente est fausse. Un ou plusieurs enregistrements d’adresses sont créés, décris après la liste ;
Enregistrement de type nom canonique :
rrtype:CNAME;value: valeur detarget_hostname;state:only
Enregistrements de type adresse :
rrtype:Apour v4 etAAAApour v6 ;value: l’adresse IP ou absente si elle n’est pas disponible, venant detarget_ipv4ettarget_ipv6;state:onlysi l’adresse est présente sinonabsent;
Autres rôles
Les vhosts mis en place par les rôles suivants sont aussi pris en compte :
| Rôle | vhost_name |
vhost_aliases |
domain_ignore |
domains_by_ip |
|---|---|---|---|---|
| GitLab | gitlab.vhost.name |
gitlab.vhost.domain_ignore |
gitlab.vhost.domains_by_ip |
|
| GitLab Omnibus | gitlab_omnibus.vhost.name |
gitlab_omnibus.vhost.domain_ignore |
gitlab_omnibus.vhost.domains_by_ip |
|
| Redmine | redmine.vhost |
redmine.vhost_aliases |
redmine.domain_ignore |
redmine.domains_by_ip |
| Subversion | subversion.admin.vhost |
subversion.admin.domain_ignore |
subversion.admin.domains_by_ip |
|
subversion.repositories.vhost |
subversion.repositories.domain_ignore |
subversion.repositories.domains_by_ip |