Google Compute Engine SSH 操作符¶
先决条件任务¶
要使用这些操作符,您必须执行以下几项操作
使用 Cloud Console 选择或创建 Cloud Platform 项目。
如 Google Cloud 文档中所述,为您的项目启用结算功能。
如 Cloud Console 文档中所述,启用 API。
通过 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 流量。
以下是创建操作符的代码
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 凭据中检索
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 文档。