開発者は、変更をコミットするたびにオンプレミスの GitHub インスタンスから自動化クラウド テンプレートを取得するパイプラインを必要とします。このパイプラインは、WordPress アプリケーションを Amazon Web Services (AWS) EC2 またはデータセンターに展開するために必要です。 Code Stream は、パイプラインからクラウド テンプレートを呼び出し、アプリケーションの展開用にそのクラウド テンプレートの継続的インテグレーションおよび継続的デリバリ (CICD) を自動化します。

パイプラインを作成してトリガするには、VMware クラウド テンプレートが必要です。

Code Stream クラウド テンプレート タスクの [クラウド テンプレート ソース] で、次のいずれかを選択します。

  • ソース制御としての [Cloud Assembly テンプレート]。この場合、GitLab または GitHub リポジトリは必要ありません。
  • ソース制御に GitLab または GitHub を使用している場合、[ソース制御]。この場合は Git Webhook が必要であり、Webhook を介してパイプラインをトリガーする必要があります。

GitHub リポジトリに YAML クラウド テンプレートがあり、パイプラインでそのクラウド テンプレートを使用する場合は、次の操作を実行します。

  1. Cloud Assembly で、クラウド テンプレートを GitHub リポジトリにプッシュします。
  2. Code Stream で、Git エンドポイントを作成します。次に、この Git エンドポイントとパイプラインを使用する Git Webhook を作成します。
  3. パイプラインをトリガーするには、GitHub リポジトリ内のファイルを更新し、変更をコミットします。

GitHub リポジトリに YAML クラウド テンプレートがなく、ソース制御のクラウド テンプレートを使用する場合は、この手順を使用してその方法を学習してください。ここでは、WordPress アプリケーション向けにクラウド テンプレートを作成し、オンプレミスの GitHub リポジトリから起動する方法について説明します。YAML クラウド テンプレートに変更を加えると、パイプラインによってアプリケーションのリリースがトリガおよび自動化されます。

  • Cloud Assembly で、クラウド アカウントを追加し、クラウド ゾーンを追加して、クラウド テンプレートを作成します。
  • Code Stream で、クラウド テンプレートをホストするオンプレミスの GitHub リポジトリにエンドポイントを追加します。次に、クラウド テンプレートをパイプラインに追加します。

このユースケースの例では、オンプレミスの GitHub リポジトリにあるクラウド テンプレートを使用する方法を示します。

ワークフローは、YAML クラウド テンプレートから展開するアプリケーションのリリースを自動化するプロセスを進める際に役立ちます。

前提条件

  • vRealize Automation Cloud Assembly インフラストラクチャにクラウド アカウントとクラウド ゾーンを追加します。『vRealize Automation Cloud Assembly のドキュメント』を参照してください。
  • 次の手順でクラウド テンプレートを作成するには、WordPress YAML コードをクリップボードにコピーします。vRealize Automation Cloud Assembly のドキュメントで WordPress 使用事例のクラウド テンプレート YAML コードを参照してください。
  • WordPress アプリケーションの YAML コードを GitHub インスタンスに追加します。
  • YAML コードに変更内容をコミットするたびにパイプラインがその YAML コードをプルできるように、Git トリガ用の Webhook を追加します。 Code Stream で、[トリガ] > [Git] > [Git 用 Webhook] の順にクリックします。
  • クラウド テンプレート タスクを使用するには、Cloud Assembly のいずれかのロールを持っている必要があります。

手順

  1. Cloud Assembly で、次の手順を実行します。
    1. [VMware Cloud Templates] をクリックし、WordPress アプリケーションのクラウド テンプレートと展開を作成します。
    2. クリップボードにコピーしておいた WordPress YAML コードをクラウド テンプレートに貼り付け、それを展開します。
      YAML コードを使用すると、クラウド テンプレートによって展開内にデータベース層、Web 層、およびネットワークが作成されます。
  2. Code Stream で、エンドポイントを作成します。
    1. YAML ファイルが配置されているオンプレミス GitHub リポジトリ用に Git エンドポイントを作成します。
    2. パイプラインの実行時のステータスをユーザーに通知する E メール エンドポイントを追加します。
      E メール エンドポイントを追加するときは、暗号化方法を設定し、送信プロトコルを設定します。
  3. パイプラインを作成し、パイプラインの成否の通知を追加します。
    E メール通知を追加するときは、パイプラインの状態を 1 つ選択し、メール サーバと受信者を選択します。
  4. 開発のステージを追加し、クラウド テンプレート タスクを追加します。
    1. マシンを展開するクラウド テンプレート タスクを追加して、WordPress アプリケーションのクラウド テンプレート YAML を使用するように設定します。
      resources:
        DBTier:    
          type: Cloud.Machine    
          properties:      
              name: mysql      
              image: 'ubuntu-16'      
              flavor: 'small'      
              constraints:        
                  -   tag: zone:dev
        WebTier:
          type: Cloud.Machine    
          properties:     
              name: wordpress      
              image: 'ubuntu-16'      
              flavor: 'small'      
              constraints:        
                  - tag: zone:dev
       WP-Network-Private:
          type: Cloud.Network
          properties:
              name: WP-Network-Private
              networkType: existing
              constraints:
                  - tag: 'type:isolated-net'
                  - tag: 'zone:dev'
    2. マシンを破棄してリソースを解放するクラウド テンプレート タスクを追加します。
  5. 本番用のステージを追加し、承認タスクと展開タスクを含めます。
    1. WordPress アプリケーションを本番にプッシュするための承認を要求するユーザー操作タスクを追加します。
    2. マシンを展開するためのクラウド テンプレート タスクを追加し、そこに WordPress アプリケーションのクラウド テンプレート YAML を設定します。
      [作成] を選択するときは、展開の名前を一意にする必要があります。名前を空白のままにすると、 Code Stream によって一意のランダムな名前が割り当てられます。
      自分のユースケースで [ロールバック] を選択する場合には、次のことを知っておく必要があります。 [ロールバック] アクションを選択し、 [ロールバック バージョン] を入力する場合、バージョンは n-X という形式にする必要があります。たとえば、 n-1n-2n-3 などとします。 Code Stream 以外の場所で展開を作成して更新した場合、ロールバックは許可されます。
      Code Stream にログインすると、30 分間有効なユーザー トークンが取得されます。パイプラインの実行時間が長時間になる場合については、クラウド テンプレート タスクの前のタスクの実行に 30 分以上かかるとユーザー トークンの有効期限が切れます。その結果、クラウド テンプレート タスクは失敗します。
      パイプラインを 30 分以上実行できるようにするには、オプションの API トークンを入力します。 Code Stream がクラウド テンプレートを呼び出すと API トークンが維持され、クラウド テンプレート タスクは引き続きその API トークンを使用します。
      API トークンを変数として使用すると、そのトークンは暗号化されます。それ以外の場合は、プレーン テキストとして使用されます。
      クラウド テンプレート タスクでは、VMware クラウド テンプレートを Cloud Assembly 内で使用するか GitLab リポジトリまたは GitHub リポジトリのソース管理からプルできます。
  6. パイプラインを実行します。

    各タスクが正常に完了したことを確認するには、実行中のタスクをクリックし、展開の詳細でステータスを確認して、詳細なリソース情報を調べます。

  7. GitHub で、WordPress サーバ インスタンスのフレーバーを small から medium に変更します。
    変更をコミットすると、パイプラインがトリガされます。これにより、更新されたコードが GitHub リポジトリからプルされて、アプリケーションがビルドされます。
    WebTier:
        type: Cloud.Machine    
        properties:     
            name: wordpress      
            image: 'ubuntu-16'      
            flavor: 'medium'      
            constraints:        
                - tag: zone:dev
  8. このパイプラインを再度実行します。パイプラインが正常に完了したことと、WordPress インスタンスのフレーバーが small から medium に変更されたことを確認します。

結果

完了です。YAML クラウド テンプレートから展開したアプリケーションのリリースが自動化されました。

次のタスク

Code Stream の使用方法の詳細については、Code Stream を使用するためのチュートリアルを参照してください。

この他の参考情報については、Code Stream 管理者および開発者向けのその他のリソースを参照してください。