Я пытаюсь использовать codebuild buildspec.yml для развертывания в экземпляре Ubuntu aws EC2 с использованием capistrano.Сборка работает нормально, пока я не попытаюсь ограничить этап развертывания: проверьте.Сбой Codebuild из-за плохого соединения ssh с экземпляром EC2.Точная ошибка, которую я получаю:
ubuntu@EC2_IP_ADDRESS's password: stty: standard input: Inappropriate ioctl for device
stty: standard input: Inappropriate ioctl for device
stty: standard input: Inappropriate ioctl for device
Я предоставил роли службы сборки полный доступ к ec2.Я попытался дать экземпляру codebuild id_rsa.pub из экземпляра ec2, который я использую для ssh в экземпляре ec2.Я попытался поместить ключ в переменную окружения, используя KMS.Все безрезультатно, я начинаю думать, что это невозможно, и причина, по которой я использую capistrano, заключается в том, что я унаследовал проект от третьей стороны и теперь должен его поддерживать.
buildspec.yml
version: 0.2
phases:
install:
commands:
- echo Begin install phase
- sudo apt-get update
- sudo apt-get install -y software-properties-common
- sudo apt-add-repository ppa:brightbox/ruby-ng
- sudo apt-get update
- sudo apt-get install -y git ruby2.3 ruby2.3-dev python-pip libmysqlclient-dev libmagickwand-dev libsqlite3-dev build-essential zlib1g-dev liblzma-dev libxslt-dev libssl-dev libreadline-dev libyaml-dev libxml2-dev libxslt1-dev libffi-dev
- sudo pip install awscli
- sed -i 's/2.3.3/2.3.8/' Gemfile
- sed -i.bak "/gem ['\"]growl_notify\|autotest-fsevent\|rb-appscript\|rb-fsevent['\"].*, *$/ N; s/\n *//g; /gem ['\"]growl_notify\|autotest-fsevent\|rb-appscript\|rb-fsevent['\"]/ d" Gemfile
- sudo gem install bundler
build:
commands:
- echo Run Build
- mkdir vendor/bundle
- bundle install --path vendor/bundle
- bundle exec cap staging deploy:setup -- trace
cache:
paths:
- 'vendor/bundle'
- '~/.bundle'
staging.rb
server 'EC2_IP_ADDRESS', user: 'ubuntu', roles: %w(app db web)
set :branch, 'staging'
set :deploy_to, '/var/www/staging'
set :rails_env, 'staging'