Экземпляр, запущенный из пользовательского AMI, не запускается при установке модулей Python с использованием Python 3.7. - PullRequest
2 голосов
/ 09 июля 2019

Я создаю пользовательский Ubuntu AMI с помощью Packer, а затем использую его для запуска экземпляра EC2, на котором затем развернуто приложение, использующее CodeDeploy.

В этом случае мне нужно использовать Python3.7поскольку я использую некоторые функции datetime, которые не поддерживаются в 3.6 - версия Python3 по умолчанию для Ubuntu - это Python3.6.8

Проблема, с которой я столкнулся, заключается в том, что при установке модулей python через pip с использованием python3.7 запускаетсяпользовательский AMI не работает, он никогда не достигает здорового состояния.Когда я устанавливаю те же модули через python3 по умолчанию, проблем не возникает.

Пакеты устанавливаются с помощью сценария, как показано ниже при сборке упаковщика:

#!/bin/bash

# wait for cloud-init to finish - other wise apt install can fail
while [ ! -f /var/lib/cloud/instance/boot-finished ]; do
   echo 'Waiting for cloud-init...'
   sleep 1
done

# Install apt packages
sudo apt-get update -y
for package in unzip jq python3.7 python3-pip ruby wget mysql-client-5.7
do
    sudo apt-get install -y $package
done

# Install python packages
sudo python3.7 -m pip install --upgrade pip --no-cache-dir
sudo python3.7 -m pip install --upgrade awscli --no-cache-dir
sudo python3.7 -m pip install --upgrade boto3 --no-cache-dir
sudo python3.7 -m pip install -r /tmp/requirements.txt --no-cache-dir

# Install and start codedeploy agent
wget https://aws-codedeploy-eu-central-1.s3.amazonaws.com/latest/install
chmod +x ./install
sudo ./install auto
sudo service codedeploy-agent start
sudo service codedeploy-agent status

Приведенный выше код работает, но пользовательский AMIне достигнет исправного состояния.

Приведенный ниже код работает И пользовательский AMI запускается без проблем:

#!/bin/bash

# wait for cloud-init to finish - other wise apt install can fail
while [ ! -f /var/lib/cloud/instance/boot-finished ]; do
   echo 'Waiting for cloud-init...'
   sleep 1
done

# Install apt packages
sudo apt-get update -y
for package in unzip jq python3.7 python3-pip ruby wget mysql-client-5.7
do
    sudo apt-get install -y $package
done

# Install python packages
sudo pip3 install --upgrade pip --no-cache-dir
sudo pip3 install --upgrade awscli --no-cache-dir
sudo pip3 install --upgrade boto3 --no-cache-dir
sudo pip3 install -r /tmp/requirements.txt --no-cache-dir

# Install and start codedeploy agent
wget https://aws-codedeploy-eu-central-1.s3.amazonaws.com/latest/install
chmod +x ./install
sudo ./install auto
sudo service codedeploy-agent start
sudo service codedeploy-agent status

Есть идеи, что может вызвать сбой экземпляра?Единственное отличие состоит в том, как установлены модули python.

Правка - команды были протестированы локально, без видимых проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...