Nama Template
Template ACS-ECS-InstallXDragonAndCloudMonitor melakukan instalasi plugin X-Dragon dan CloudMonitor secara batch.
Deskripsi Template
Memasang Plugin deteksi perangkat keras SHENLONG, CloudMonitor, dan smartmontools pada beberapa Instance Elastic Compute Service (ECS), serta menghapus dan memperbarui Plugin deteksi perangkat keras SHENLONG.
Tipe Template
Otomatis
Pemilik
Alibaba Cloud
Parameter Input
Parameter | Deskripsi | Tipe | Diperlukan | Nilai Default | Batasan |
targets | Instans target | Json | Ya | ||
action | Tipe Operasi | String | Ya | ||
regionId | ID wilayah. | String | Tidak | {{ ACS::RegionId }} | |
timeout | Jangka waktu timeout untuk menjalankan perintah pada instance ECS. | Number | Tidak | 600 | |
rateControl | Konkurensi eksekusi tugas | Json | Tidak | {'Mode': 'Concurrency', 'MaxErrors': 0, 'Concurrency': 10} | |
OOSAssumeRole | Peran Manajemen Akses Sumber Daya (RAM) yang diasumsikan oleh Layanan Orkestrasi CloudOps (OOS). | String | Tidak | "" |
Parameter Output
Parameter | Deskripsi | Tipe |
commandOutputs | String |
Kebijakan Izin yang Diperlukan untuk Menjalankan Template
{
"Version": "1",
"Statement": [
{
"Action": [
"ecs:DescribeInstances",
"ecs:DescribeInvocationResults",
"ecs:DescribeInvocations",
"ecs:RunCommand"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"oos:GetApplicationGroup"
],
"Resource": "*",
"Effect": "Allow"
}
]
}
Detail
ACS-ECS-InstallXDragonAndCloudMonitor: Detail
Konten Template
FormatVersion: OOS-2019-06-01
Description:
en: Batch installs the X-Dragon hardware detection plug-in, Cloud Monitor, and smartmontools. This template also uninstalls or updates the X-Dragon hardware detection plug-in.
zh-cn: Batch installs the X-Dragon hardware detection plug-in, Cloud Monitor, and smartmontools. This template also uninstalls or updates the X-Dragon hardware detection plug-in.
name-en: ACS-ECS-InstallXDragonAndCloudMonitor
name-zh-cn: Batch Install X-Dragon and Monitoring Plugins
categories:
- run_command
Parameters:
regionId:
Type: String
Label:
en: Region ID
zh-cn: Region ID
AssociationProperty: RegionId
Default: '{{ ACS::RegionId }}'
targets:
Type: Json
Label:
en: Target Instance
zh-cn: Target Instance
AssociationProperty: Targets
AssociationPropertyMetadata:
ResourceType: 'ALIYUN::ECS::Instance'
RegionId: regionId
action:
Type: String
Label:
en: Operation Type
zh-cn: Operation Type
AllowedValues:
- install
- update
- remove
timeout:
Label:
en: Command Execution Timeout
zh-cn: The timeout period, in seconds, for running the command on the ECS instance.
Type: Number
Default: 600
rateControl:
Label:
en: Rate Control
zh-cn: The concurrency rate for task execution.
Type: Json
AssociationProperty: RateControl
Default:
Mode: Concurrency
MaxErrors: 0
Concurrency: 10
OOSAssumeRole:
Label:
en: OOS Assume Role
zh-cn: The RAM role to be assumed by OOS.
Type: String
Default: ''
RamRole: '{{ OOSAssumeRole }}'
Tasks:
- Name: getInstance
Description:
en: Retrieves the specified ECS instances.
zh-cn: Retrieves the specified ECS instances.
Action: ACS::SelectTargets
Properties:
ResourceType: ALIYUN::ECS::Instance
RegionId: '{{ regionId }}'
Filters:
- '{{ targets }}'
Outputs:
instanceIds:
Type: List
ValueSelector: Instances.Instance[].InstanceId
- Name: runCommand
Action: 'ACS::ECS::RunCommand'
Description: Menjalankan perintah pada instans ECS dan mendapatkan output-nya.
Properties:
regionId: '{{ regionId }}'
commandContent:
'Fn::Join':
- |+
- - 'if [ "{{action}}" = "install" ] ; then'
- smart_version=`$(smartctl -V)`
- 'if [ "$smart_version" = "" ]; then'
- ' sys_version=$(echo `lsb_release -a`)'
- ' if [ "`echo $sys_version`"=~"CentOS" ]; then'
- ' yum -y install yum-utils'
- ' yum -y install smartmontools'
- ' echo `smartctl -V`'
- ' fi'
- ' if [ "`echo $sys_version`"=~"Ubuntu" ]; then'
- ' apt-get update -y && apt-get upgrade -y && apt install smartmontools -y'
- ' fi'
- fi
- ''
- aliyun_installer -i xdragon_hardware_detect_plugin -e 1.0.0
- echo "menginstal agen cms"
- ''
- 'if [ -z "${CMS_HOME}" ]; then'
- ' CMS_HOME="/usr/local/cloudmonitor"'
- ' [ ! -z "`egrep -i coreos /etc/os-release`" ] && CMS_HOME="/opt/cloudmonitor"'
- fi
- ''
- 'if [ `uname -m` = "x86_64" ]; then'
- ' ARCH="amd64"'
- else
- ' ARCH="386"'
- fi
- ''
- VERSION="2.1.57"
- 'ELF_NAME=CmsGoAgent.linux-${ARCH}'
- 'DOWNLOAD_PATH="cms-go-agent/${VERSION}/${ELF_NAME}"'
- 'DEST_UPDATE_FILE="$CMS_HOME/${ELF_NAME}"'
- ''
- current_cms_version="0"
- '# Instans X-Dragon selalu menggunakan arsitektur x86. Periksa versinya.'
- 'if [ -f /usr/local/cloudmonitor/CmsGoAgent.linux-amd64 ]; then'
- ' current_cms_version="$($DEST_UPDATE_FILE version)"'
- fi
- ''
- 'if [ $current_cms_version = "2.1.57" ]; then'
- ' echo "CmsGoAgent sudah terinstal"'
- ' echo "Instalasi berhasil."'
- ' exit 0'
- fi
- ''
- 'if [ -z "${REGION_ID}" ]; then'
- ' REGION_ID="$(wget -q --timeout=1 -t 1 -O - ''http://100.100.100.200/latest/meta-data/region-id'')"'
- fi
- ''
- ''
- 'if [ -d $CMS_HOME ] ; then'
- ' if [ -f $CMS_HOME/wrapper/bin/cloudmonitor.sh ] ; then'
- ' $CMS_HOME/wrapper/bin/cloudmonitor.sh remove;'
- ' rm -rf $CMS_HOME;'
- ' elif [ -f $DEST_UPDATE_FILE ]; then'
- ' $DEST_UPDATE_FILE stop'
- ' #$DEST_UPDATE_FILE uninstall'
- ' ps aux | grep -v grep | grep $ELF_NAME'
- ' fi'
- fi
- ''
- download()
- '{'
- ' if [ -z "${REGION_ID}" ]; then'
- ' echo "networkType is classic"'
- ' OSS_URL="http://cms-agent-cn-hangzhou.oss-cn-hangzhou-internal.aliyuncs.com/$DOWNLOAD_PATH"'
- ' else'
- ' echo "networkType is vpc, REGION_ID: $REGION_ID"'
- ' if [ "$REGION_ID" = "cn-shenzhen-finance-1" ]; then'
- ' OSS_URL="http://cms-download.aliyun.com/$DOWNLOAD_PATH"'
- ' CMS_PROXY="szcmsproxy.aliyun.com:3128"'
- ' elif [ "$REGION_ID" = "cn-shanghai-finance-1" ]; then'
- ' OSS_URL="http://cms-agent-$REGION_ID.oss-$REGION_ID-pub-internal.aliyuncs.com/$DOWNLOAD_PATH"'
- ' elif [ "$REGION_ID" = "ap-south-1" ]; then'
- ' OSS_URL="http://cms-download.aliyun.com/$DOWNLOAD_PATH"'
- ' CMS_PROXY="cmsproxy-ap-south-1.aliyuncs.com:8080"'
- ' elif [ "$REGION_ID" = "ap-southeast-3" -o "$REGION_ID" = "me-east-1" -o "$REGION_ID" = "cn-chengdu" ]; then'
- ' OSS_URL="http://cms-download.aliyun.com/$DOWNLOAD_PATH"'
- ' else'
- ' OSS_URL="http://cms-agent-$REGION_ID.oss-$REGION_ID-internal.aliyuncs.com/$DOWNLOAD_PATH"'
- ' fi'
- ' fi'
- ' echo download from "$OSS_URL"'
- ' wget -q -e "http_proxy=$CMS_PROXY" "$OSS_URL" -O "$DEST_UPDATE_FILE" -t 3 --connect-timeout=2'
- ' if [ $? != 0 ]; then'
- ' echo "download fail, retry..."'
- ' CMS_PROXY="vpc-opencmsproxy.aliyun.com:8080";'
- ' OSS_URL="http://cms-download.aliyun.com/$DOWNLOAD_PATH"'
- ' wget -q -e "http_proxy=$CMS_PROXY" "$OSS_URL" -O "$DEST_UPDATE_FILE" -t 3 --connect-timeout=2'
- ' fi'
- ' if [ $? != 0 ]; then'
- ' echo "download fail, retry..."'
- ' CMS_PROXY="opencmsproxy.aliyun.com:8080";'
- ' OSS_URL="http://cms-download.aliyun.com/$DOWNLOAD_PATH"'
- ' wget -q -e "http_proxy=$CMS_PROXY" "$OSS_URL" -O "$DEST_UPDATE_FILE" -t 3 --connect-timeout=2'
- ' fi'
- '}'
- ''
- mkdir -p $CMS_HOME && \
- 'chown -R root:root $CMS_HOME && \'
- download && \
- chmod a+x $DEST_UPDATE_FILE
- $DEST_UPDATE_FILE check
- RC=$?
- 'if [ ${RC} -ne 0 ]; then'
- ' echo CmsGoAgent install failed, your platform is not supported'
- ' exit ${RC}'
- fi
- ''
- $DEST_UPDATE_FILE install >/dev/null 2>&1 || true
- $DEST_UPDATE_FILE start
- ps aux | grep -v grep | grep $ELF_NAME
- ''
- ACT_VERSION=`$DEST_UPDATE_FILE version`
- 'if [ -n "$ACT_VERSION" ]; then'
- ' echo CmsGoAgent v$ACT_VERSION installed'
- else
- ' echo CmsGoAgent install failed'
- ' exit 1'
- fi
- 'elif [ "{{action}}" = "update" ] ; then'
- ' aliyun_installer -d xdragon_hardware_detect_plugin'
- 'elif [ "{{action}}" = "remove" ] ; then'
- ' aliyun_installer -u xdragon_hardware_detect_plugin'
- fi
instanceId: '{{ ACS::TaskLoopItem }}'
timeout: '{{ timeout }}'
commandType: RunShellScript
Loop:
Items: '{{ getInstance.instanceIds }}'
RateControl: '{{ rateControl }}'
Outputs:
commandOutputs:
AggregateType: Fn::ListJoin
AggregateField: commandOutput
Outputs:
commandOutput:
Type: String
ValueSelector: invocationOutput
Outputs:
commandOutputs:
Type: String
Value: '{{ runCommand.commandOutputs }}'
Metadata:
ALIYUN::OOS::Interface:
ParameterGroups:
- Parameters:
- action
- timeout
Label:
default:
zh-cn: Configure Parameters
en: Configure Parameters
- Parameters:
- regionId
- targets
Label:
default:
zh-cn: Select Instances
en: Select Instances
- Parameters:
- rateControl
- OOSAssumeRole
Label:
default:
zh-cn: Advanced Options
en: Advanced Options