Как подключить мой экземпляр codebuild к экземпляру aws EC2 для развертывания capistrano - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь использовать 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'
...