如您正在使用自訂鏡像,出於安全考慮,需及時更新鏡像,例如安裝最新的作業系統補丁、升級中介軟體軟體、在鏡像中安裝最新的第三方軟體等。您可以使用OOS提供鏡像更新公用模板自動更新鏡像,降低營運成本。
解決方案
OOS專門為更新鏡像的情境提供了更新鏡像的公用模板,實現了一鍵自動化的鏡像更新服務。您只需選擇一個源鏡像(待更新的鏡像),補充更新鏡像所需的Shell命令(如果是Linux執行個體)等必要參數,然後點擊建立執行就可以一鍵產生新鏡像。使用OOS更新鏡像,您無需安裝任何額外工具,無需關心ECS的建立、登入、修改、釋放等步驟,無需設定環境變數和登入密鑰。您還可以自訂OOS模板,實現定時或者批量的自動化更新鏡像。
更新鏡像的其他方式及對比
構建方式 | 工具與依賴 | 優點 | 缺點 |
使用OOS建立和更新自訂鏡像 | 開通即可,無其他依賴 |
| 無 |
| 無其他依賴 | ECS控制台操作,簡單易用 |
|
使用Packer建立自訂鏡像 | 需要安裝Packer | 開源,多雲的支援 |
|
操作步驟
選擇
。選擇更新鏡像,單擊建立執行。
單擊下一步:設定參數。
按需設定以下參數。
選擇源鏡像:指定您要更新的源鏡像。
鏡像設定:定義更新後鏡像的名稱與標籤。
配置中轉執行個體:設定臨時ECS執行個體的規格與配置。
更新鏡像配置:確定更新方式、命令類型及命令指令碼。
進階選項:OOS預設使用當前登入使用者的許可權執行動作;如果指定了RAM角色名稱,OOS扮演該RAM角色執行動作。
單擊下一步:確認,單擊確認風險並執行。
在
中可查看剛剛建立的執行,若建立執行成功,且執行狀態處於運行中,則表示更新鏡像進行中中。當執行狀態轉換為成功時,則表示鏡像更新成功,可在執行詳情中查看新鏡像ID。
如需更多瞭解鏡像更新過程,當建立執行成功後,您可單擊該執行的詳情,查看執行日誌,即時瞭解執行的進度和狀態。
附錄1:公用模板和背後邏輯
ACS-ECS-UpdateImage公用模板內容如下:
FormatVersion: OOS-2019-06-01
Description: Updates an existing ECS image via ECS Cloud Assistant then creates a
ECS image.
Parameters:
sourceImageId:
Description: The image ID for the ECS instances, centos_6_10_64_20G_alibase_20190326.vhd,
for example.
Type: String
AllowedPattern: '[A-Za-z0-9_\-\.]*'
MinLength: 1
MaxLength: 40
instanceType:
Description: The instance type for the ECS instances, ecs.g5.large, for example.
Type: String
AllowedPattern: ecs\.[A-Za-z0-9\.\-]*
MinLength: 1
MaxLength: 30
securityGroupId:
Description: The security group ID for the ECS instances, sg-xxxxxxxxxxxxxxxxxxxx,
for example.
Type: String
AllowedPattern: sg-[A-Za-z0-9]*
MinLength: 1
MaxLength: 30
vSwitchId:
Description: The virtual switch ID for the ECS instances, vsw-xxxxxxxxxxxxxxxxxxxx,
for example.
Type: String
AllowedPattern: vsw-[A-Za-z0-9]*
MinLength: 1
MaxLength: 30
commandContent:
Description: The content of command.
Type: String
commandType:
Description: The type of command to run in ECS instance.
Type: String
AllowedValues:
- RunBatScript
- RunPowerShellScript
- RunShellScript
MinLength: 1
MaxLength: 30
targetImageName:
Description: The name of image.
Type: String
AllowedPattern: '[A-Za-z0-9\-_]*'
MinLength: 1
MaxLength: 30
OOSAssumeRole:
Description: The RAM role to be assumed by OOS.
Type: String
Default: OOSServiceRole
RamRole: '{{ OOSAssumeRole }}'
Tasks:
- Name: checkNewImageName
Action: ACS::CheckFor
Description: Check image name is available.
Properties:
Service: ECS
API: DescribeImages
Parameters:
ImageName: '{{ targetImageName }}'
DesiredValues:
- 0
PropertySelector: TotalCount
- Name: runInstances
Action: ACS::ECS::RunInstances
Description: Create a ECS instance for the cloud assistant.
Properties:
imageId: '{{ sourceImageId }}'
instanceType: '{{ instanceType }}'
securityGroupId: '{{ securityGroupId }}'
vSwitchId: '{{ vSwitchId }}'
Outputs:
instanceId:
ValueSelector: instanceIds[0]
Type: String
- Name: installCloudAssistant
Action: ACS::ECS::InstallCloudAssistant
Description: Install cloud assostant for ECS instance.
OnError: deleteInstance
Properties:
instanceId: '{{ runInstances.instanceId }}'
- Name: runCommand
Action: ACS::ECS::RunCommand
Description: Run command on ECS instance.
OnError: deleteInstance
Properties:
commandContent: '{{ commandContent }}'
commandType: '{{ commandType }}'
instanceId: '{{ runInstances.instanceId }}'
- Name: stopInstance
Action: ACS::ECS::StopInstance
Description: Stops the ECS instance by the instance ID.
Properties:
instanceId: '{{ runInstances.instanceId }}'
- Name: createImage
Action: ACS::ECS::CreateImage
Description: Create image with the specified image name and instance ID.
OnError: deleteInstance
Properties:
imageName: '{{ targetImageName }}'
instanceId: '{{ runInstances.instanceId }}'
Outputs:
imageId:
ValueSelector: imageId
Type: String
- Name: deleteInstance
Action: ACS::ExecuteAPI
Description: Deletes the ECS instance by the instance ID.
Properties:
Service: ECS
API: DeleteInstance
Risk: Normal
Parameters:
InstanceId: '{{ runInstances.instanceId }}'
Force: true
Outputs:
imageId:
Type: String
Value: '{{ createImage.imageId }}'
該模板順序執行以下任務:
檢查您打算為新鏡像設定的名稱是否可用。
建立並運行一台臨時ECS執行個體。該執行個體會根據您輸入的參數進行建立,即執行個體將使用的鏡像是您待更新的源鏡像,執行個體屬性將是您參數中允許的執行個體屬性。
如果臨時ECS執行個體上沒有安裝雲助手用戶端,則需要進行安裝。
在臨時ECS執行個體上通過雲助手執行用來更新的命令,並等待執行成功,更新命令成功。
當臨時ECS執行個體執行更新命令成功後,停止臨時ECS執行個體。
當臨時ECS執行個體停止後,對該執行個體建立鏡像,並等待鏡像建立成功。
最後,刪除臨時ECS執行個體。