2016-08-04 3 views
3

Я настроил все в соответствии с этой статьейAWS код развертывания + Bitbucket = Ошибка (код ошибки HEALTH_CONSTRAINTS)

https://aws.amazon.com/tw/blogs/apn/announcing-atlassian-bitbucket-support-for-aws-codedeploy/

Вот мой окр:

Instance (свободный уровень с амазонка линукс)
- апач 2,4 установлен

группа безопасности
- только 22 (только мой IP доступ) и 80 портов открыты

Iptables остановил

2 роли устанавливаются
- один для соединения S3 < -> Bitbucket (прилагается заказ политика)
- одна роль для группы развертывания (прилагается политики AWSCodeDeployRole)

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Sid": "", 
     "Effect": "Allow", 
     "Principal": { 
     "Service": "codedeploy.amazonaws.com" 
     }, 
     "Action": "sts:AssumeRole" 
    } 
    ] 
} 

Сценарий попытался развернуть это
https://s3.amazonaws.com/aws-codedeploy-us-east-1/samples/latest/SampleApp_Linux.zip

Разрешение /вар/WWW/* принадлежит ec2 пользователю с 755 разрешения

Агент служба статус codedeploy-агент = Агент AWS CodeDeploy работает как PID 7200

Ключи: В моем блоке s3 загружается файл zip для каждого развертывания.

Код ошибки: HEALTH_CONSTRAINTS

Любое имеет представление о том, каковы причины развертывания потерпеть неудачу?

update1 После повторного запуска экземпляра с профилем iam приложение может быть развернуто. Но это все еще не удалось, когда я нажимаю просматривать события, есть журнал следующим образом:

Error CodeScriptFailed 
Script Namescripts/install_dependencies 
MessageScript at specified location: scripts/install_dependencies run as user root failed with exit code 1 
Log TailLifecycleEvent - BeforeInstall 
Script - scripts/install_dependencies 
[stdout]Loaded plugins: priorities, update-motd, upgrade-helper 
[stdout]Resolving Dependencies 
[stdout]--> Running transaction check 
[stdout]---> Package httpd.x86_64 0:2.2.31-1.8.amzn1 will be installed 
[stdout]--> Processing Dependency: httpd-tools = 2.2.31-1.8.amzn1 for package: httpd-2.2.31-1.8.amzn1.x86_64 
[stdout]--> Processing Dependency: apr-util-ldap for package: httpd-2.2.31-1.8.amzn1.x86_64 
[stdout]--> Running transaction check 
[stdout]---> Package apr-util-ldap.x86_64 0:1.4.1-4.17.amzn1 will be installed 
[stdout]---> Package httpd-tools.x86_64 0:2.2.31-1.8.amzn1 will be installed 
[stdout]--> Processing Conflict: httpd24-2.4.23-1.66.amzn1.x86_64 conflicts httpd < 2.4.23 
[stdout]--> Processing Conflict: httpd24-tools-2.4.23-1.66.amzn1.x86_64 conflicts httpd-tools < 2.4.23 
[stdout]--> Finished Dependency Resolution 
[stderr]Error: httpd24-tools conflicts with httpd-tools-2.2.31-1.8.amzn1.x86_64 
[stderr]Error: httpd24 conflicts with httpd-2.2.31-1.8.amzn1.x86_64 
[stdout] You could try using --skip-broken to work around the problem 
[stdout] You could try running: rpm -Va --nofiles --nodigest 

Любой, что это проблема?

ответ

0

Это зависит от конфигурации развертывания, но в основном 1 или более развертываний не удалось.

HEALTH_CONSTRAINTS: Развертывание не удалось слишком много примеров, чтобы быть успешно развернут в рамках ограничений здоровья экземпляра указано

http://docs.aws.amazon.com/codedeploy/latest/APIReference/API_ErrorInformation.html

Проверьте deployment configuration settings. Общий отказ/успех развертывания основывается на этих настройках. Попробуйте CodeDeployDefault.AllAtOnce, и наберите номер по необходимости.

Кроме того, двойная проверка AWS CodeDeploy Instance Health настройки, особенно minimum-healthy-hosts

2

Кодовые HEALTH_CONSTRAINTS ошибка означает, что несколько экземпляров неудачные, чем ожидалось, которая определяется конфигурацией развертывания.

Для получения дополнительных сведений о том, почему развертывание не удалось, на консоли развертывания https://region.console.aws.amazon.com/codedeploy/home?region=region#/deployments вы можете нажать на неудавшийся идентификатор развертывания, а затем перенаправить на страницу сведений о развертывании, которая содержит все экземпляры, включенные в указанное развертывание, и каждая строка содержит событие жизненного цикла экземпляра. Затем нажмите на ViewEvents, а затем, если есть ссылка «Просмотр журналов», вы можете увидеть причину, по которой не удалось выполнить развертывание этого экземпляра.

Если на консоли недостаточно информации о том, что вам нужно, то журнал экземпляра может быть найден с меньшей /var/log/aws/codedeploy-agent/codedeploy-agent.log. Он содержит журналы для самых последних развертываний.

+0

я нашел ошибку в журнале: InstanceAgent :: Плагины :: CodeDeployPlugin :: CommandPoller: Отсутствующие учетные данные - пожалуйста, проверьте, если этот экземпляр был запущен с IAM профилем экземпляра – hkguile

+0

Это было бы сделать это также. Ни одно из ваших развертываний не удалось, так как у вас нет разрешений на их развертывание ... все они потерпели неудачу. –

0

Похоже, что существует конфликт между одной из зависимостей, которые вы просили установить в файле appspec.yaml и вашей службе httpd24-tools.

[stderr]Error: httpd24-tools conflicts with httpd-tools-2.2.31-1.8.amzn1.x86_64 
[stderr]Error: httpd24 conflicts with httpd-2.2.31-1.8.amzn1.x86_64 
[stdout] You could try using --skip-broken to work around the problem 

Так что попробуйте решить проблему установки зависимостей. Вы можете попытаться установить зависимости вручную на своем ec2 и найти решение для этого конфликта, и когда вы его решите, вы принесите решение в файл appspec.yaml и установите зависимости с помощью развертывания кода.

1

Это происходит потому, что codeDeploy проверяет работоспособность экземпляров ec2, удаляя экземпляры. Перед развертыванием вам нужно запустить скрипт bash в экземплярах и проверить, работает ли скрипт. Служба httpd должна быть запущена. Перезагрузите экземпляр.

#!/bin/bash 
    sudo su 
    yum update -y 
    yum install httpd -y 
    yum install ruby 
    yum install aws-cli 
    cd ~ 
    aws s3 cp s3://aws-codedeploy-us-east-1/latest/install . --region us-east-1 
    chmod +x ./install 
    ./install auto 
    echo 'hello world' > /var/www/html/index.html 
    hostname >> /var/www/html/index.html 
    chkconfig httpd on 
    service httpd start