オートメーションと Jenkins を使用した AMIs の更新
CI/CD のパイプラインで Jenkins ソフトウェアを使用する組織では、オートメーションをビルド後のステップとして追加して、アプリケーションリリースを Amazon Machine Images (AMIs) に事前インストールできます。Automation はAWS Systems Manager の一機能です。Jenkins のスケジューリング機能を使用して、オートメーションを呼び出し、独自のオペレーティングシステム (OS) への定期的なパッチ適用を作成することもできます。
以下の例は、オンプレミスまたは Amazon Elastic Compute Cloud (Amazon EC2) のいずれかで実行している Jenkins サーバーからオートメーションを呼び出す方法を示しています。Jenkins サーバーは、認証のために、この例で作成した IAM ポリシーに基づく AWS 認証情報を使用して、インスタンスプロファイルにアタッチします。
注記
インスタンスの設定時は、Jenkins のセキュリティについてのベストプラクティスに従う必要があります。
開始する前に
Jenkins を使用してオートメーションを設定する前に、次のタスクを完了します。
-
Automation、AWS Lambda、Parameter Store を使用してゴールデン AMI を更新する の例を完了します。次の例では、この例で作成された UpdateMyLatestWindowsAmi ランブックを使用します。
-
オートメーションの IAM ロールを設定します。Systems Manager には、オートメーションを処理するためのインスタンスプロファイルのロールおよびサービスロールの ARN が必要です。詳細については、「オートメーションの設定」を参照してください。
Jenkins サーバーで IAM ポリシーを作成するには
AWS Management Console にサインインして、IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
ナビゲーションペインで、[Policies] を選択し、次に [Create policy] を選択します。
-
[JSON] タブを選択します。
-
各
リソースプレースホルダーの例
をユーザー自身の情報に置き換えます。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ssm:StartAutomationExecution", "Resource": [ "arn:aws:ssm:
region
:account ID
:document/UpdateMyLatestWindowsAmi", "arn:aws:ssm:region
:account ID
:automation-definition/UpdateMyLatestWindowsAmi:$DEFAULT" ] } ] } -
[ポリシーの確認] を選択します。
-
[Review policy (ポリシーの確認)] ページで、[Name (名前)] にインラインポリシーの名前を入力します (
JenkinsPolicy
など)。 -
[Create policy] を選択します。
-
ナビゲーションペインで [ロール] を選択します。
-
Jenkins サーバーにアタッチされているインスタンスプロファイルを選択します。
-
[アクセス許可] タブで、[許可の追加]、[ポリシーのアタッチ] の順に選択します。
-
[その他のアクセス許可ポリシー] セクションで、前の手順で作成したポリシー名を入力します。例えば、[JenkinsPolicy] などです。
-
ポリシーの横にあるチェックボックスをオンにして、[ポリシーのアタッチ] を選択します。
Jenkins サーバーで AWS CLI を設定するには、次の手順を使用します。
オートメーション用に Jenkins サーバーを設定するには
-
管理インターフェイスにアクセスするには、ご使用のブラウザを使用してポート 8080 で Jenkins サーバーに接続します。
-
/var/lib/jenkins/secrets/initialAdminPassword
で見つかったパスワードを入力します。パスワードを表示するには、次のコマンドを実行します。sudo cat /var/lib/jenkins/secrets/initialAdminPassword
-
Jenkins インストールスクリプトでは、[Jenkins のカスタマイズ] ページが表示されます。[Install suggested plugins (推奨プラグインをインストール)] を選択します。
-
インストールが完了したら、[管理者認証情報] を選択し、[認証情報を保存] を選択してから、[Jenkins の使用を開始] を選択します。
-
左側のナビゲーションペインで、[Jenkins の管理]、[プラグインの管理] の順に選択します。
-
[Available (使用可能)] タブを選択し、
Amazon EC2 plugin
と入力します。 -
Amazon EC2 plugin
のチェックボックスをオンにし、[Install without restart (再起動せずにインストール)] を選択します。 -
インストールが完了したら、[Go back to the top page (トップページに戻る)]を選択します。
-
[Jenkins の管理]、[ノードとクラドの管理] の順に選択します。
-
[クラウドの設定] セクションで [新しいクラウドの追加]、[Amazon EC2] の順に選択します。
-
残りのフィールドに情報を入力します。必ず、[EC2 インスタンスプロファイルを使用して認証情報を取得] オプションを選択してください。
オートメーションを呼び出すように Jenkins プロジェクトを設定するには、次の手順を使用します。
オートメーションを呼び出すように Jenkins サーバー を設定するには
-
ウェブブラウザで、Jenkins コンソールを開きます。
-
Automation を使用して設定するプロジェクトを選択し、[Configure] を選択します。
-
[Build] タブで、[Add Build Step] を選択します。
-
[Execute shell] または [Execute Windows batch command] (オペレーティングシステムによって異なります) を選択します。
-
[Command] (コマンド)フィールドで、以下のように AWS CLI コマンドを実行します。各
リソースプレースホルダーの例
をユーザー自身の情報に置き換えます。aws ssm start-automation-execution \ --document-name
runbook name
\ --regionAWS リージョン of your source AMI
\ --parametersrunbook parameters
以下のサンプルコマンドは、UpdateMyLatestWindowsAmi ランブックや、
latestAmi
で作成された Systems Manager Parameter Automation、AWS Lambda、Parameter Store を使用してゴールデン AMI を更新する を使用しています。aws ssm start-automation-execution \ --document-name UpdateMyLatestWindowsAmi \ --parameters \ "sourceAMIid='{{ssm:latestAmi}}'" --region
region
Jenkins では、コマンドは次のスクリーンショットの例のようになります。
-
Jenkins プロジェクトで、[今すぐビルド] を選択します。Jenkins は次の例のような出力を返します。