Я столкнулся с требованием установить инструменты 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
) последнюю операционную систему.
- https://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c9-py2.6.egg
- https://files.pythonhosted.org/packages/fc/c0/479f874340f2173e4d8afe411e1a804c635b520fa1847c4c0d03eacff11c/virtualenv-1.3.4-py2.6.egg
Как только пакеты станут доступны в системе, выполните приведенные ниже команды.
# 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 в старой и устаревшей системе.