Google Compute Engine SSH 操作符¶
先决条件任务¶
要使用这些操作符,您必须做一些准备工作
使用 Cloud Console 选择或创建一个 Cloud Platform 项目。
为您的项目启用计费功能,具体请参阅 Google Cloud 文档。
启用 API,具体请参阅 Cloud Console 文档。
通过 pip 安装 API 库。
pip install 'apache-airflow[google]'有关 安装 的详细信息请参阅。
ComputeEngineRemoteInstanceSSHOperator¶
将 SSHOperator
与 ComputeEngineSSHHook
一起使用,在远程实例上执行命令。
此操作符使用 Cloud OS Login 或实例元数据来管理 SSH 密钥。要使用 Cloud OS Login,服务账号必须具有 compute.osAdminLogin
IAM 角色,并且实例元数据必须启用 Cloud OS Login。这可以通过设置实例元数据 - enable-oslogin=TRUE
来完成
要使用实例元数据,请确保在 hook 中将 Cloud OS Login 参数设置为 False。
请注意,目标实例必须允许端口 22 上的 tcp 流量。
以下是创建操作符的代码
tests/system/google/cloud/compute/example_compute_ssh.py
metadata_without_iap_tunnel1 = SSHOperator(
task_id="metadata_without_iap_tunnel1",
ssh_hook=ComputeEngineSSHHook(
user="username",
instance_name=GCE_INSTANCE_NAME,
zone=LOCATION,
project_id=PROJECT_ID,
use_oslogin=False,
use_iap_tunnel=False,
cmd_timeout=1,
),
command="echo metadata_without_iap_tunnel1",
)
您也可以在不指定项目 ID 的情况下创建 hook - 项目 ID 将从使用的 Google 凭据中检索
tests/system/google/cloud/compute/example_compute_ssh.py
metadata_without_iap_tunnel2 = SSHOperator(
task_id="metadata_without_iap_tunnel2",
ssh_hook=ComputeEngineSSHHook(
user="username",
instance_name=GCE_INSTANCE_NAME,
zone=LOCATION,
use_oslogin=False,
use_iap_tunnel=False,
cmd_timeout=100,
),
command="echo metadata_without_iap_tunnel2",
)
更多信息¶
请参阅 Google Compute Engine API 文档和 Cloud OS Login API 文档 * Google Cloud API 文档 * Google Cloud OS Login API 文档。