jenkins 管道中的该模块需要 boto3 和 botocore

2024-04-11

我正在尝试通过 jenkins groovy 脚本运行 ansible playbook 但不断收到错误:boto3 is required。我已经安装了 boto3:

pip list boto | grep boto
boto3                             1.20.3
botocore                          1.23.3

我的库存为:

[localhost]
localhost ansible_connection=local ansible_python_interpreter=/usr/local/bin/python

Python:

which python
/usr/bin/python

pip:

 which pip
/home/john/.local/bin/pip

boto:

find $HOME/.local -name 'boto3' -type d/home/john/.local/lib/python3.6/site-packages/boto3

版本:

pip --version
pip 21.3.1 from /home/john/.local/lib/python3.6/site-packages/pip (python 3.6)

python --version
Python 3.6.9

Ansible:

which ansible
/usr/bin/ansible

sh 文件中的剧本:

ansible-playbook -c local \
    -e ansible_python_interpreter=$(which python) \
    -i localhost, \
    -e env="'${ENV}'" \
    -e image="'${IMAGE_NAME}'" \
    -e version="'${BUILD_NUMBER}'" \
    infra/test.ansible.yaml

我还错过了什么配置?


最后,经过几天的努力,使用以下步骤解决了我的问题:

  1. 为 python、boto 和 ansible 创建虚拟环境

  2. 编辑 ansible inventory 文件将解释器指向 python 而不是/usr/bin/python

    sudo pip 安装 virtualenv sudo pip 安装 boto botocore 源 ansible_vEnv/bin/activate

在 ansible 库存中设置以下内容:

[localhost]
localhost ansible_python_interpreter=python
  1. 将剧本命令指定为ansible-playbook -c local dir/test.yaml

注意:请确保您使用boto在 yaml 文件中而不是 boto3 中:

- hosts: localhost
  gather_facts: no
  tasks:
  - name:
    pip:
      name: boto // here
      state: present

向口译员指出python实际上会从我们的隔离环境(即我们在步骤 2 中创建的虚拟环境)中获取 python。

另外,我确实使用 root 身份安装了 ansible:

  1. sudo su -
  2. 卸载了使用安装的现有 ansibleapt-get
  3. 使用ansible安装pip install ansible
  4. 将 Jenkins 中的路径设置为/usr/bin全局工具配置中的ansible插件
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jenkins 管道中的该模块需要 boto3 和 botocore 的相关文章

随机推荐