Я столкнулся с требованием установить инструменты AWS CLI на устаревший производственный сервер RHEL 5.10.

Это может показаться надоедливой задачей, но вскоре я понял, что имею дело с устаревшими исполняемыми файлами OpenSSL, python, wget, curl, git и т. д. Другой очевидной мыслью был контейнер docker или исполняемый файл go, но я также имел дело со старым исполняемым файлом. ядро 2.6.18-363.el5. Это была производственная система, и мне нужно было заставить все работать с минимальным вмешательством.

После некоторого удара головой, это то, что я придумал.

Установите Python 2.6

Для инструментов AWS CLI требуется Python 2.6.5 (или выше), а для RHEL 5.10 — Python 2.4.3.

  • Установите EPEL Repo и обновите кеш
# curl -LO https://dl.fedoraproject.org/pub/archive/epel/5/x86_64/epel-release-5-4.noarch.rpm
# rpm -ivh epel-release-5-4.noarch.rpm
# yum repolist
  • Установить Python
# yum -y install python26 python26-devel python26-mod_wsgi python26-pygments

Примечание. Вышеупомянутые пакеты не будут путаться с пакетами, зависящими от старой версии Python, поскольку теперь есть два разных двоичных файла.

# python -c 'import sys; print(sys.version)'
2.4.3 (#1, Oct 23 2012, 22:02:41)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-54)]
# python2.6 -c 'import sys; print(sys.version)'
2.6.8 (unknown, Nov  7 2012, 14:47:45)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-52)

Установите инструменты настройки Python и virtualenv

Помните, что я использую старую версию Linux, в которой бинарные файлы скомпилированы со старой версией SSL и, следовательно, не поддерживают TLS v1.2. Таким образом, мне нужно загрузить яйца python и передать их SCP на машину RHEL.

Мои текущие версии завершились ошибкой ниже для различных команд, таких как curl , wget, git и т. д.

OpenSSL: error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version

Вы можете загрузить файлы python egg в браузере по ссылкам ниже и использовать (curl /wgetи scp) последнюю операционную систему.

Как только пакеты станут доступны в системе, выполните приведенные ниже команды.

# ls -lh *.egg
-rw-r--r-- 1 root root 321K Aug  1 09:07 setuptools-0.6c9-py2.6.egg
-rw-r--r-- 1 root root 382K Aug  1 09:07 virtualenv-1.3.4-py2.6.egg
# PATH=/opt/bin:$PATH sh setuptools-0.6c9-py2.6.egg
# easy_install-2.6 ./virtualenv-1.3.4-py2.6.egg

Создайте и активируйте виртуальную среду Python

Теперь я готов создать виртуальную среду Python для игры, и версия Python по умолчанию — 2.6.8, что делает AWS CLI счастливым.

# virtualenv -p /usr/bin/python2.6 ~/aws
# source ~/aws/bin/activate
(aws)# python --version
Python 2.6.8
(aws)#

Загрузите и установите инструменты командной строки AWS

Вместо установки инструментов AWS CLI с использованием pipили easy_install я решил использовать awscli-bundle, так как он содержит все зависимости и, таким образом, нет необходимости подключаться к Интернету для пакетов и ошибок (с ошибкой SSL).

После того, как вы скопировали zip-файл на сервер, просто запустите приведенные ниже команды, и все готово.

(aws)# unzip awscli-bundle.zip
(aws)# ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws
Running cmd: /root/aws/bin/python virtualenv.py --no-download --python /root/aws/bin/python /usr/local/aws
Running cmd: /usr/local/aws/bin/pip install --no-index --find-links file:///root/awscli-bundle/packages/setup setuptools_scm-1.15.7.tar.gz
Running cmd: /usr/local/aws/bin/pip install --no-index --find-links file:///root/awscli-bundle/packages awscli-1.15.68.tar.gz
You can now run: /usr/local/bin/aws --version
(aws)#
(aws)# aws --version
aws-cli/1.15.68 Python/2.6.8 Linux/2.6.18-363.el5 botocore/1.10.67
(aws)#

Ну вот! У вас установлена ​​последняя версия интерфейса командной строки AWS в старой и устаревшей системе.