チュートリアル: Jenkins でオートメーションを使用する - AWS Systems Manager

チュートリアル: Jenkins でオートメーションを使用する

CI/CD のパイプラインで Jenkins ソフトウェアを使用する組織では、自動化をビルド後のステップとして追加して、アプリケーションリリースを Amazon マシンイメージ (AMI) に事前インストールできます。Jenkins のスケジューリング機能を使用して、自動化を呼び出し、独自のオペレーティングシステム (OS) への定期的なパッチ適用を作成することもできます。

次の例は、オンプレミスまたは Amazon EC2 のいずれかで実行している Jenkins サーバーから自動化を呼び出す方法を示しています。認証するために、Jenkins サーバーは、この例で作成した AWS Identity and Access Management (IAM) ユーザーに基づく AWS 認証情報を使用します。Jenkins サーバーが Amazon EC2 で実行されている場合、IAM インスタンスプロファイルのロールを使用して認証することもできます。

注記

インスタンスを設定するときは、Jenkins のセキュリティについてのベストプラクティスに従ってください。

開始する前に

Jenkins を使用して自動化を設定する前に、次のタスクを完了します。

  • チュートリアル: オートメーション、AWS Lambda、および パラメータストア を使用した AMI パッチ適用の簡素化 の例を完了します。次の例では、この例で作成された UpdateMyLatestWindowsAmi の Automation ドキュメントを使用します。

  • 自動化の IAM ロールを設定します。Systems Manager には、自動化ワークフローを処理するためのインスタンスプロファイルのロールおよびサービスロールの ARN が必要です。詳細については、「オートメーションの設定」を参照してください。

  • 自動化の IAM ロールを設定した後、Jenkins サーバーの IAM ユーザーアカウントを作成するために、次の手順を使用します。自動化ワークフローでは、IAM ユーザーアカウントのアクセスキーおよびシークレットキーを使用して、実行中に Jenkins サーバーを認証します。

Jenkins サーバーのユーザーアカウントを作成するには

  1. AWS マネジメントコンソール にサインインし、IAM コンソール(https://console.aws.amazon.com/iam/)を開きます。

  2. ナビゲーションペインで、[Policies (ポリシー)] を選択し、次に [Create policy (ポリシーの作成)] を選択します。

  3. [JSON] タブを選択します。

  4. デフォルトコンテンツを以下のものと置き換えます。us-west-2 および 123456789012 を、使用するリージョンとアカウントに置き換えてください。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ssm:StartAutomationExecution", "Resource": [ "arn:aws:ssm:us-west-2:123456789012:document/UpdateMyLatestWindowsAmi", "arn:aws:ssm:us-west-2:123456789012:automation-definition/UpdateMyLatestWindowsAmi:$DEFAULT" ] } ] }
  5. [ポリシーの確認] を選択します。

  6. [Review policy (ポリシーの確認)] ページで、[Name (名前)] にインラインポリシーの名前を入力します (JenkinsPolicy など)。

  7. [Create policy] を選択します。

  8. ナビゲーションペインで [Users] を選択します。

  9. [Add user] を選択します。

  10. [Set user details] セクションで、ユーザー名を指定します (たとえば、Jenkins)。

  11. [Select AWS access type] セクションで、[Programmatic Access] を選択します。

  12. [Next: Permissions] を選択します。

  13. [Set permissions for] セクションで、[Attach existing policies directly] を選択します。

  14. フィルターフィールドに、先に作成したポリシーの名前を入力します。

  15. ポリシーの横にあるチェックボックスをオンにして、[Next: Tags (次の手順: タグ)] を選択します。

  16. (オプション) 1 つ以上のタグ/値ペアを追加して、このユーザーのアクセスを整理、追跡、または制御し、[次へ: 確認] を選択します。

  17. 詳細を確認し、[Create] を選択します。

  18. アクセスキーおよびシークレットキーをテキストファイルにコピーします。次の手順でこれらの認証情報を指定します。

Jenkins サーバーで AWS CLI を設定するには、次の手順を使用します。

自動化用に Jenkins サーバーを設定するには

  1. 管理インターフェイスにアクセスするには、ご使用のブラウザを使用してポート 8080 で Jenkins サーバーに接続します。

  2. /var/lib/jenkins/secrets/initialAdminPassword で見つかったパスワードを入力します。パスワードを表示するには、次のコマンドを実行します。

    sudo cat /var/lib/jenkins/secrets/initialAdminPassword
  3. Jenkins インストールスクリプトでは、[Customize Jenkins (Jenkins のカスタマイズ)] ページが表示されます。[Install suggested plugins (推奨プラグインをインストール)] を選択します。

  4. インストールが完了したら、[Administrator Credentials (管理者認証情報)] を選択し、[Save Credentials (認証情報の保存)] を選択してから、[Start Using Jenkins (Jenkins の使用を開始)] を選択します。

  5. 左側のナビゲーションペインで、[Manage Jenkins (Jenkins の管理)] を選択し、[Manage Plugins (プラグインの管理)] を選択します。

  6. [Available (使用可能)] タブを選択し、Amazon EC2 plugin と入力します。

  7. Amazon EC2 plugin のチェックボックスをオンにし、[Install without restart (再起動せずにインストール)] を選択します。

  8. インストールが完了したら、[Go back to the top page (トップページに戻る)]を選択します。

  9. [Manage Jenkins (Jenkins の管理)] を選択し、[Configure System (システムの構成)] を選択します。

  10. [Cloud (クラウド)] セクションで [Add a new cloud (新しいクラウドを追加)] を選択し、[Amazon EC2] を選択します。

  11. 残りのフィールドに情報を入力します。[Add Credentials (認証情報の追加)] フィールドに AWS 認証情報を入力する必要があります。

自動化を呼び出すように Jenkins プロジェクトを設定するには、次の手順を使用します。

自動化を呼び出すように Jenkins サーバー を設定するには

  1. ウェブブラウザで Jenkins コンソールを開きます。

  2. Automation を使用して設定するプロジェクトを選択し、[Configure] を選択します。

  3. [Build] タブで、[Add Build Step] を選択します。

  4. [Execute shell] または [Execute Windows batch command] (オペレーティングシステムによって異なります) を選択します。

  5. [Command (コマンド)] ボックスで、以下のような AWS CLI コマンドを実行します。

    aws --region the AWS Region of your source AMI ssm start-automation-execution --document-name your document name --parameters parameters for the document

    以下のサンプルコマンドは、UpdateMyLatestWindowsAmi ドキュメントや、チュートリアル: オートメーション、AWS Lambda、および パラメータストア を使用した AMI パッチ適用の簡素化 で作成された Systems Manager パラメータ latestAmi を使用しています。

    aws --region region-id ssm start-automation-execution \ --document-name UpdateMyLatestWindowsAmi \ --parameters \ "sourceAMIid='{{ssm:latestAmi}}'"

    Jenkins では、コマンドは次のスクリーンショットの例のようになります。

    
                            Jenkins 情報
  6. Jenkins のプロジェクトでは、[Build Now] を選択します。Jenkins が次の例のような出力を返します。

    
                            Jenkins 情報