リモートサーバーでローカルスクリプトを実行する必要があります。並列実行するスクリプトを実行することは重要です。
[ec2-user@ip-172-31-43-140 ~]$ cat hosts.txt
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[ec2-user@ip-172-31-43-140 ~]$ cat hosts.txt | xargs -I {} ssh {} -T 'bash -s' < ./file.sh
ssh: Could not resolve hostname #!/bin/sh: Name or service not known
xargs: ssh: exited with status 255; aborting
[ec2-user@ip-172-31-43-140 ~]$
hello.bash
:
doit() {
echo Define
echo what you want done in a
echo function
}
export -f doit
次に行います:
. hello.bash
parallel --env doit --slf hosts.txt --tag --nonall doit
はい、AWS Systems Managerでこれを行うことができます。 AWS Systems Manager Run Commandを使用すると、リモートで安全にEC2とオンプレミスサーバーでコマンドのセットを実行できます。以下は、これを達成するための大まかな手順です。
インスタンスIAMロールのアタッチ:ec2インスタンスには、ポリシーAmazonSSMFullAccessのIAMロールが必要です。この役割により、インスタンスはSystems Manager APIと通信できます。
SSMエージェントのインストール:EC2インスタンスにはSSMエージェントがインストールされている必要があります。 SSMエージェントは、コマンドの実行要求を処理し、コマンドごとにインスタンスを構成します。
コマンドの実行:AWS CLIを介した使用例:In --instance-ids
ec2インスタンスIDのリストを提供します。次のコマンドを実行して、インスタンスで実行されているサービスを取得します。 Instance-IDをec2インスタンスIDに置き換えます。
aws ssm send-command --document-name "AWS-RunShellScript" --comment "listing services" --instance-ids "Instance-ID" --parameters commands="service --status-all" --region us-west-2 --output text
詳細 ここ