web-dev-qa-db-ja.com

gcloud compute executeコマンドをリモートで

現在、VMで何かを実行する場合は、次のようにファイルをコピーします。

gcloud compute --project <project_id> copy-files --zone <zone_name> /home/roman/source/dir roman@<vm_name>:/some/path

次に、次のように手動でSSHで接続する必要があります。

gcloud compute --project <project_id> ssh --zone <zone_name> <vm_name>

そして、いくつかのコマンドを実行します:

cd /some/path
python example.py

手順2と3を組み合わせて、リモートでコマンドを実行するにはどうすればよいですか?

注:gcloudまたはpython apiを使用します。Fabricのようなサードパーティのパッケージは使用しません。

20
Roman

試してください:

$ gcloud compute ssh --zone ZONE INSTANCE -- 'cd /tmp && python some.py'

gcloud compute ssh --helpから:

 [-- IMPLEMENTATION-ARGS ...]
    Flags and positionals passed to the underlying ssh implementation.

    The '--' argument must be specified between gcloud specific args on the
    left and IMPLEMENTATION-ARGS on the right. Example:

        $ gcloud compute ssh example-instance --zone us-central1-a -- -vvv \
            -L 80:%INSTANCE%:80
30
Zachary Newman

1週間前に着陸したgcloudの更新は、「-」の後にsshコマンドを渡すことをブロックし、効果的に--commandオプション。この場合、次を使用します。

gcloud compute ssh --zone ZONE INSTANCE --command 'cd /tmp && python some.py'

24
Doru C.

少し接線でやりました。 gcloud computeの代わりに通常のsshクライアントを使用:

ssh -i ~/.ssh/google_compute_engine roman@<vm_IP> 'python /some/path/example.py'

Gcloud sshキーは~/.ssh/google_compute_engineにあり、使用します。また、名前の代わりにインスタンスの外部IPアドレスが必要です。

2
Roman