[CS]自動配置(クライアント、サーバ)Day-70


サービスの規模が拡大し、複雑になるにつれて、導入プロセスが複雑になり、時間がかかります.
手動で導入するたびに時間がかかるため、自動化が必要です.
導入の自動化
  • 手動で繰り返される導入プロセスを自動化することで、時間を節約します.
  • 人のミスを防ぐことができます.
  • 自動配置パイプライン(配置プロセス)
  • リソースステータス:バージョン管理ツールを使用してソースコード
  • を管理および転送
  • 構築ステータス:コードコンパイル、ユニットテスト、構築成果物
  • の生成
  • 導入ステータス:変更をリアルタイムで反映します.サービス更新
  • プロセスは、状況および必要に応じてさらに細分化または簡略化することができる.
    AWS開発者ツール
    「開発者ツール」セクションで提供されるサービスを使用して、自動配置パイプラインを構築できます.
    CodeCommit
    バージョン管理ツール.
    CodeBuild
    ユニットテスト、コンパイル、構築などの構築手順で実行する必要があるタスクは、コマンドで実行できます.
    CodeDeploy
    変更をサーバアプリケーションにリアルタイムで転送できます.S 3サービスにより、S 3パケットを介してアップロードされた静的Webサイトに変更をリアルタイムで転送することもできます.
    CodePipeline
    各ステップを接続するパイプラインを構築します.
    クライアント配置パイプラインの構築
    codeBuildサービスを利用するために必要なbuildspec.ymlファイルの作成
    version: 0.2
    
    phases:
      pre_build:
        commands:
          - cd client
          - npm install
      build:
        commands:
          - npm run build
    
    artifacts:
      files:
        - '**/*'
      base-directory: client/build
    最上位ディレクトリにspecを構築します.ymlファイルを作成したら、変更を保存し、コミットしてプッシュします.
    パイプラインの設定
    AWS CodePipelineに接続します.



    ソースベンダーをGitHubリポジトリに接続します.
    ソースステップでGitHub変更が発生した場合、変更はパイプラインに自動的に反映されます.
    GitHubアプリケーションを選択し、「接続」ボタンをクリックします.
    適切なリポジトリ名とプライマリブランチを選択し、CodeBuilderプロジェクトを作成します.ソース・ステップを介して渡されるコードをテストまたは構築し、導入フェーズに渡すために使用します.
    プロジェクト作成でオペレーティングシステムを選択し、イメージバージョンは常に最新バージョンを使用します.
    CloudWatchまたはS 3を使用してログファイルを保存できます.
    (S 3の静的Webホスティング数が多いほど、プロビジョニングが可能となるため、CloudWatchサービスはリソースを分散することができる)
    導入フェーズが構築されると、最終的な成果物が伝達され、反映されます.デプロイメントプロバイダは、S 3を選択する.
    その後、各ステージが成功/失敗したかどうかを確認できます.
    CodePipelineを使用して導入し、成功したときに緑のチェックを検証できます.
    構築ログファイルの確認
    パイプラインの構築と導入の自動化中にエラーが発生する可能性があります.
    デプロイメント履歴を含むログ・ファイルを表示して、エラーを検出し、解決策を求める必要があります.

    「≪構築の生成|Generate Build|emdw≫」をクリックし、「≪失敗した構築実行履歴|Failed Build Run History|emdw≫」をクリックして、構築中の循環フローと具体的なエラーを特定します.
    (エラーまたはキーは、通常、ログ・ファイルの最後に表示されます.)
    CloudWatchでログファイルをチェックする



    正常に動作していることを確認できます.
    ログ・ファイルを表示する習慣は、大きな資産です.練習に時間がかかる.
    じどうはいち
    EC 2 Instanceを作成した後,端末にnvm,npm,nodejsをインストールすることで開発環境を構築する.
    EC 2作成後の開発環境構築プロセス
    sudo apt update
    端末に上記コマンドを入力して、パケットマネージャが管理するパケットの最新情報を更新する
    後でnvm、nodejsをインストールする必要があります.
    正常にインストールされている場合は、nvm--versionコマンドを使用して検証できます.
    nvm install node
    nvmインストール後node,nodeをインストールします.jsインストールが完了するとnpmコマンドが有効になります.
    sudo apt install npm
    EC 2 Instanceにタグと役割を追加
    EC 2 Instanceにタグと役割を追加

    タグを追加するには、[アクション]→[インスタンスを設定]→[タグを管理]の順にクリックします.
    その後、IAMサービスを使用してEC 2 Instanceロールを付与します.
    操作→セキュリティ→IAMロール修正、ロールAWSのオブジェクトが他のサービスにアクセスできるようにします.
    他のAWSサービスを呼び出すには、EC 2 Instanceロールを付与します.
    (AWS IAMサービス)
  • ロール
  • の作成をクリックします.
  • AWSサービスでEC 2を選択し、「権限」ボタン
  • をクリックします.
  • S 3 AmazonS 3 FullAccess
  • が選択されました
  • SSM AmazonSSMFullAccess
  • を選択
  • CodeDeploy AWSCodDeployRole
  • が選択されました
    (オプションの場合はオプション...)
    ロール名を定義し、「ロールの作成」ボタンをクリックします.
    タグ/ロールが作成されている場合は、信頼関係を編集する必要があります.
    信頼関係とは?
    この役割を果たすことができるサービスまたはユーザーの部分を示します.
    アクセスポリシーの付与によってロールが作成されましたが、信頼関係でアクセス可能なサービスを指定することで、ロールは完了しました.
    「≪編集|Edit|emdw≫」で「≪サービス|Services|emdw≫」セクションのロールを設定します.
    作成したロールをEC 2 Instanceに適用します.
    その後、EC 2は、S 3、CodeDeploy、およびSSMサービスにアクセスすることができる.
    保安
    EC 2 Instanceにセキュリティグループがあることを確認します.
    EC 2ダッシュボードからセキュリティグループに移動します.
    「≪セキュリティ|Security|ldap≫」タブをクリックし、セキュリティ・グループにアクセスします.
    セキュリティ・グループのインバウンド・ルールに80ポートと443ポートが含まれていることを確認してください.
    80ポートはサーバの導入に必要であり、443ポートはCodeDeployが正常に動作するために必要です.
    HTTPとHTTPSのタイプを場所に関係のないタイプに追加したら、「ルールの保存」をクリックします.
    保存後、2080443ポートが含まれていることを確認し、EC 2のセキュリティ設定を完了してください.
    EC 2を使用したパイプラインの構築
    リポジトリの上部にあるappspec.ymlファイルを追加します.
    appspec.ymlはCodeDeployによって識別されたファイルであり、導入の自動化を支援します.
    version: 0.0
    os: linux
    files:
      - source: /
        destination: /home/ubuntu/im-sprint-practice-deploy
    
    hooks:
      ApplicationStop:
        - location: scripts/stop.sh
          runas: root
      AfterInstall:
        - location: scripts/initialize.sh
          runas: root
      ApplicationStart:
        - location: scripts/start.sh
          runas: root
    最上位レベルにscriptsディレクトリを作成し、初期化します.sh, start.sh, stop.3つのshファイルを作成します.
    各ファイルはappspecです.ymlファイル構成の導入ライフサイクルに従って実行します.
    ex) scripts/initialize.sh
    #!/bin/bash
    cd /home/ubuntu/im-sprint-practice-deploy/server
    npm install
    npm install pm2@latest -g
    sudo apt-get update
    sudo apt-get install authbind
    sudo touch /etc/authbind/byport/80
    sudo chown ubuntu /etc/authbind/byport/80
    sudo chmod 755 /etc/authbind/byport/80
    ex) scripts/start.sh
    #!/bin/bash
    cd /home/ubuntu/im-sprint-practice-deploy/server
    authbind --deep pm2 start app.js
    ex) scripts/stop.sh
    #!/bin/bash
    cd /home/ubuntu/im-sprint-practice-deploy/server
    pm2 stop app.js 2> /dev/null || true
    pm2 delete app.js 2> /dev/null || true
    変更を保存してコミットし、プライマリ・サーバにプッシュします.
    AWS CodeDeployダッシュボードに移動し、アプリケーションに移動します.
    「アプリケーションの作成」ボタンをクリックし、名前を入力して「EC 2/インスタント」を選択し、アプリケーションを作成します.
    アプリケーションを作成したら、作成したアプリケーションの[分配グループ]タブをクリックし、[分配グループを作成]ボタンをクリックします.
    分散グループの任意の名前を入力し、「サービスロール」「ゼロ」をクリックし、「EC 2 Role」を選択します.
    環境を構成するときは、AWS EC 2 Instanceを選択し、タググループでEC 2 Instanceに設定するタグキーと値を選択します.
    ロード・バランシングを無効にして配置グループの作成を続行すると、AWS CodeDeploy設定は終了します.
    CodePipelineの作成
    AWS CodePipelineを使用して、サーバ配備パイプラインを自動的に構築します.

    ソースベンダーはGitHubバージョン2を使用しています.
    GitHubに接続したら、サブマップの配置を行うレジストリを選択します.
    (ブランチ名はmasterまたはmainに設定することをお勧めします.後でローカル(開発)環境では、ブランチを使用するのはmasterを使用するよりも良いです.)
    サーバコードの場合、プロシージャのコンパイルと構築は必要ありませんので、「ステージの構築」の構築手順をスキップします.
    パイプラインの作成と同時に、ソースコードの配布が自動的に実行されます.
    ターミナルアクセスはEC 2 Instanceでログを表示します.
    'cd /opt/codedeploy-agent/deployment-root/deployment-logs'
    codedeploy-agent-deployments.logという名前のファイルがあり、nanoを使用してファイルを表示できます.
    (stderrは標準error、stdoutは標準出力を表す.)