You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

运行Ansible Molecule测试时遭遇SSL证书验证错误及Python版本配置问题求助

Ansible Molecule SSL验证错误及Python版本配置问题解决

一、SSL证书验证失败错误的解决办法

从你提供的错误日志可以看到,核心问题是Ansible Galaxy的API请求触发了SSL验证失败:

ERROR! Unknown error when attempting to call Galaxy at 'https://galaxy.ansible.com/api/': <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:618)>

以下是几种可行的解决思路:

1. 临时禁用SSL验证(测试环境可用,不推荐生产)

你可以在执行ansible-galaxy命令时添加--ignore-certs参数跳过验证:

ansible-galaxy collection install -v --force --ignore-certs community.docker:>=1.9.1

或者在/etc/ansible/ansible.cfg[galaxy]段添加配置永久禁用:

[galaxy]
verify_ssl = False

2. 安装信任的CA证书(推荐生产环境)

如果是因为系统未信任Galaxy的SSL证书(或企业代理的证书),可以手动导入证书:

  • 下载Galaxy的根CA证书,或获取你的网络代理提供的证书文件(比如galaxy-ca.crt
  • 将证书放到系统CA信任目录(以RHEL/CentOS为例):
    cp galaxy-ca.crt /etc/pki/ca-trust/source/anchors/
    update-ca-trust extract
    
  • 或者直接在ansible.cfg里指定CA证书路径:
    [galaxy]
    ca_cert = /path/to/your/galaxy-ca.crt
    

3. 排查网络代理配置

如果你通过代理访问Galaxy,需要确保代理的证书已被系统信任,同时在ansible.cfg中配置代理参数:

[galaxy]
http_proxy = http://your-proxy:port
https_proxy = https://your-proxy:port

二、Ansible与Molecule的Python版本不一致配置调整

你的环境中Ansible 2.9默认绑定Python2.7,而Molecule 3.6.1使用Python3.6,这是因为Ansible 2.9对Python2的兼容性较好,但Molecule从3.x版本开始要求Python3。可以通过以下方式统一或调整配置:

1. 修改Ansible的默认Python解释器

/etc/ansible/ansible.cfg[defaults]段添加配置,让Ansible优先使用Python3:

[defaults]
# 自动检测目标主机的Python解释器(推荐)
interpreter_python = auto_silent
# 或者直接指定本地Python3路径
# interpreter_python = /usr/bin/python3

也可以在playbook中针对特定主机单独设置:

- hosts: all
  vars:
    ansible_python_interpreter: /usr/bin/python3

2. 使用虚拟环境统一环境(最佳实践)

创建一个Python3虚拟环境,同时安装Ansible和Molecule,确保两者使用同一Python版本:

# 创建虚拟环境
python3 -m venv ansible-molecule-env
# 激活虚拟环境
source ansible-molecule-env/bin/activate
# 安装指定版本的工具
pip install ansible==2.9.27 molecule==3.6.1 molecule-docker

之后所有的Ansible和Molecule命令都在这个虚拟环境中执行,避免版本冲突。


内容的提问来源于stack exchange,提问作者Raghavendra Guttur

火山引擎 最新活动