jenkins 管道中的此模块需要 boto3 和 botocore
boto3 and botocore are required for this module in jenkins pipeline
我正在尝试通过 jenkins groovy 脚本 运行 ansible 剧本,但不断收到错误: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
点:
which pip
/home/john/.local/bin/pip
博托:
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
我还错过了什么配置?
经过几天的努力,终于使用以下步骤解决了我的问题:
为 python、boto 和 ansible 创建了虚拟环境
编辑 ansible 清单文件以将解释器指向 python 而不是 /usr/bin/python
sudo pip install virtualenv
sudo pip 安装 boto botocore
来源 ansible_vEnv/bin/activate
在ansible inventory中设置如下:
[localhost]
localhost ansible_python_interpreter=python
- 将 playbook 命令指定为
ansible-playbook -c local dir/test.yaml
注意:确保在 yaml 文件中使用 boto
而不是 boto3:
- hosts: localhost
gather_facts: no
tasks:
- name:
pip:
name: boto // here
state: present
将解释器指向 python
实际上会从我们的隔离环境中获取 python,即我们在步骤 2 中创建的虚拟环境。
此外,我确实以 root 身份安装了 ansible,使用:
sudo su -
- 卸载了使用
apt-get
安装的现有 ansible
- 使用
pip install ansible
安装ansible
- 在全局工具配置中将 Jenkins 中的路径设置为
/usr/bin
for ansible plugin
我正在尝试通过 jenkins groovy 脚本 运行 ansible 剧本,但不断收到错误: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
点:
which pip
/home/john/.local/bin/pip
博托:
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
我还错过了什么配置?
经过几天的努力,终于使用以下步骤解决了我的问题:
为 python、boto 和 ansible 创建了虚拟环境
编辑 ansible 清单文件以将解释器指向 python 而不是
/usr/bin/python
sudo pip install virtualenv sudo pip 安装 boto botocore 来源 ansible_vEnv/bin/activate
在ansible inventory中设置如下:
[localhost]
localhost ansible_python_interpreter=python
- 将 playbook 命令指定为
ansible-playbook -c local dir/test.yaml
注意:确保在 yaml 文件中使用 boto
而不是 boto3:
- hosts: localhost
gather_facts: no
tasks:
- name:
pip:
name: boto // here
state: present
将解释器指向 python
实际上会从我们的隔离环境中获取 python,即我们在步骤 2 中创建的虚拟环境。
此外,我确实以 root 身份安装了 ansible,使用:
sudo su -
- 卸载了使用
apt-get
安装的现有 ansible
- 使用
pip install ansible
安装ansible
- 在全局工具配置中将 Jenkins 中的路径设置为
/usr/bin
for ansible plugin