Connect to a Compute Engine VM with SSHOperator

Cloud Composer 1 | Cloud Composer 2

This page describes how to connect to a Compute Engine VM from a DAG.

Create a DAG that connects to a Compute Engine VM instance

In the ssh_hook parameter of SSHOperator, use ComputeEngineSSHHook with parameters that point to the Compute Engine VM.

The following example demonstrates how to use SSHOperator to run a command on a Compute Engine VM instance.

Replace the values:

  • GCE_INSTANCE with the name of the VM instance.
  • GCE_ZONE with the Compute Engine zone where the VM is located.
  • PROJECT_ID with the Project ID of a project where the VM and the environment that runs the DAG is located.
import datetime

import airflow
from airflow.providers.ssh.operators.ssh import SSHOperator
from airflow.providers.google.cloud.hooks.compute_ssh import ComputeEngineSSHHook

GCE_INSTANCE = 'example-compute-instance'
GCE_ZONE = 'us-central1-a'
PROJECT_ID = 'example-project'

with airflow.DAG(
        'composer_compute_ssh_dag',
        start_date=datetime.datetime(2022, 1, 1)
        ) as dag:

  ssh_task = SSHOperator(
    task_id="composer_compute_ssh_task",
    ssh_hook=ComputeEngineSSHHook(
        instance_name=GCE_INSTANCE,
        zone=GCE_ZONE,
        project_id=GCP_PROJECT_ID,
        use_oslogin=True,
        use_iap_tunnel=False,
        use_internal_ip=True
    ),
    command="echo This command is executed from a DAG",
    dag=dag
  )

What's next