Currently, if I want to execute something on a VM, I copy files over like this:
gcloud compute --project <project_id> copy-files --zone <zone_name> /home/roman/source/dir roman@<vm_name>:/some/path
Then I need to SSH into it manually like this:
gcloud compute --project <project_id> ssh --zone <zone_name> <vm_name>
And then go and run some command:
cd /some/path
python example.py
How do I combine step 2 and 3 together and execute a command remotely?
Note: I want to use gcloud or the python api. I don't want to use 3rd party packages like Fabric.
A gcloud update that landed a week ago blocked passing ssh commands after '--' and effectively forces use of
--command
option for this. In this case use:gcloud compute ssh --zone ZONE INSTANCE --command 'cd /tmp && python some.py'
.Try:
From
gcloud compute ssh --help
:Did it with a bit of a tangent; using the normal ssh client instead of
gcloud compute
:The gcloud ssh key is located at
~/.ssh/google_compute_engine
, which it uses. It also requires the external IP address of the instance instead of its name.