すべてのプロダクト
Search
ドキュメントセンター

CloudOps Orchestration Service:ACS-ECS-BulkyInstallLogAgent

最終更新日:Dec 21, 2025

テンプレート名

ACS-ECS-BulkyInstallLogAgent - Simple Log Service プラグインの一括インストール

今すぐ実行

テンプレートの説明

複数の Elastic Compute Service (ECS) インスタンスに Logtail を一度にインストールします。

テンプレートの種類

自動化

所有者

Alibaba Cloud

入力パラメーター

パラメーター

説明

種類

必須

デフォルト値

制限

targets

ターゲットインスタンス

Json

はい

regionId

リージョン ID。

String

いいえ

{{ ACS::RegionId }}

action

操作タイプ

String

いいえ

install

overwrite

LogAgent の上書き

Boolean

いいえ

False

rateControl

同時タスク実行率

Json

いいえ

{'Mode': 'Concurrency', 'MaxErrors': 0, 'Concurrency': 10}

OOSAssumeRole

CloudOps Orchestration Service (OOS) がアシュームする Resource Access Management (RAM) ロール。

String

いいえ

""

出力パラメーター

パラメーター

説明

種類

commandOutput

String

テンプレートを実行するために必要な権限ポリシー

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "ecs:DescribeInstances",
                "ecs:DescribeInvocationResults",
                "ecs:DescribeInvocations",
                "ecs:RunCommand"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "oos:GetApplicationGroup"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}

詳細

詳細については、GitHub の ACS-ECS-BulkyInstallLogAgent.yml をご参照ください。

テンプレートコンテンツ

FormatVersion: OOS-2019-06-01
Description:
  en: このテンプレートを使用して、Simple Log Service エージェントを ECS インスタンスに一括でインストールします。
  zh-cn: このテンプレートを使用して、Simple Log Service エージェントを ECS インスタンスに一括でインストールします。
  name-en: ACS-ECS-BulkyInstallLogAgent
  name-zh-cn: Simple Log Service エージェントの一括インストール
  categories:
    - run_command
Parameters:
  regionId:
    Type: String
    Label:
      en: リージョン ID
      zh-cn: リージョン ID
    AssociationProperty: RegionId
    Default: '{{ ACS::RegionId }}'
  action:
    Type: String
    Label:
      en: 操作タイプ
      zh-cn: 操作タイプ
    AllowedValues:
      - install
      - upgrade
      - uninstall
    Default: install
  overwrite:
    Description:
      en: 'インスタンス上の既存の LogAgent を上書きするかどうかを指定します。デフォルトでは、既存の LogAgent は上書きされません。'
      zh-cn: 'インスタンス上の既存の LogAgent を上書きするかどうかを指定します。デフォルトでは、既存の LogAgent は上書きされません。'
    Label:
      en: LogAgent の上書き
      zh-cn: LogAgent の上書き
    Type: Boolean
    Default: false
  targets:
    Type: Json
    Label:
      en: ターゲットインスタンス
      zh-cn: ターゲットインスタンス
    AssociationProperty: Targets
    AssociationPropertyMetadata:
      ResourceType: 'ALIYUN::ECS::Instance'
      RegionId: regionId
  rateControl:
    Label:
      en: 同時実行率
      zh-cn: 同時実行率
    Type: Json
    AssociationProperty: RateControl
    Default:
      Mode: Concurrency
      MaxErrors: 0
      Concurrency: 10
  OOSAssumeRole:
    Label:
      en: OOS が引き受ける RAM ロール
      zh-cn: OOS が引き受ける RAM ロール
    Type: String
    Default: ''
RamRole: '{{ OOSAssumeRole }}'
Tasks:
  - Name: getInstance
    Description:
      en: 指定された ECS インスタンスを取得します。
      zh-cn: 指定された ECS インスタンスを取得します。
    Action: 'ACS::SelectTargets'
    Properties:
      ResourceType: 'ALIYUN::ECS::Instance'
      RegionId: '{{ regionId }}'
      Filters:
        - '{{ targets }}'
    Outputs:
      instanceIds:
        Type: List
        ValueSelector: 'Instances.Instance[].InstanceId'
      instanceInfos:
        Type: List
        ValueSelector: '.Instances.Instance[] | {"osType":.OSType, "instanceId":.InstanceId}'
  - Name: runCommand
    Action: 'ACS::ECS::RunCommand'
    Properties:
      commandContent:
        'Fn::If':
          - 'Fn::Equals':
              - 'Fn::Jq':
                  - First
                  - '.|map(select(.instanceId == "{{ ACS::TaskLoopItem }}").osType)[]'
                  - '{{ getInstance.instanceInfos }}'
              - linux
          - |-
            set -e
            installLogAgent(){
                message=`./logtail.sh install {{ regionId }} 2>/dev/null`
                if [ $? = 0 ]; then
                    cat /usr/local/ilogtail/app_info.json
                else
                    echo "$message"
                    exit 1
                fi
            }
            wget http://logtail-release-{{ regionId }}.oss-{{ regionId }}-internal.aliyuncs.com/linux64/logtail.sh -q -O logtail.sh;
            if [ $? != 0 ]; then
              echo "logtail_installer のダウンロードに失敗しました。ネットワークサービスを確認してください。"
              exit 1
            fi
            chmod 755 logtail.sh;
            if [ "{{action}}" = "install" ]; then
                wetherOverwriteAgent="{{overwrite}}"
                if [ $wetherOverwriteAgent = "true" ]; then
                    installLogAgent
                else
                    logVersionPath="/usr/local/ilogtail/app_info.json"
                    if [ -f "$logVersionPath" ]; then
                        echo 'LogAgent はすでに存在します。'
                        exit 0
                    else
                        installLogAgent
                    fi
                fi
            elif [ "{{action}}" = "upgrade" ]; then
                message=`./logtail.sh upgrade 2>/dev/null`
                if [ $? = 0 ]; then
                  cat /usr/local/ilogtail/app_info.json
                else
                  echo "$message"
                  exit 1
                fi
            else
                ./logtail.sh uninstall
            fi
          - |-
            function installLogAgent
            {
                .\logtail_installer.exe install {{ regionId }}
                if (! $?)
                 {
                   echo "Logtail のインストールまたはサービスの開始に失敗しました。再試行してください。"
                   exit 1
                 }
                echo 'インストールが完了しました。'
            }

            $action="{{ action }}"

            $pathExistOrNot = Test-Path -Path "C:\Users\Administrator\OOSPackages"
            if ($pathExistOrNot)
            {
              cd C:\Users\Administrator\OOSPackages
            } else
            {
              mkdir C:\Users\Administrator\OOSPackages
              cd C:\Users\Administrator\OOSPackages
              echo 'ファイルが作成されました。'
            }

            $client = new-object System.Net.WebClient
            $client.DownloadFile('http://logtail-release-{{ regionId }}.oss-{{ regionId }}-internal.aliyuncs.com/win/logtail_installer.zip', 'C:\Users\Administrator\OOSPackages\logtail_installer.zip')
            if (! $?)
            {
              echo "logtail_installer のダウンロードに失敗しました。ネットワークサービスを確認してください。"
              exit 1
            }
            Expand-Archive -Force -Path C:\Users\Administrator\OOSPackages\logtail_installer.zip -DestinationPath C:\Users\Administrator\OOSPackages
            switch($action)
            {
                "install" {
                    $wetherOverwriteAgent = "{{overwrite}}"

                    if ($wetherOverwriteAgent -eq "true")
                    {
                        installLogAgent
                    } else
                    {
                        if ([Environment]::Is64BitOperatingSystem)
                        {
                            $logAgentPath = Test-Path -Path "C:\Program Files (x86)\Alibaba\Logtail"
                            if ($logAgentPath)
                            {
                                echo 'LogAgent はすでに存在します。'
                                exit 0
                            } else
                            {
                                installLogAgent
                            }
                        } else
                        {
                            $logAgentPath = Test-Path -Path "C:\Program Files\Alibaba\Logtail"
                            if ($logAgentPath)
                            {
                                echo 'LogAgent はすでに存在します。'
                            } else
                            {
                                installLogAgent
                            }
                        }
                    }

                }
                "upgrade" {
                    .\logtail_installer.exe uninstall
                    .\logtail_installer.exe install {{ regionId }}
                    echo 'アップグレードが完了しました。'
                }
                "uninstall" {
                    .\logtail_installer.exe uninstall
                    echo 'アンインストールが完了しました。'
                }
            }
            $allFile = Get-ChildItem -Path "C:\Users\Administrator\OOSPackages"
            foreach($file in $allFile)
            {
              Remove-Item $file.FullName -Recurse -Force
            }
            cd ..
            del C:\Users\Administrator\OOSPackages
      instanceId: '{{ ACS::TaskLoopItem }}'
      regionId: '{{ regionId }}'
      commandType:
        'Fn::If':
          - 'Fn::Equals':
              - 'Fn::Jq':
                  - First
                  - '.|map(select(.instanceId == "{{ ACS::TaskLoopItem }}").osType)[]'
                  - '{{ getInstance.instanceInfos }}'
              - linux
          - RunShellScript
          - RunPowerShellScript
    Loop:
      Items: '{{ getInstance.instanceIds }}'
      RateControl: '{{ rateControl }}'
      Outputs:
        commandOutputs:
          AggregateType: 'Fn::ListJoin'
          AggregateField: commandOutput
    Outputs:
      commandOutput:
        Type: String
        ValueSelector: invocationOutput
Outputs:
  commandOutput:
    Type: String
    Value: '{{ runCommand.commandOutputs }}'
Metadata:
  ALIYUN::OOS::Interface:
    ParameterGroups:
      - Parameters:
          - action
          - overwrite
        Label:
          default:
            zh-cn: パラメーターの設定
            en: パラメーターの設定
      - Parameters:
          - regionId
          - targets
        Label:
          default:
            zh-cn: インスタンスの選択
            en: インスタンスの選択
      - Parameters:
          - rateControl
          - OOSAssumeRole
        Label:
          default:
            zh-cn: 詳細オプション
            en: 詳細オプション