Отказ модуля Ansible aws_s3 говорит, что Boto3 отсутствует, когда это не так - PullRequest
1 голос
/ 23 марта 2019

Эта игра устанавливает python3, pip3, boto3 и botocore и пытается использовать модуль aws_s3 для загрузки файла:

TASK [run yum update -y using yum module] 
**********************************************************************
ok: [ip-10-200-2-137.us-west-2.compute.internal]

TASK [Install python3 and pip3] *************************************************************************************************
changed: [ip-10-200-2-137.us-west-2.compute.internal]

TASK [Install boto3 and botocore with pip3 module] ******************************************************************************
changed: [ip-10-200-2-137.us-west-2.compute.internal]

TASK [Create a directory if it does not exist using file module] ****************************************************************
changed: [ip-10-200-2-137.us-west-2.compute.internal]

TASK [downlod file from s3 with aws_s3 module] **********************************************************************************
fatal: [ip-10-200-2-137.us-west-2.compute.internal]: FAILED! => 
{"changed": false, "msg": "Python modules \"botocore\" or \"boto3\" 
are missing, please install both"}

Сбой, потому что он говорит, что boto3 отсутствует, но на самом деле это не так:

На целевом хосте вы можете видеть, что boto3 был установлен:

[ec2-user@ip-10-200-2-137 ~]$ pip3 freeze
boto3==1.9.120
botocore==1.12.120
docutils==0.14
jmespath==0.9.4
python-dateutil==2.8.0
s3transfer==0.2.0
six==1.12.0
urllib3==1.24.1
[ec2-user@ip-10-200-2-137 ~]

Это задача, которая установила boto3:

- name: Install boto3 and botocore with pip3 module
    pip:
      name: 
      - boto3
      - botocore
      executable: pip-3.7

Эта задача не выполняется:

- name: downlod file from s3 with aws_s3 module 
    aws_s3:
      bucket: mybucket
      object: mybucket/jre-8u201-linux-x64.tar.gz
      dest: /home/ec2-user/updater/jre-8u201-linux-x64.tar.gz
      mode: get   

На целевом хосте установлены две версии Python:

[ec2-user@ip-10-200-2-157 ~]$ which python
/usr/bin/python
[ec2-user@ip-10-200-2-157 ~]$ which python3
/usr/bin/python3

Мой файл конфигурации выглядит следующим образом:

[defaults]
private_key_file=/home/ec2-user/manual-builds/key.pem
ansible_python_interpreter=/usr/bin/python3

Это ошибка??Я вижу, что подобные вопросы задавались почти год назад, но я не вижу решений - большое спасибо за любую помощь

Ответы [ 2 ]

1 голос
/ 25 марта 2019

Возможное использование / usr / bin / python в качестве интерпретатора Python по умолчанию.И вы устанавливаете библиотеки AWS только для python3:

- name: Install boto3 and botocore with pip3 module
    pip:
      name: 
      - boto3
      - botocore
      executable: pip-3.7

Вы можете установить библиотеки AWS на python2, используя pip, или установить оба (python3 и python2) или вы можете определить: ansible_python_interpreter=/usr/bin/python3 в файле инвентаризации, а затемвы ограничиваете ANSIBLE выполнение только для Python3.

0 голосов
/ 26 марта 2019

Проблема заключалась в том, что в моей пьесе было две задачи, и Ansible использовал интерпретатор python2 для первого и второго.Для выполнения второй задачи требовался интерпретатор python3, поэтому мне пришлось указать его на уровне задачи:

- name: downlod file from s3 with aws_s3 module
  vars:
      ansible_python_interpreter: /usr/bin/python3    
  aws_s3:
      bucket: launch-data
      object: jre-8u201-linux-x64.tar.gz
      dest: /home/ec2-user/updater/jre-8u201-linux-x64.tar.gz
      mode: get 
...