LoginSignup
2
2

More than 3 years have passed since last update.

CircleCIでEC2デプロイ時にエラー

Posted at

はじめに

個人アプリにてCircleCIを導入し、
EC2にデプロイしようとした所、いくつかエラーが発生したので、解決策を記載します。

環境

  • ruby 2.6.2
  • rails 5.2.4
  • EC2

config.yml

version: 2

jobs:
    # build ジョブ: CircleCI 上で Docker コンテナを作成してテストする
    build:
        docker:
            - image: alpine
        steps:
            - checkout
            - run:
                name: Echo Test
                command: echo "CircleCI Test"
    # deploy ジョブ: EC2 に SSH 接続して、デプロイを実行する
    deploy:
        machine:
            image: circleci/classic:edge
        steps:
            - checkout
            # CircleCI に登録した秘密鍵を呼び出す
            - add_ssh_keys:
            # CircleCI に登録した環境変数を使って SSH
            - run: ssh ${USER_NAME}@${HOST_NAME} 'cd /var/www/myapp && git pull origin master'

workflows:
    version: 2
    # build_and_deploy ジョブ: 一番最初に呼ばれるジョブ
    build_and_deploy:
        # build ジョブと deploy ジョブを呼び出す
        jobs:
            - build
            - deploy:
                requires:
                    # deploy ジョブより先に build ジョブを実行しろ!
                    - build
                # master ブランチに push された場合のみ deploy ジョブを実行する
                filters:
                    branches:
                        only: master

起こった問題と解決策

①ポートが開いてないことによるエラー

ssh: connect to host ************* port 22: Connection timed out

【解決策】
EC2のセキリティグループのインバウンドを下記のように編集する。
注)セキリティ上、中間サーバーを使用するほうが好ましい

ポート範囲 ソース   
22 マイIP  xxx.xxx〜

       ↓

ポート範囲 ソース   
22 カスタム 0.0.0.0/0

②秘密鍵が合わないことによるエラー

①EC2にて下記のコマンドを実行し、pem鍵を作成(他の鍵と競合する可能性がある為、circleci-keyなどの名前にする)

ssh-keygen -m pem

②EC2にて下記のコマンドを実行し、①で作成した公開鍵(鍵名.pub)をauthorized_keysにコピー

cat ~/.ssh/circleci-key.pub >> authorized_keys

③EC2にて下記のコマンドを実行し、①で作成した秘密鍵を表示

cat ~/.ssh/circleci-key

④表示された秘密鍵をCircleCIのSSH-Keyに設定
(このとき-----BEGIN RSA PRIVATE KEY-----と-----END RSA PRIVATE KEY-----まで含める)

 最後に

私の場合、これでエラーが解消されましたので、
是非ためしてみてください。

 参考

CircleCIの使い方

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2