ansibleguy.infra_openvpn
TRAVAIL EN COURS ! À NE PAS UTILISER EN PRODUCTION !

Rôle Ansible - VPN Client-à-Site OpenVPN
AVERTISSEMENT : Ce rôle est encore en développement. NE PAS ESSAYER D'UTILISER EN PRODUCTION !
Rôle pour déployer des configurations VPN Client-à-Site OpenVPN.
Éditions OpenVPN
Ce rôle utilise l'édition OpenSource de OpenVPN Community.
Pourquoi utiliser l'édition communautaire ?
Avantages :
- Pas de frais de licence - un serveur peut prendre en charge des milliers de clients sans coûts majeurs
- Toutes les principales fonctionnalités sont disponibles dans l'édition open-source
- Gérable avec Ansible
Inconvénients :
Cette édition n'a pas d'interface utilisateur graphique (web) !
Si vous recherchez une belle interface web, jetez un œil à OpenVPN Access Server
Testé :
- Debian 11
- Debian 12
Installation
# dernière version
ansible-galaxy role install git+https://github.com/ansibleguy/infra_openvpn
# depuis galaxy
ansible-galaxy install ansibleguy.infra_openvpn
# ou vers un chemin de rôle personnalisé
ansible-galaxy install ansibleguy.infra_openvpn --roles-path ./roles
# installer les dépendances
ansible-galaxy install -r requirements.yml
Utilisation
Vous voulez une interface graphique Ansible simple ? Découvrez ma WebUI Ansible
Configuration
Définissez la configuration comme nécessaire :
openvpn:
Vous pouvez utiliser 'ansible-vault' pour chiffrer vos mots de passe :
ansible-vault encrypt_string
Exécution
Exécutez le playbook :
ansible-playbook -K -D -i inventory/hosts.yml playbook.yml
Il existe également quelques tags utiles disponibles :
*
Pour déboguer les erreurs, vous pouvez définir la variable 'debug' à l'exécution :
# AVERTISSEMENT : Cela va consigner les mots de passe !
ansible-playbook -K -D -i inventory/hosts.yml playbook.yml -e debug=yes
Pour que les services OpenVPN soient redémarrés automatiquement (sans invites interactives) :
ansible-playbook -K -D -i inventory/hosts.yml playbook.yml -e auto_restart=yes
Fonctionnalités
Installation de paquets
- Dépendances Ansible (minimales)
Configuration
Configuration par défaut :
Options par défaut :
Options à ne pas inclure par défaut :
Informations
Info : Si vous souhaitez en savoir plus sur la configuration de la version communautaire d'OpenVPN, consultez leur documentation complète
Pages intéressantes :
Info : ChromeOS utilise le format de Configuration Réseau Ouverte (ONC).
Ce format est en JSON et difficile à déboguer car vous ne recevez pas de messages d'erreur utiles.
Le modèle de profil fourni par ce rôle peut ne pas fonctionner pour chaque cas particulier.
Si vous devez le dépanner - consultez la documentation ONC. Mais soyez conscient : toutes les options peuvent ne pas fonctionner dans la pratique comme documenté.
Avertissement : Si une instance OpenVPN doit prendre en charge les connexions aux clients ChromeOS - vous devrez définir l'option 'openvpn.instances.[nom].security.tls_crypt' sur 'false' car cela n'est pas (actuellement) supporté par l'implémentation ChromeOS.
Remarque : ce rôle ne prend actuellement en charge que les systèmes basés sur Debian.
Remarque : La plupart des fonctionnalités du rôle peuvent être activées ou désactivées.
Pour toutes les options disponibles, consultez la configuration par défaut située dans le fichier par défaut principal !
Avertissement : Chaque paramètre/variable que vous fournissez ne sera pas vérifié pour sa validité. Une mauvaise configuration peut casser le rôle !
Info : Si vous voulez utiliser
openvpn.unprivileged: true
pour améliorer la sécurité du système, le binaire OpenVPN installé doit supporteriproute2
!Le rôle vérifiera si le binaire est compatible et échouera si ce n'est pas le cas !
Options pour obtenir le support de iproute2 :
- Vous devrez utiliser un binaire compilé avec cette option activée
- Re-compiliez OpenVPN vous-même comme indiqué dans cet exemple de script (sans le 'désinstaller').
- Ou configurez le rôle pour télécharger un binaire re-compilé depuis mon dépôt ansibleguy/openvpn-recompiled !
- Désinstallez les paquets/binarie OpenVPN existants.
- Copiez/liez le binaire
openvpn
dans/usr/local/bin
.
- Vous devrez utiliser un binaire compilé avec cette option activée
Info : Si vous utilisez l'authentification multi-facteurs, vous pourriez rencontrer des problèmes lorsque certains clients (comme ChromeOS) ne prennent pas en charge un deuxième champ pour le deuxième secret !
Vous devrez peut-être définir
openvpn.server.auth.mfa_separator
sur des caractères inhabituels de votre choix. (par exemple : <<<)Cela vous permet d'entrer à la fois secret1 (mot de passe) et secret2 (code pin TOTP) dans le même champ ! Comme ceci :
p4ssW0rd<<<001122
Le séparateur par défaut
:
sera toujours supporté - même si vous en définissez un personnalisé. Cela permet de prendre en charge les deux méthodes.
ansible-galaxy install ansibleguy.infra_openvpn