Google Compute Engine SSH 运算符¶
先决任务¶
要使用这些运算符,您必须执行以下几项操作
使用 Cloud 控制台 选择或创建一个 Cloud Platform 项目。
为您的项目启用结算,如 Google Cloud 文档 中所述。
如 Cloud 控制台文档 中所述,启用 API。
通过 pip 安装 API 库。
pip install 'apache-airflow[google]'有关 安装 的详细信息,请访问此处。
ComputeEngineRemoteInstanceSSHOperator¶
使用 SSHOperator
和 ComputeEngineSSHHook
在远程实例上执行命令。
此操作员使用 Cloud OS 登录或实例元数据来管理 SSH 密钥。要使用 Cloud OS 登录,服务帐号必须具有 compute.osAdminLogin
IAM 角色,并且实例元数据必须启用 Cloud OS 登录。可以通过设置实例元数据 - enable-oslogin=TRUE
来完成此操作
要使用实例元数据,请确保在钩子中将 Cloud OS 登录参数设置为 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 的钩子 - 项目 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 登录 API 文档 * Google Cloud API 文档 * Google Cloud OS 登录 API 文档。