FormatVersion: OOS-2019-06-01
Description: 获取集群公网凭证
Parameters:
  regionId:
    Type: String
    Label:
      en: RegionId
      zh-cn: 地域ID
    AssociationProperty: RegionId
    Default: '{{ ACS::RegionId }}'
  targets:
    Type: Json
    Description: ECS实例
    AssociationProperty: Targets
    AssociationPropertyMetadata:
      ResourceType: ALIYUN::ECS::Instance
      RegionId: regionId
RamRole: ''
Tasks:
  - Name: getTag
    Description:
      en: Views the ECS instance tag
      zh-cn: 获取ECS实例标签
    Action: ACS::SelectTargets
    Properties:
      ResourceType: ALIYUN::ECS::Instance
      RegionId: '{{ regionId }}'
      Filters:
        - '{{ targets }}'
    Outputs:
      tagValue:
        Type: String
        ValueSelector: .Instances.Instance[].Tags.Tag[] | select( .TagKey == "acs:computenest:serviceInstanceId") | .TagValue
  - Name: getInstance
    Description: 获取ECS实例
    Action: ACS::ExecuteApi
    Properties:
      Service: ECS
      API: DescribeInstances
      Parameters:
        RegionId: '{{ regionId }}'
        InstanceName: '{{ getTag.tagValue }}-master-001'
    Outputs:
      instanceId:
        Type: String
        ValueSelector: Instances.Instance[].InstanceId
  - Name: runCommand
    Action: ACS::ECS::RunCommand
    Description: 执行云助手命令
    Properties:
      regionId: '{{ regionId }}'
      commandContent: |-
        #!/bin/bash
        if [ -d ~/.kube ]; then
          if [ -f ~/.kube/external_ip_config ]; then
            cat ~/.kube/external_ip_config
          else
            echo "external_ip_config not found"
          fi
        else
          echo "~/.kube directory not found"
        fi
      instanceId: '{{ getInstance.instanceId }}'
      commandType: RunShellScript
    Outputs:
      invocationOutput:
        Type: String
        ValueSelector: invocationOutput
Outputs:
  KubeConfig:
    Type: String
    Value: '{{ runCommand.invocationOutput }}'