timorunge.freeipa_server
freeipa_server
Ce rôle installe et configure le serveur FreeIPA selon vos besoins.
Ce playbook s'occupe de l'initialisation de l'utilisateur administrateur Kerberos (nom d'utilisateur : admin
, le mot de passe est celui que vous définissez dans freeipa_server_admin_password
).
En combinaison avec freeipa
(Github), il est possible (et testé) d'utiliser freeipa_server
avec la dernière version de FreeIPA elle-même sur Ubuntu >= 18.04 (regardez la section d'exemple).
Ne prend pas en charge Ubuntu 20.04
Ubuntu 20.04 n’a pas le package freeipa-server.
Exigences
Ce rôle nécessite Ansible 2.5.0 ou une version supérieure.
Vous pouvez simplement utiliser pip pour installer (et définir) une version stable :
pip install ansible==2.7.7
Tous les besoins de la plateforme sont listés dans le fichier de métadonnées.
Installation
ansible-galaxy install timorunge.freeipa_server
Variables du Rôle
Il est nécessaire de définir les variables suivantes pour que ce rôle fonctionne (sans personnalisation). Ces variables n'ont pas de valeurs par défaut :
# Mot de passe de l'utilisateur administrateur kerberos - au moins 8 caractères
# Type : Str
freeipa_server_admin_password: Passw0rd
# Domaine DNS principal de la déploiement IPA
# Type : Str
freeipa_server_domain: example.com
# Mot de passe du gestionnaire de répertoire - au moins 8 caractères
# Type : Str
freeipa_server_ds_password: Passw0rd
# Nom d'hôte de cette machine (FQDN)
# Type : Str
freeipa_server_fqdn: ipa.example.com
# Adresse IP du serveur maître
# Type : Str
freeipa_server_ip: 172.20.0.2
# Nom du royaume Kerberos de la déploiement IPA
# Type : Str
freeipa_server_realm: EXAMPLE.COM
Les variables qui peuvent être passées à ce rôle et une brève description les concernant sont les suivantes. (Pour toutes les variables, consultez defaults/main.yml)
# Activer/Désactiver la gestion du dépôt EPEL RedHat
# Type : Bool
freeipa_server_enable_epel_repo: true
# Ajouter automatiquement une entrée dans /etc/hosts
# Type : Bool
freeipa_server_manage_host: true
# Choix du type d'installation du serveur FreeIPA (maître/réplica)
# Type : Str
freeipa_server_type: master
# FQDN du serveur maître FreeIPA
# Type : Str
freeipa_server_master_fqdn: ''
# La commande de base pour l'installation de FreeIPA
# Type : Str
freeipa_server_install_base_command: ipa-{{ 'server' if freeipa_server_type == 'master' else 'replica' }}-install --unattended {{ '--server=' + freeipa_server_master_fqdn if freeipa_server_type == 'replica' }}
# Les options d'installation par défaut de FreeIPA
# Type : List
freeipa_server_install_options:
- "--realm={{ freeipa_server_realm }}"
- "--domain={{ freeipa_server_domain }}"
- "--setup-dns"
- "--ds-password={{ freeipa_server_ds_password }}"
- "--admin-password={{ freeipa_server_admin_password }}"
- "--mkhomedir"
- "--hostname={{ freeipa_server_fqdn | default(ansible_fqdn) }}"
- "--ip-address={{ freeipa_server_ip }}"
- "--no-host-dns"
- "--no-ntp"
- "--idstart=5000"
- "--ssh-trust-dns"
- "--forwarder=8.8.8.8"
- "--auto-forwarders"
Exemples
Pour garder le document concis, les options d'installation sont simplifiées. Vous pouvez trouver les options d'installation soit dans ce document soit dans les pages de manuel en ligne pour ipa-server-install.
1) Installer le serveur FreeIPA en tant que maître avec les paramètres par défaut
- hosts: freeipa-server
vars:
freeipa_server_admin_password: Passw0rd
freeipa_server_domain: example.com
freeipa_server_ds_password: Passw0rd
freeipa_server_fqdn: ipa-master.example.com
freeipa_server_ip: 172.20.0.2
freeipa_server_realm: EXAMPLE.COM
roles:
- timorunge.freeipa_server
2) Installer le serveur FreeIPA en tant que réplica avec les paramètres par défaut
- hosts: freeipa-server
vars:
freeipa_server_type: replica
freeipa_server_master_fqdn: ipa-master.example.com
freeipa_server_admin_password: Passw0rd
freeipa_server_domain: example.com
freeipa_server_ds_password: Passw0rd
freeipa_server_fqdn: ipa-replica.example.com
freeipa_server_ip: 172.20.0.3
freeipa_server_realm: EXAMPLE.COM
roles:
- timorunge.freeipa_server
3) Installer le serveur FreeIPA et l'activer automatiquement sur toutes les interfaces réseau (IPv4)
Vous devez toujours définir freeipa_server_ip
si vous souhaitez utiliser freeipa_server_manage_host
.
- hosts: freeipa-server
vars:
freeipa_server_admin_password: Passw0rd
freeipa_server_domain: example.com
freeipa_server_ds_password: Passw0rd
freeipa_server_fqdn: ipa.example.com
freeipa_server_ip: 172.20.0.3
freeipa_server_realm: EXAMPLE.COM
freeipa_server_install_options:
- "--ip-address={{ ansible_all_ipv4_addresses | join(' --ip-address=') }}"
roles:
- timorunge.freeipa_server
4) Installer le serveur FreeIPA avec des options d'installation personnalisées
- hosts: freeipa-server
vars:
freeipa_server_admin_password: Passw0rd
freeipa_server_domain: example.com
freeipa_server_ds_password: Passw0rd
freeipa_server_fqdn: ipa.example.com
freeipa_server_ip: 172.20.0.2
freeipa_server_realm: EXAMPLE.COM
freeipa_server_install_options:
- "--realm={{ freeipa_server_realm }}"
- "--domain={{ freeipa_server_domain }}"
- "--setup-dns"
- "--ds-password {{ freeipa_server_ds_password }}"
- "--admin-password {{ freeipa_server_admin_password }}"
- "--mkhomedir"
- "--hostname={{ freeipa_server_fqdn | default(ansible_fqdn) }}"
- "--ip-address={{ freeipa_server_ip }}"
- "--ip-address=10.0.0.2"
- "--ip-address=192.168.20.2"
- "--no-host-dns"
- "--no-ntp"
- "--idstart=5000"
- "--ssh-trust-dns"
- "--forwarder=8.8.8.8"
- "--auto-forwarders"
- "--no-ui-redirect"
- "--no-ssh"
- "--no-sshd"
roles:
- timorunge.freeipa_server
Options d'installation du serveur FreeIPA
Un aperçu des options d'installation pour ipa-server-install (4.6.4).
Usage: ipa-server-install [options]
Options:
--version affiche le numéro de version du programme et quitte
-h, --help affiche ce message d'aide et quitte
-U, --unattended installation ou désinstallation sans invite de l'utilisateur
--uninstall désinstaller une installation existante. La désinstallation peut
être exécutée avec l'option --unattended
Options de base:
-p DM_PASSWORD, --ds-password=DM_PASSWORD
Mot de passe du gestionnaire de répertoire
-a ADMIN_PASSWORD, --admin-password=ADMIN_PASSWORD
mot de passe de l'utilisateur administrateur kerberos
--ip-address=IP_ADDRESS
Adresse IP du serveur maître. Cette option peut être utilisée
plusieurs fois
-n DOMAIN_NAME, --domain=DOMAIN_NAME
domaine DNS principal de la déploiement IPA (pas forcément
lié au nom d'hôte actuel)
-r REALM_NAME, --realm=REALM_NAME
Nom du royaume Kerberos de la déploiement IPA (généralement
un nom en majuscules du domaine DNS principal)
--hostname=HOST_NAME
nom complet de cet hôte
--ca-cert-file=FILE
Fichier contenant les certificats CA pour les fichiers de
certificat de service
--no-host-dns Ne pas utiliser DNS pour la recherche de nom d'hôte pendant l'installation
Options du serveur:
--setup-adtrust configure la capacité de confiance AD
--setup-kra configure un KRA dogtag
--setup-dns configure le bind avec notre zone
--idstart=IDSTART La valeur de départ pour la plage d'ID (par défaut aléatoire)
--idmax=IDMAX La valeur max pour la plage d'ID (par défaut :
idstart+199999)
--no-hbac-allow N'installe pas la règle HBAC allow_all
--no-pkinit désactive les étapes de configuration pkinit
--no-ui-redirect Ne pas rediriger automatiquement vers l'interface Web
--dirsrv-config-file=FILE
Le chemin d'accès au fichier LDIF utilisé pour modifier
la configuration de dse.ldif lors de l'installation de l
instance du serveur de répertoire
Options de certificat SSL:
--dirsrv-cert-file=FILE
Fichier contenant le certificat SSL du serveur de répertoire
et la clé privée
--http-cert-file=FILE
Fichier contenant le certificat SSL du serveur Apache et
la clé privée
--pkinit-cert-file=FILE
Fichier contenant le certificat SSL KDC Kerberos et
la clé privée
--dirsrv-pin=PIN Le mot de passe pour déverrouiller la clé privée du serveur de répertoire
--http-pin=PIN Le mot de passe pour déverrouiller la clé privée du serveur Apache
--pkinit-pin=PIN Le mot de passe pour déverrouiller la clé privée KDC Kerberos
--dirsrv-cert-name=NAME
Nom du certificat SSL du serveur de répertoire à installer
--http-cert-name=NAME
Nom du certificat SSL du serveur Apache à installer
--pkinit-cert-name=NAME
Nom du certificat SSL KDC Kerberos à installer
Options client:
--mkhomedir créer des répertoires personnels pour les utilisateurs lors de leur première connexion
-N, --no-ntp ne pas configurer ntp
--ssh-trust-dns configure le client OpenSSH pour faire confiance aux enregistrements DNS SSHFP
--no-ssh ne pas configurer le client OpenSSH
--no-sshd ne pas configurer le serveur OpenSSH
--no-dns-sshfp ne pas créer automatiquement des enregistrements DNS SSHFP
Options système de certificat:
--external-ca Générer une CSR pour le certificat CA IPA à faire signer
par un CA externe
--external-ca-type={generic,ms-cs}
Type de CA externe
--external-ca-profile=EXTERNAL_CA_PROFILE
Spécifiez le profil de certificat/modèle à utiliser au
CA externe
--external-cert-file=FILE
Fichier contenant le certificat CA IPA et la chaîne de certificats
de la CA externe
--subject-base=SUBJECT_BASE
La base de sujet du certificat (par défaut O=<nom-du-royaume>).
Les RDN sont dans l'ordre LDAP (le RDN le plus spécifique en premier).
--ca-subject=CA_SUBJECT
Le DN du sujet de certificat CA (par défaut CN=Certificate
Authority,O=<nom-du-royaume>). Les RDN sont dans l'ordre LDAP
(le RDN le plus spécifique en premier).
--ca-signing-algorithm={SHA1withRSA,SHA256withRSA,SHA512withRSA}
Algorithme de signature du certificat CA IPA
Options DNS:
--allow-zone-overlap
Crée une zone DNS même si elle existe déjà
--reverse-zone=REVERSE_ZONE
La zone DNS inversée à utiliser. Cette option peut être utilisée
plusieurs fois
--no-reverse Ne pas créer de nouvelle zone DNS inversée
--auto-reverse Créez les zones inversées nécessaires
--zonemgr=ZONEMGR Adresse e-mail du gestionnaire de zone DNS. Par défaut
hostmaster@DOMAIN
--forwarder=FORWARDERS
Ajoute un renvoyeur DNS. Cette option peut être utilisée plusieurs
fois
--no-forwarders Ne pas ajouter de renvoyeurs DNS, utilisez plutôt les serveurs root
--auto-forwarders Utilisez les renvoyeurs DNS configurés dans /etc/resolv.conf
--forward-policy={first,only}
Politique de transfert DNS pour les renvoyeurs globaux
--no-dnssec-validation
Désactiver la validation DNSSEC
Options de confiance AD:
--enable-compat Activer le support des domaines de confiance pour les anciens clients
--netbios-name=NETBIOS_NAME
Nom NetBIOS du domaine IPA
--rid-base=RID_BASE
Valeur de départ pour le mappage des UID et GID vers les RID
--secondary-rid-base=SECONDARY_RID_BASE
Valeur de départ de la plage secondaire pour le mappage des UID
et GID vers les RID
Options de désinstallation:
--ignore-topology-disconnect
ne pas vérifier si la désinstallation du serveur déconnecte la
topologie (niveau de domaine 1+)
--ignore-last-of-role
ne pas vérifier si la désinstallation du serveur supprime le dernier
serveur CA/DNS ou le maître DNSSec (niveau de domaine 1+)
Options de journalisation et de sortie:
-v, --verbose imprimer des informations de débogage
-d, --debug alias pour --verbose (obsolète)
-q, --quiet afficher uniquement les erreurs
--log-file=FILE journaliser dans le fichier donné
Tests
Les tests sont réalisés avec Vagrant (installer Vagrant) qui met en place les machines virtuelles suivantes :
- EL
- 7
- Fedora
- 26
- 27
- Ubuntu
- 16.04 LTS (Xenial Xerus)
- 17.10 (Artful Aardvark)
- 18.04 LTS (Bionic Beaver)
La dernière version stable d'Ansible est installée sur toutes les machines virtuelles et applique un test playbook en local.
Pour plus de détails et des vérifications supplémentaires, consultez l'entrée Vagrant.
# Tests dans toutes les machines vagrant disponibles :
# Cela peut prendre du temps. Prenez un café. Ou deux. Ou quarante deux.
cd tests
vagrant up --parallel && vagrant halt
for h in $(vagrant global-status --prune | grep freeipa_server | awk '{print $2}') ; do echo ${h} ; vagrant up --provision ${h} ; vagrant ssh ${h} -c "sudo /vagrant/vagrant-entrypoint.sh" && (echo "$(date): ${h}: pass" >> tests/results.log) || (echo "$(date): ${h}: fail" >> tests/results.log) ; vagrant halt ${h} ; done
vagrant destroy -f
Si Vagrant échoue à monter les répertoires, vous devez vous assurer que vous avez installé les Ajouts des Invités de VirtualBox.
Les tests Travis sont effectués avec Docker et docker_test_runner. Les tests sur Travis effectuent des vérifications de syntaxe et de linting.
Pour plus de détails et des vérifications supplémentaires, consultez la configuration docker_test_runner et l'entrée Docker.
# Tests en local :
curl https://raw.githubusercontent.com/timorunge/docker-test-runner/master/install.sh | sh
./docker_test_runner.py -f tests/docker_test_runner.yml
Sécurité
Ce playbook ne s'occupe pas de sécuriser le serveur FreeIPA, ce qui peut être fait par exemple avec firewalld ou iptables.
Selon votre configuration, vous devez ouvrir les ports suivants :
Ports TCP :
- 80, 443 : HTTP/HTTPS
- 389, 636 : LDAP/LDAPS
- 88, 464 : kerberos
- 53 : bind
Ports UDP :
- 88, 464 : kerberos
- 53 : bind
Sauvegarde
Assurez-vous de sauvegarder les certificats CA stockés dans /root/cacert.p12. Ces fichiers sont nécessaires pour créer des réplicas. Le mot de passe pour ces fichiers est le mot de passe du gestionnaire de répertoire (freeipa_server_ds_password
).
Sur FreeIPA, vous pouvez également trouver une page générale sur la Sauvegarde et Restauration qui couvre les sujets les plus importants.
Il existe un rôle Ansible qui effectue quelques sauvegardes de base : Sauvegarde du serveur FreeIPA (Repo Github).
Dépendances
Aucune
Licence
Licence BSD 3-Clause "New" ou "Revised"
Informations sur l'auteur
- Timo Runge
FreeIPA Identity Management Server provisioning.
ansible-galaxy install timorunge.freeipa_server