From 7eba1eea286f0ffd4a02d4df4a881a23a9cbffdb Mon Sep 17 00:00:00 2001 From: Wang Defa Date: Fri, 7 Aug 2026 10:38:02 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=9C=A8=20create=5Finstance.sh=20?= =?UTF-8?q?=E4=B8=AD=E6=B7=BB=E5=8A=A0=E8=8E=B7=E5=8F=96=E7=A7=9F=E6=88=B7?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=E7=9A=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- oci/create_instance.sh | 36 ++++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/oci/create_instance.sh b/oci/create_instance.sh index 04ac585..42f8473 100644 --- a/oci/create_instance.sh +++ b/oci/create_instance.sh @@ -182,6 +182,34 @@ generate_shape_config() { esac } +# +# 获取当前 OCI 配置对应的租户名称 +# +get_tenant_name() { + local tenancy_id + local tenant_name + + if ! tenancy_id=$(oci iam availability-domain list \ + --query 'data[0]."compartment-id"' --raw-output); then + log_error "获取租户 OCID 失败" + return 1 + fi + + if [[ -z "$tenancy_id" || "$tenancy_id" == "null" ]]; then + log_error "租户 OCID 为空" + return 1 + fi + + if ! tenant_name=$(oci iam tenancy get --tenancy-id "$tenancy_id" \ + --query 'data.name' --raw-output); then + log_error "获取租户名称失败" + return 1 + fi + + [[ -n "$tenant_name" && "$tenant_name" != "null" ]] || return 1 + printf '%s\n' "$tenant_name" +} + # # 配置 OCI 网络资源 # @@ -299,7 +327,7 @@ show_help() { 选项: -n, --number <数量> 创建实例数量 (默认: $DEFAULT_NUMBER) - --ocid 区域ID (自动获取) + --ocid Compartment OCID (自动获取租户根 OCID) --shape <形状> 实例规格 (默认: $DEFAULT_SHAPE) --shape_config <配置> 资源配置格式: CPU+内存[+基线] (默认: $DEFAULT_SHAPE_CONFIG) --subnet_id <子网ID> 指定现有子网ID (自动创建) @@ -412,9 +440,9 @@ main() { log_info "正在获取租户名称..." local tenant_name - tenant_name=$(oci iam tenancy get --tenancy-id "$ocid" \ - --query 'data.name' --raw-output 2>/dev/null) - check_return $? "获取租户名称失败" + if ! tenant_name=$(get_tenant_name); then + error_exit "无法获取租户名称" + fi log_info "租户名称: $tenant_name" local tags="{\"RootPassword\":\"$password\",\"TenantName\":\"$tenant_name\"}"