EC2Launch v2 设置 - Amazon Elastic Compute Cloud
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

EC2Launch v2 设置

本节介绍了如何使用 EC2Launch v2 对话框启用或禁用 EC2Launch 设置的相关信息;EC2Launch 目录结构;用于更新 EC2Launch 设置的 CLI 命令;手动配置 agent-config.yml 文件的详细信息;以及有关如何 EC2Launch 使用 Sysprep 的信息。

使用 EC2Launch v2 设置对话框更改设置

以下过程介绍如何使用 EC2Launch v2 设置对话框来启用或禁用设置。

  1. 启动并连接到您的 Windows 实例。

  2. 从“开始”菜单,选择所有程序,然后导航到 EC2Launch 设置

    
                            EC2 Launch Settings 应用程序
  3. EC2Launch 设置 对话框的常规选项卡上,您可以启用或禁用以下设置。

    1. Set Computer Name

      如果启用此设置(默认情况下禁用),则每次引导时会将主机名与当前内部 IP 地址进行比较。如果主机名和内部 IP 地址不匹配,则将重置主机名以包含内部 IP 地址,然后系统重新引导以获取新的主机名。若要设置您自己的主机名或防止修改现有主机名,请不要启用该设置。

    2. 扩展引导卷

      此设置可动态扩展 Disk 0/Volume 0 以包含所有未分区的空间。从具有自定义大小的根设备卷启动实例时,此设置非常有用。

    3. 设置管理员帐户

      启用后,您可以为在本地计算机上创建的管理员账户设置用户名和密码属性。如果未启用此功能,则在 Sysprep 之后,不会在系统上创建管理员账户。仅当 adminPasswordadminPasswordtype 时,在 Specify 中提供密码。

      密码类型定义如下:

      1. Random

        EC2Launch 生成一个密码并使用用户的密钥对其进行加密。系统会在实例启动后禁用此设置,以便在重新启动或停止再启动实例后该密码仍然存在。

      2. Specify

        EC2Launch 使用您在 adminPassword 中指定的密码。如果密码不满足系统要求,EC2Launch 会生成随机密码。该密码以明文方式存储在 agent-config.yml 文件中,并且在 Sysprep 设置管理员密码时会被删除。EC2Launch 使用用户的密钥对密码进行加密。

      3. DoNothing

        EC2Launch 使用您在 unattend.xml 文件中指定的密码。如果未在 unattend.xml 中指定密码,管理员账户会被禁用。

    4. 启动 SSM 服务

      在选中时,将启用 Systems Manager 服务并在 Sysprep 之后启动。EC2Launch v2 执行前文介绍的所有任务,SSM 代理处理 Systems Manager 功能(如 Run Command 和 State Manager)的请求。

      您可以使用 Run Command 升级现有实例,以便使用最新版本的 EC2Launch v2 服务和 SSM 代理。有关更多信息,请参阅 AWS Systems Manager 用户指南 中的使用 Run Command 更新 SSM 代理

    5. 优化 ENA

      在选中时,将配置 ENA 设置以确保针对 AWS 优化了 ENA 接收端扩展和接收队列深度设置。有关更多信息,请参阅 配置 RSS CPU 关联

    6. 启用 SSH

      此设置为更高版本的 Windows 启用 OpenSSH,以允许远程系统管理。

    7. 启用巨型帧

      选择此项可启用巨型帧。巨型帧可能会对您的网络通信造成意外的影响,因此在启用之前,请确保您了解巨型帧将如何影响系统。有关巨型帧的详细信息,请参阅巨型帧 (9001 MTU)

    8. 准备映像

      选择您希望在使用或不使用 Sysprep 的情况下关闭 EC2 实例。如果您希望将 Sysprep 与 EC2Launch v2 配合使用,请选择使用 Sysprep 关闭

  4. DNS 后缀选项卡上,您可以选择是否要添加 DNS 后缀列表,供在 EC2 中运行的服务器的 DNS 解析使用,而不提供完全限定的域名。DNS 后缀可以包含变量 $REGION$AZ。只有尚不存在的后缀才会添加到列表中。

    
                            EC2 Launch Settings 应用程序
  5. 壁纸选项卡上,您可以允许在壁纸上显示选定实例详细信息。您还可以选择自定义图像。详细信息将在您每次登录时生成。清除该复选框可从壁纸中删除实例详细信息。

    
                            EC2 Launch Settings 应用程序
  6. 选项卡上,选择是否要初始化附加到实例的卷。启用时,可为任何附加卷设置驱动器盘符,并扩展它们以使用可用空间。如果选择全部,则初始化所有存储卷。如果选择设备,则只初始化列表中指定的设备。您必须为要初始化的每个设备进行输入。使用 EC2 控制台上列出的设备,例如,xvdb/dev/nvme0n1名称盘符分区是可选字段。如果没有为分区指定值,则使用 GPT 分区类型初始化大于 2 TB 的存储卷,使用 MBR 分区类型初始化小于 2 TB 的存储卷。如果配置了设备,并且非 NTFS 设备包含分区表,或者磁盘的前 4 KB 包含数据,则跳过磁盘并记录操作。

    
                            EC2 Launch Settings 应用程序

以下是根据在 EC2Launch 对话框中输入的设置创建的示例配置 YAML 文件。

version: 1.0 config: - stage: boot tasks: - task: extendRootPartition - stage: preReady tasks: - task: activateWindows inputs: activation: type: amazon - task: setDnsSuffix inputs: suffixes: - $REGION.ec2-utilities.amazonaws.com - task: setAdminAccount inputs: password: type: random - task: setWallpaper inputs: path: C:\ProgramData\Amazon\EC2Launch\wallpaper\Ec2Wallpaper.jpg attributes: - hostName - instanceId - privateIpAddress - publicIpAddress - instanceSize - availabilityZone - architecture - memory - network - stage: postReady tasks: - task: startSsm

EC2Launch v2 目录结构

EC2Launch v2 应安装在以下目录中:

  • 服务二进制文件:%ProgramFiles%\Amazon\EC2Launch

  • 服务数据(设置、日志文件和状态文件):%ProgramData%\Amazon\EC2Launch

注意

默认情况下,Windows 会隐藏 C:\ProgramData 下的文件和文件夹。要查看 EC2Launch v2 目录和文件,必须在 Windows 资源管理器中输入路径,或者更改文件夹属性以显示隐藏的文件和文件夹。

%ProgramFiles%\Amazon\EC2Launch 目录包含二进制文件和支持库。它包括以下子目录:

  • settings

    • EC2LaunchSettingsUI.exe – 用于修改 agent-config.yml 文件的用户界面

    • YamlDotNet.dll – 用于支持用户界面中部分操作的 DLL

  • tools

    • ebsnvme-id.exe – 用于检查实例上 EBS 卷的元数据的工具

    • AWSAcpiSpcrReader.exe – 用于确定要使用的正确 COM 端口的工具

    • EC2LaunchEventMessage.dll – 用于支持 EC2Launch 的 Windows 事件日志记录的 DLL。

  • EC2Launch.exe – 主要 EC2Launch 可执行文件

  • EC2LaunchAgentAttribution.txt – EC2Launch 中使用的代码的归因

%ProgramData%\Amazon\EC2Launch 目录包含以下子目录。服务生成的所有数据(包括日志、配置和状态)都存储在此目录中。

  • config – 配置

    服务配置文件作为 agent-config.yml 存储在此目录中。此文件可以进行更新以修改、添加或删除由服务默认运行的任务。

  • log – 实例日志

    服务 (agent.log)、控制台 (console.log)、性能 (bench.log) 和错误 (error.log) 的日志存储在此目录中。日志文件会在服务的后续执行时附加。

  • state – 服务状态数据

    服务用于确定应运行哪些任务的状态存储在此处。其中有一个 .run- once 文件,指示服务是否已在 Sysprep 之后运行(因此,频率为一次的任务在下次运行时将跳过)。此子目录包含 state.jsonprevious- state.json,用于跟踪每个任务的状态。

  • sysprep – Sysprep

    此目录包含的文件用于确定 Sysprep 在创建可重复使用的自定义 Windows AMI 时,需要执行哪些操作。

使用 CLI 配置 EC2Launch v2

您可以使用命令行界面 (CLI) 配置 EC2Launch 设置和管理服务。以下部分包含您可用于管理的 EC2Launch v2 CLI 命令的描述和使用信息。

collect-logs

收集 EC2Launch 的日志文件,压缩文件,并将其放置在指定的目录中。

示例

ec2launch collect-logs -o C:\Mylogs.zip

用量

ec2launch collect-logs [flags]

Flags

-h--help

collect-logs 的帮助

-o--output string

压缩输出日志文件的路径

重置

删除 .runonce 文件,使得指定为运行一次的任务将在下次执行时运行;可选择删除服务和 sysprep 日志。

示例

ec2launch reset -c

用量

ec2launch reset [flags]

Flags

-c--clean

在重置前清除实例日志

-h--help

reset 的帮助

run

运行 EC2Launch v2。

示例

ec2launch run

用量

ec2launch run [flags]

Flags

-h--help

reset 的帮助

sysprep

重置服务状态、更新 unattend.xml、禁用 RDP 并执行 Sysprep。

示例:

ec2launch sysprep

用量

ec2launch sysprep [flags]

Flags

-c,--clean

清除 Sysprep 之前的实例日志

-h,--help

Sysprep 的帮助

-s,--shutdown

在 Sysprep 之后关闭实例(默认值 true

验证

验证 agent-config 文件 C:\ProgramData\Amazon\EC2LaunchAgent\config\agent-config.yml

示例

ec2launch validate

用量

ec2launch validate [flags]

Flags

-h --help

validate 的帮助

version

获取可执行版本。

示例

ec2launch version

用量

ec2launch version [flags]

Flags

-h--help

version 的帮助

wallpaper

将新壁纸设置为提供的壁纸路径(.jpg 文件),并显示选定的实例详细信息。

示例

ec2launch wallpaper -- path="C:\ProgramData\Amazon\EC2Launch\wallpaper\Ec2Wallpaper.jpg" -- attributes=hostName,instanceId,privateIpAddress,publicIpAddress,instanc eSize,availabilityZone,architecture,memory,network

用量

ec2launch wallpaper [flags]

Flags

--attributes strings

壁纸属性

-h--help

wallpaper 的帮助

-p--path string

壁纸文件路径

EC2Launch v2 任务配置

配置任务以及配置 agent-config.yml 文件的详细信息如下所示。

activateWindows

针对一组 KMS 服务器激活 Windows。

Frequency – 一次

AllowedStages[PreReady]

输入

activation:(映射)

type:(字符串)使用的激活类型,设置为 amazon

示例

task: activateWindows inputs: - activation type: amazon

enableJumboFrames

启用巨型帧,这会增加网络适配器的最大传输单位 (MTU)。有关更多信息,请参阅 巨型帧 (9001 MTU)

Frequency – 始终

AllowedStages[PostReady, UserData]

Inputs – 无

示例

task: enableJumboFrames

enableOpenSsh

启用 Windows OpenSSH 并将实例的公有密钥添加到授权密钥文件夹中。

Frequency – 一次

AllowedStages[PreReady, UserData]

Inputs – 无

示例

task: enableOpenSsh

executeProgram

使用可选参数和指定的频率执行程序。

Frequency – 请参阅 Inputs

AllowedStages[PostReady, UserData]

输入

frequency:(字符串)oncealways 之一

path:(字符串)可执行文件的路径

arguments:(字符串列表)要传递给可执行文件的字符串参数列表

runAs:(字符串)必须设置为 localSystem

示例

task: executeProgram inputs: - frequency: always path: C:\Users\Administrator\Desktop\setup.exe arguments: [‘—quiet']

executeScript

使用可选参数和指定的频率执行脚本。

Frequency – 请参阅 Inputs

AllowedStages[PostReady, UserData]

输入

frequency:(字符串)oncealways 之一

type:(字符串)batchpowershell 之一

arguments:(字符串列表)要传递给 shell 的字符串参数的列表

content:(字符串)脚本的内容

runAs:(字符串)adminlocalSystem 之一

示例

task: executeScript inputs: - frequency: always type: powershell content: | Get-Process | Out-File -FilePath .\Process.txt runAs: localSystem

extendRootPartition

扩展根卷以使用磁盘上的所有可用空间。

Frequency – 一次

AllowedStages[Boot]

Inputs – 无

示例

task: extendRootParitition

initializeVolume

初始化附加到实例的卷,以激活和分区这些卷。不初始化任何检测到不为空的卷。

Frequency – 始终

AllowedStages[PostReady, UserData]

输入

initialize:(字符串)要使用的初始化策略类型;alldevices 之一

devices:(映射列表)

device:创建实例时使用的设备标识符;示例包括 xvdbxvdf/dev/nvme0n1

name:(字符串)要分配的驱动器名称

letter:(字符串)要分配的驱动器盘符

partition:(字符串)要使用的分区类型;mbr 或 gpt 之一

示例

task: initializeVolume inputs: initialize: devices devices: - device: xvdb name: MyVolumeOne letter: D partition: mbr - device: /dev/nvme0n1 name: MyVolumeTwo letter: E partition: gpt

以下示例显示 InitializeVolume 任务的可能输入,可将所有卷设置为需要初始化,以及将所选卷设置为需要初始化。

示例 1

initializeVolume: initialize: all

示例 2

initializeVolume: initialize: devices devices: - device: xvda name: First Volume Name letter: D partition: mbr - device: /dev/nvme0n1 name: Second Volume Name letter: E partition: gpt - device: xvdc name: Volume Next Available Letter - device: xvde

optimizeEna

根据当前实例类型优化 ENA 设置;可能会重新引导实例。

Frequency – 始终

AllowedStages[PostReady, UserData]

Inputs – 无

示例

task: optimizeEna

setAdminAccount

为在本地计算机上创建的管理员账户设置默认属性。

Frequency – 一次

AllowedStages[PreReady]

输入

name:(字符串)管理员账户的名称

password:(映射)

type:(字符串)用于设置密码的策略,可为 staticrandomdoNothing

doNothing:(字符串)根据字段类型存储数据

data

示例

task: setAdminAccount inputs: name: Administrator password: type: random

setDnsSuffix

将 DNS 后缀添加到搜索后缀列表中。只有尚不存在的后缀才会添加到列表中。

Frequency – 始终

AllowedStages[PreReady]

输入

suffixes:(字符串列表)一个或多个有效 DNS 后缀的列表;有效替换变量是 $REGION$AZ

示例

task: setDnsSuffix inputs: suffixes: - $REGION.ec2-utilities.amazonaws.com

setHostName

将计算机的主机名设置为私有 IPv4 地址。

Frequency – 始终

AllowedStages[PostReady, UserData]

输入

reboot:(布尔值)表示在更改主机名时是否允许重新引导

示例

task: setHostName inputs: reboot: true

setWallpaper

使用显示实例属性的自定义壁纸设置实例。

Frequency – 始终

AllowedStages[PreReady, UserData]

输入

path:(字符串)用作壁纸图像的本地 .jpg 文件的路径

attributes:(字符串列表)要添加到壁纸的属性列表;hostNameinstanceIdprivateIpAddresspublicIpAddressinstanceSizeavailabilityZonearchitecturememory、或 network

示例

task: setWallpaper inputs: path: C:\ProgramData\Amazon\EC2Launch\wallpaper\Ec2Wallpaper.jpg attributes: - hostName - instanceId - privateIpAddress - publicIpAddress

startSsm

Frequency – 始终

AllowedStages[PostReady, UserData]

Inputs – 无

示例

task: startSsm

writeFile

将文件写入目标。

Frequency – 请参阅 Inputs

AllowedStages[PostReady, UserData]

输入

frequency:(字符串)oncealways 之一

destination:(字符串)写入内容的路径

content:(字符串)要写入目标的文本

示例

task: writeFile inputs: - frequency: once destination: C:\Users\Administrator\Desktop\booted.txt content: Windows Has Booted

示例:agent-config.yml

以下示例显示了 agent-config.yml 配置文件的设置。

version: 1.0 config: - stage: boot tasks: - task: extendRootPartition - stage: preReady tasks: - task: setDnsSuffix inputs: suffixes: - test1 - domain.test2 - $AZ.test3 - $REGION.domain.test4 - task: enableOpenSSH - task: setAdminAccount inputs: name: Admin password: type: static data: Demo - task: setWallpaper inputs: path: C:\ProgramData\Amazon\EC2Launch\wallpaper\Ec2Wallpaper.jpg attributes: - hostName - instanceId - privateIpAddress - publicIpAddress - instanceSize - availabilityZone - architecture - memory - network - stage: postReady tasks: - task: optimizeENA - task: startSSM - task: setHostName inputs: reboot: true - task: writeFile inputs: - frequency: always destination: C:\test.txt content: echo hello - task: executeScript inputs: - frequency: always type: powershell arguments: scriptarguments content: |- $file = "C:\Demo.txt" if(!(Test-Path $file -PathType Leaf)){ New-Item $file -ItemType file } Add-Content $file (Get-Date).ToString("MM-dd-yy-hh-mm") runAs: localSystem - frequency: once type: powershell content: |- $file = "C:\Demo2.txt" if(!(Test-Path $file -PathType Leaf)){ New-Item $file -ItemType file } Add-Content $file (Get-Date).ToString("MM-dd-yy-hh-mm") runAs: localSystem - task: executeProgram inputs: - frequency: always path: c:\temp\abc.exe arguments: - arg1 - arg2 - arg3 - frequency: once path: c:\temp\abc2.exe arguments: - arg1 - arg2 - arg3 - task: initializeVolume inputs: initialize: devices devices: - device: xvda name: First Volume Name letter: D partition: mbr - device: /dev/nvme0n1 name: Second Volume Name letter: E partition: gpt - device: xvdc name: Volume Next Available Letter - device: xvde

示例:user-data.yml

以下示例显示了 user-data.yml 配置文件的设置。

version: 1.0 tasks: - task: executeScript inputs: - frequency: always type: powershell content: |- New-Item -Path 'C:\PowerShellTest.txt' -ItemType File Old format that is compatible with older version of service: <powershell> $file = $env:SystemRoot + "\Temp" + (Get- Date).ToString("MM-dd-yy-hh-mm") New-Item $file -ItemType file </powershell> <persist>true</persist>

EC2Launch v2 和 Sysprep

EC2Launch v2 服务会运行 Sysprep,借助该 Microsoft 工具您可以创建可重复使用的自定义 Windows AMI。在 EC2Launch v2 调用 Sysprep 时,会使用 %ProgramData%\Amazon\EC2Launch 中的设置文件来确定要执行的操作。您可以使用 EC2Launch 设置对话框间接编辑这些文件,也可以直接使用 YAML 编辑器或文本编辑器直接编辑。然而,有些高级设置并未包含在 EC2Launch 设置 对话框中,因此您必须直接编辑这些条目。

如果您在更新某实例的设置之后从中创建了一个 AMI,则新设置会应用到所有从新 AMI 启动的实例。有关创建 AMI 的信息,请参阅创建自定义 Windows AMI