2016-08-23 12 views
8

Obecnie, jeśli chcę wykonać coś na VM, kopiować pliki na tak:gcloud obliczeniowa wykonania polecenia zdalnie

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

Potem trzeba zalogować się na nim ręcznie tak:

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

a następnie przejść i uruchomić jakieś polecenie:

cd /some/path 
python example.py 

Jak połączyć krok 2 i 3 razem i wykonać polecenie zdalnie?

Uwaga: chcę użyć gcloud lub apl Pythona. Nie chcę używać pakietów innych firm, takich jak Fabric.

+0

Nie sądzę, że to możliwe. Możesz dodać kilka metadanych do projektu i uruchomić go automatycznie po ponownym uruchomieniu instancji. – Sridhar

Odpowiedz

14

Spróbuj:

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

Od 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 
2

Czy to z odrobiną stycznej; używając normalnego klienta ssh zamiast gcloud compute:

ssh -i ~/.ssh/google_compute_engine [email protected]<vm_IP> 'python /some/path/example.py' 

gcloud klucz ssh znajduje się w ~/.ssh/google_compute_engine, których używa. Wymaga również zewnętrznego adresu IP instancji zamiast jej nazwy.

+0

Tak, 'gcloud compute ssh' to tylko opakowanie. – Dagang

8

Aktualizacja gcloud że wylądował tydzień temu zablokowana po przejściu polecenia ssh '-' i skutecznie wymusza stosowanie --command opcji do tego. W tym przypadku użyj:

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

Powiązane problemy