からAnsibleプレイブックを実行する GitHub - AWS Systems Manager

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

からAnsibleプレイブックを実行する GitHub

このセクションでは、 コンソールまたは AWS Command Line Interface () を使用して、 GitHubからAnsibleプレイブックを実行するための手順について説明しますAWS CLI。

開始する前に

プライベートGitHubリポジトリに保存されているスクリプトを実行する場合は、GitHubセキュリティアクセストークンの AWS Systems Manager SecureStringパラメータを作成します。SSH 経由でトークンを手動で渡すことで、プライベートGitHubリポジトリ内のスクリプトにアクセスすることはできません。アクセストークンは、Systems Manager SecureString パラメータとして渡す必要があります。SecureString パラメータの作成の詳細については、「Systems Manager パラメータを作成する」を参照してください。

から Ansible プレイブックを実行する GitHub (コンソール)

から Ansible プレイブックを実行する GitHub
  1. https://console.aws.amazon.com/systems-manager/ で AWS Systems Manager コンソールを開きます。

  2. ナビゲーションペインで、[Run Command] を選択します。

    -または-

    AWS Systems Manager ホームページが最初に開いたら、メニューアイコン (      The menu icon   ) を選択してナビゲーションペインを開き、 を選択しますRun Command

  3. [コマンドの実行] を選択します。

  4. [コマンドのドキュメント] リストで、[AWS-RunRemoteScript] を選択します。

  5. [コマンドパラメータ] で、以下の作業を行います。

    • ソースタイプ で、 を選択しますGitHub

    • [ソース情報] ボックスに、ソースにアクセスするために必要な情報を次の形式で入力します。

      { "owner": "owner_name", "repository": "repository_name", "getOptions": "branch:branch_name", "path": "path_to_scripts_or_directory", "tokenInfo": "{{ssm-secure:SecureString_parameter_name}}" }

      この例では、webserver.yml という名前のファイルがダウンロードされます。

      { "owner": "TestUser1", "repository": "GitHubPrivateTest", "getOptions": "branch:myBranch", "path": "scripts/webserver.yml", "tokenInfo": "{{ssm-secure:mySecureStringParameter}}" }
      注記

      "branch" は、SSM ドキュメントが 以外のブランチに保存されている場合にのみ必要です。master

      リポジトリ内の特定のコミットにあるバージョンのスクリプトを使用するには、commitID ではなく、getOptions を指定して branch を使用します。以下に例を示します。

      "getOptions": "commitID:bbc1ddb94...b76d3bEXAMPLE",

    • [コマンドライン] フィールドに、スクリプトの実行に必要なパラメータを入力します。以下はその例です。

      ansible-playbook -i “localhost,” --check -c local webserver.yml

    • (オプション) [作業ディレクトリ] に、スクリプトをダウンロードして実行する先の、ノードのディレクトリの名前を入力します。

    • (オプション) [実行タイムアウト] に、スクリプトコマンドの実行を失敗とするまでにシステムが待機する秒数を指定します。

  6. [ターゲット] セクションで、タグの指定、インスタンスやエッジデバイスの手動選択、リソースグループの指定により、このオペレーションを実行するマネージドノードを選択します。

    ヒント

    表示されるはずのマネージドノードが表示されない場合は、トラブルシューティングのヒントについて「マネージドノードの可用性のトラブルシューティング」を参照してください。

  7. [その他のパラメータ] で、以下の操作を行います。

    • [コメント] に、このコマンドに関する情報を入力します。

    • [タイムアウト (秒)] に、コマンドの実行全体が失敗するまでにシステムが待機する秒数を指定します。

  8. [レート制御] の場合:

    • [同時実行数] の場合、コマンドを同時に実行するマネージドノードの数または割合を指定します。

      注記

      マネージドノードに適用されるタグを指定するか、 AWS リソースグループを指定してターゲットを選択し、ターゲットとなるマネージドノードの数が不明な場合は、割合を指定してドキュメントを同時に実行できるターゲットの数を制限します。

    • [エラーのしきい値] で、ノードの数または割合のいずれかで失敗した後、他のマネージドノードでのコマンドの実行をいつ停止するか指定します。例えば、3 つのエラーを指定した場合、4 番目のエラーが受信されると、Systems Manager はコマンドの送信を停止します。コマンドを処理しているマネージドノードもエラーを送信する可能性があります。

  9. (オプション) コマンド出力をファイルに保存する場合は、[出力オプション][S3 バケットにコマンド出力を書き込む] ボックスを選択します。ボックスにバケット名とプレフィックス (フォルダ) 名を入力します。

    注記

    S3 バケットにデータを書き込む機能を許可する S3 許可は、このタスクを実行する IAM ユーザーのものではなく、インスタンスに割り当てられたインスタンスプロファイル (EC2 インスタンスの場合) または IAM サービスロール (ハイブリッドアクティベーションマシン) のものです。詳細については、「Systems Manager にインスタンスのアクセス許可を設定する」または「ハイブリッド環境に IAM サービスロールを作成する」を参照してください。さらに、指定した S3 バケットが別の にある場合は AWS アカウント、マネージドノードに関連付けられたインスタンスプロファイルまたは IAM サービスロールに、そのバケットへの書き込みに必要なアクセス許可があることを確認してください。

  10. [SNS Notifications (SNS 通知)] セクションで、コマンドの実行状態に関する通知を受け取る場合は、[Enable SNS notifications (SNS 通知を有効にする)] チェックボックスをオンにします。

    Run Command 用の Amazon SNS 通知の設定の詳細については、「Amazon SNS 通知を使用した Systems Manager のステータス変更のモニタリング」を参照してください。

  11. [Run (実行)] を選択します。

GitHub を使用して から Ansible プレイブックを実行する AWS CLI

  1. AWS Command Line Interface (AWS CLI) をまだインストールして設定していない場合は、インストールして設定します。

    詳細については、「AWS CLIの最新バージョンをインストールまたは更新します。」を参照してください。

  2. 次のコマンドを実行して、 からスクリプトをダウンロードして実行しますGitHub。

    aws ssm send-command \ --document-name "AWS-RunRemoteScript" \ --instance-ids "instance-IDs"\ --parameters '{"sourceType":["GitHub"],"sourceInfo":["{\"owner\":\"owner_name\", \"repository\": \"repository_name\", \"path\": \"path_to_file_or_directory\", \"tokenInfo\":\"{{ssm-secure:name_of_your_SecureString_parameter}}\" }"],"commandLine":["commands_to_run"]}'

    ローカル Linux マシン上で実行するコマンドの例を次に示します。

    aws ssm send-command \ --document-name "AWS-RunRemoteScript" \ --instance-ids "i-02573cafcfEXAMPLE" \ --parameters '{"sourceType":["GitHub"],"sourceInfo":["{\"owner\":\"TestUser1\", \"repository\": \"GitHubPrivateTest\", \"path\": \"scripts/webserver.yml\", \"tokenInfo\":\"{{ssm-secure:mySecureStringParameter}}\" }"],"commandLine":["ansible-playbook -i “localhost,” --check -c local webserver.yml"]}'