1 votes

Échec du module de désarchivage d'Ansible : "Impossible de valider le certificat SSL"

Récemment, j'ai modifié la façon dont l'environnement Python sur les machines clientes, configuré à l'aide d'Ansible, est configuré.

Cela a impliqué de minimiser le nombre de paquets installés et configurés dans l'installation du système Python (sur les clients Ubuntu 14.04), afin d'éviter le potentiel de conflits de bibliothèques lorsque les machines clientes sont ensuite utilisées pour des activités de développement.

Depuis que j'ai effectué ce changement, j'ai des problèmes avec le programme unarchive Module Ansible ne validant pas les certificats SSL si le remote_src est utilisé en conjonction avec une URL HTTPS.

Voici un exemple d'une commande qui a échoué :

- name: Get and untar opus-1.1.2
  unarchive:
    src="http://downloads.xiph.org/releases/opus/opus-1.1.2.tar.gz"
    dest="/opt/library-sources"
    remote_src=yes

Lorsqu'elle est exécutée, la commande ci-dessus échoue avec le message d'erreur suivant :

fatal: [10.0.0.90]: FAILED! => {"changed": false, "failed": true, "msg": "Failed to validate the SSL certificate for downloads.xiph.org:443. Make sure your managed systems have a valid CA certificate installed. If the website serving the url uses SNI you need python >= 2.7.9 on your managed machine or you can install the `urllib3`, `pyopenssl`, `ndg-httpsclient`, and `pyasn1` python modules to perform SNI verification in python >= 2.6. You can use validate_certs=False if you do not need to confirm the servers identity but this is unsafe and not recommended. Paths checked for this platform: /etc/ssl/certs, /etc/pki/ca-trust/extracted/pem, /etc/pki/tls/certs, /usr/share/ca-certificates/cacert.org, /etc/ansible"}

Si j'ai bien compris, cette erreur est due au fait qu'il manque des bibliothèques Python que l'utilisateur doit utiliser. unarchive dépend de.

Ce que je n'ai pas réussi à comprendre dans la documentation Ansible, c'est si ces paquets sont des exigences de l'environnement Python sur la machine serveur (chargée d'exécuter les scripts Ansible) et ou les machines clientes (sur lesquelles les tâches détaillées dans les scripts Ansible sont exécutées).

Il convient de noter que j'ai installé Ansible sur la machine serveur (qui fonctionne également sous Ubuntu 14.04), via pip qui a également installé les versions suivantes des paquets mentionnés dans le message d'erreur :

urllib3==1.7.1
ndg-httpsclient==0.4.3
pyasn1==0.4.2
pyOpenSSL==0.13

Cela m'amène à penser que ces paquets sont probablement nécessaires sur la machine cliente ainsi que sur le serveur.

Quelqu'un sait-il sur quelles machines (serveur et ou client) ces paquets sont nécessaires ? Je serais également intéressé de savoir où cela est documenté car cela peut soulever des problèmes ailleurs dans mes scripts Ansible.

2voto

Michael Hampton Points 232226

Vous devez savoir que unarchive a lieu sur le serveur qu'ansible gère, et non sur la machine sur laquelle vous l'exécutez. remote_src=yes et le src est une URL.

Vous devez également savoir que la visite de http://downloads.xiph.org/ redirige vers https://downloads.xiph.org/ qui est un site web sécurisé, qui redirige ensuite vers https://ftp.osuosl.org/pub/xiph/ si vous arrivez à aller jusque là.

En tant que tel, la validation du certificat SSL a lieu sur ce serveur, et le logiciel et les certificats CA nécessaires pour effectuer cette validation doivent se trouver sur ce serveur. De plus, il doit s'agir de paquets système, et non de paquets que vous avez installés vous-même à l'aide du logiciel pip . Vous devez vous assurer que l'installation de ces prérequis figure parmi les premières tâches de provisionnement que vous exécutez.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X