Ansible aws_secret插件报缺少boto3/botocore但已pip安装排查
根因分析
Ansible 所有 lookup 类插件默认在执行ansible-playbook命令的控制节点(即你的Jenkins节点) 上运行,不会在你指定的远程目标主机执行。你此前的依赖安装、环境检查任务都由Ansible下发到远程Ubuntu主机执行,只能验证远程主机的依赖状态,无法感知控制节点的依赖情况。而Jenkins控制节点的Ansible运行环境未安装boto3、botocore,因此触发依赖缺失报错。
解决方案
场景1:允许Jenkins控制节点访问AWS密钥
直接在Jenkins运行Ansible的Python环境中安装对应依赖即可:
# 切换到Jenkins运行Ansible的对应环境后执行 pip3 install boto3 botocore>=1.10.0
场景2:仅允许远程目标主机访问AWS密钥
修改lookup逻辑,指定其在远程目标主机上执行,使用你已经装好依赖的远程Python环境,将.env文件中的变量定义修改为:
TEST_VAR={{ lookup('aws_secret', 'test-secret', delegate_to=inventory_hostname) }}
如果仍有路径识别问题,可额外指定远程Python解释器路径:
TEST_VAR={{ lookup('aws_secret', 'test-secret', delegate_to=inventory_hostname, ansible_python_interpreter='/usr/bin/python3') }}
内容的提问来源于stack exchange,提问作者Employee
相关产品推荐
相关产品推荐

